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

Android 使用生产密钥签名时应用程序的不同行为,android,android-studio,android-gradle-plugin,Android,Android Studio,Android Gradle Plugin,我今天有一个非常糟糕的惊喜。我的应用程序使用生产密钥签名后,其工作方式与AndroidStudio签名的默认密钥不同 以前有其他人有过这个问题吗 这太可怕了!:) 哇,我整理好了,但我很幸运这么快就找到了,因为一旦应用程序被签署,你就不能再使用控制台调试你的应用程序了。。。无论如何,这种行为改变背后的原因是,在我的Gradle构建脚本中,我已将发布构建的“minified”属性设置为“true”: buildTypes { release { minify

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

以前有其他人有过这个问题吗


这太可怕了!:)

哇,我整理好了,但我很幸运这么快就找到了,因为一旦应用程序被签署,你就不能再使用控制台调试你的应用程序了。。。无论如何,这种行为改变背后的原因是,在我的Gradle构建脚本中,我已将发布构建的“minified”属性设置为“true”:

buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
乍一看,这里一切正常,但看看这个。仅当当前可见片段是名为“MyFragment”的类的实例时,我才在代码中执行某些内容:

我终于能够看到,当我切碎代码时,行“fragment.getClass().getName()”如果没有缩小,则返回值“com.paul.MyFragment”,如果缩小,则返回值“com.paul.al.a”

我以前没有使用过缩编,所以我绝对不希望在原始代码和缩编代码之间发生behvior更改

到目前为止,我的结论是,如果您想缩小代码,最好在所有构建版本中都这样做,以避免不愉快的意外

欢迎任何反馈! 谢谢
保罗

怎么会这样?你能提供更多的信息吗。如果它崩溃了,请提供一个logcat输出。让我猜猜,它运行并中断,以及延迟和暂停。。是这样吗?部署构建时是否使用proguard?请投票关闭。如果你需要帮助,请添加更多关于不同之处的详细信息。嗨,Booger,我刚刚在下面发布了答案。你会考虑你的否决吗?这个问题确实很简短,但我相信答案可能对其他人很有价值。谢谢,保罗,你一定要这样用类名吗。即使不考虑缩小的问题,这也不是好的做法。为什么不执行
fragment.getClass().equals(MyFragment.class)。一般来说,如果重构代码会破坏它,这是一个非常糟糕的信号Hi Richard!谢谢你的评论。你完全正确,这是一个更好的方法,我会这样做。再次感谢!保罗:)
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);
}