【问题标题】:Android app doesn't work after published it by generate signed app通过生成签名的应用程序发布后,Android 应用程序无法运行
【发布时间】:2016-09-22 00:54:23
【问题描述】:

我创建了一个应用程序,它可以在模拟器上运行。它适用于设备上的调试 apk,但是当我使用生成签名的应用程序构建它时它不起作用? 出了什么问题以及如何在设备上以签名状态对其进行调试?

【问题讨论】:

  • 您使用 ProGuard 吗?检查 -dontwarns 。
  • 是的,我使用 ProGuard。什么是 -dontwarns?
  • 谢谢,我添加了使用过的依赖项来构建 -dontwarms,但问题没有解决。如何找到导致问题的依赖项?
  • 你能告诉我哪种类型的功能不起作用

标签: android android-emulator signed android-proguard


【解决方案1】:

在我的项目中没有运行签名的应用程序。我将 minifyEnabled 值从 true 更改为 false 然后问题解决了。这个糟糕的解决方案。我正在寻找更好的方法。

build.gradle:

buildTypes {
        release {
            shrinkResources true
            minifyEnabled false //true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            debuggable true
        }
    }

【讨论】:

  • 禁用 minifyEnabled 后它可以正常工作,但我的项目中需要它
【解决方案2】:

我发现 progard 的改装接口有问题

界面示例:

import java.util.List;

import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.Path;


public interface AClient {
    // For register device for specific package
    @GET("/api/initiate/{packageId}")
    Call<InitiateModel> GetInitiateInfo(
            @Path("packageId") int packageId
    );
  }

我在 progard 文件中添加了 -dontwarn retrofit2.**。 怎么了?

【讨论】:

    【解决方案3】:

    我发现了问题并解决了。 我必须保持使用改造的模型形成混淆。使用下面的代码后,我的应用在启用 minifyEnabled 的情况下正常工作:

    -保留 com.xxx.xxx.models.** { *; }

    改造需要知道按值填充的类属性。

    感谢每个尝试帮助我的人。

    【讨论】:

      猜你喜欢
      • 2016-01-06
      • 1970-01-01
      • 1970-01-01
      • 2019-11-10
      • 1970-01-01
      • 1970-01-01
      • 2019-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多