我最近更新了Play商店中的应用。当我开始收到许多错误报告时,我调查并发现发布的APK与模块中的.java文件不对应。特别是,签名APK中的类MainActivity版本是我几周前更新的错误版本。
当我运行我的应用程序时,使用Android Studio,通过调试模式下的USB连接,它正确执行。当我使用Android Studio制作相同代码的签名APK并将其侧载到我的测试设备上时,它展示了旧版本中的错误行为。
幸运的是我在另一台计算机上安装了Android Studio,一台笔记本电脑。我将src /目录复制到笔记本电脑并在笔记本电脑上创建了签名的APK。该APK工作正常,我能够发布笔记本电脑上生成的更新APK。
为什么Android Studio使用我的某个类文件的过期副本?
答案 0 :(得分:1)
为什么Android Studio使用我的某个类文件的过期副本?
你是对的。这有时也适用于我。很久以前我遇到了同样的问题。发生这种情况是因为AS使用Gradle进行构建。
Gradle可以优化一些步骤来快速创建签名的APK,他使用的文件副本不会因为加速过程而改变。因此,如果您需要确保构建正确,则需要清理项目并重新构建。
答案 1 :(得分:1)
始终对已签名的APK使用“干净”构建,以避免使用缓存的.class
文件。此外,如果这是更新,您应该确保在build.gradle
文件中增加应用的版本号。
答案 2 :(得分:0)
确实是奇怪的行为。虽然我同意(很少阅读)Android Studio文件搞砸了,但根据我的经验,它通常会出现以下一些问题:
Proguard
- >您提到DEBUG构建工作正常且RELEASE没有,即使您从Android Studio创建新构建也没有。我要仔细检查Proguard配置是否已更改且所有设置是否正确。
人为错误 - >这些事情刚刚发生,并且可以将错误的版本上传到商店。这并没有解释为什么你的新RELEASE版本失败了..
自定义gradle
插件 - >它发生在我两次,一些插件使用了错误的钩子,因此一般搞乱构建过程(虽然我期望构建失败但是......)