使用生产密钥签名时应用程序的不同行为

时间:2014-12-31 13:34:30

标签: android android-studio android-gradle

今天我有一个非常糟糕的惊喜。我的应用程序一旦使用生产密钥签名,其工作方式与AndroidStudio签名的默认密钥不同。

之前有没有其他人有此问题?

这太吓人了! :)

1 个答案:

答案 0 :(得分:1)

哇,我整理出来了,但我很幸运能找到这么快,因为一旦应用程序签名,你就不能再使用控制台来调试你的应用......无论如何,这种行为改变的原因在于我的Gradle构建脚本我为发布版本设置了“minified”属性为“true”:

buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
乍一看,一切都还可以,但请查看。只有当前可见片段是名为“MyFragment”的类的实例时,我才在代码中执行某些东西:

Fragment fragment = getCurrentFragment();
// check if the current fragment is the one which is expected
if(fragment.getClass().getName().contains("MyFragment")) {
    // if yes, update the value of the edit text
    MyFragment mf = (MyFragment) fragment;
    mf.setEditTextText(string);
}

我终于能够看到,当我正在编写代码时,行“fragment.getClass()。getName()”作为值“com.paul.MyFragment”返回,如果没有缩小和“com.paul。 al.a“在缩小时。

之前我没有使用缩小版,所以我绝对不希望原始代码和缩小代码之间发生变化!

到目前为止,我得出的结论是,如果你想缩小你的代码,你最好在你可能需要的所有构建版本中做到这一点,以避免令人不快的意外。

欢迎任何反馈! 谢谢, 保罗