签名APK包含调试版本的不同代码

时间:2016-02-15 22:15:56

标签: android android-studio apk

我最近更新了Play商店中的应用。当我开始收到许多错误报告时,我调查并发现发布的APK与模块中的.java文件不对应。特别是,签名APK中的类MainActivity版本是我几周前更新的错误版本。

当我运行我的应用程序时,使用Android Studio,通过调试模式下的USB连接,它正确执行。当我使用Android Studio制作相同代码的签名APK并将其侧载到我的测试设备上时,它展示了旧版本中的错误行为。

幸运的是我在另一台计算机上安装了Android Studio,一台笔记本电脑。我将src /目录复制到笔记本电脑并在笔记本电脑上创建了签名的APK。该APK工作正常,我能够发布笔记本电脑上生成的更新APK。

为什么Android Studio使用我的某个类文件的过期副本?

3 个答案:

答案 0 :(得分:1)

  

为什么Android Studio使用我的某个类文件的过期副本?

你是对的。这有时也适用于我。很久以前我遇到了同样的问题。发生这种情况是因为AS使用Gradle进行构建。

Gradle可以优化一些步骤来快速创建签名的APK,他使用的文件副本不会因为加速过程而改变。因此,如果您需要确保构建正确,则需要清理项目并重新构建。

答案 1 :(得分:1)

始终对已签名的APK使用“干净”构建,以避免使用缓存的.class文件。此外,如果这是更新,您应该确保在build.gradle文件中增加应用的版本号。

答案 2 :(得分:0)

确实是奇怪的行为。虽然我同意(很少阅读)Android Studio文件搞砸了,但根据我的经验,它通常会出现以下一些问题:

  1. Proguard - >您提到DEBUG构建工作正常且RELEASE没有,即使您从Android Studio创建新构建也没有。我要仔细检查Proguard配置是否已更改且所有设置是否正确。

  2. 人为错误 - >这些事情刚刚发生,并且可以将错误的版本上传到商店。这并没有解释为什么你的新RELEASE版本失败了..

  3. 自定义gradle插件 - >它发生在我两次,一些插件使用了错误的钩子,因此一般搞乱构建过程(虽然我期望构建失败但是......)