【问题标题】:Signed APK contains different code from debug version签名的 APK 包含与调试版本不同的代码
【发布时间】:2016-02-15 22:15:56
【问题描述】:

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

当我使用 Android Studio 通过 USB 连接在调试模式下运行我的应用程序时,它运行正常。当我使用 Android Studio 制作具有相同代码的签名 APK 并将其侧加载到我的测试设备上时,它表现出旧版本的错误行为。

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

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

【问题讨论】:

    标签: android android-studio apk


    【解决方案1】:

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

    【讨论】:

    • 您能告诉我更多关于如何进行“干净”构建的信息吗?
    • 构建 -> 清理项目
    【解决方案2】:

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

    你是对的。这有时也会发生在我身上。很久以前,我遇到了同样的问题。这是因为 AS 使用 Gradle 进行构建。

    Gradle 可能会优化一些步骤以快速创建签名 APK,他使用未更改的文件副本来加快进程。所以如果你需要确保你有一个正确的构建,你需要清理你的项目并重新构建。

    【讨论】:

      【解决方案3】:

      确实很奇怪。虽然我同意有时(很少阅读)Android Studio 文件会变得混乱,但根据我的经验,这通常是以下一些问题:

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

      2. 人为错误 -> 那些事情只是发生了,有可能将错误的版本上传到商店。这并不能解释为什么您的新 RELEASE 构建失败了..

      3. 自定义 gradle 插件 -> 我遇到过两次,一些插件使用了错误的钩子,因此通常会弄乱构建过程(尽管我预计构建会失败,但是...)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-02-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-21
        • 2019-08-27
        • 1970-01-01
        • 2013-08-03
        相关资源
        最近更新 更多