【问题标题】:Android Studio 2.3: Autogenerated Debug-APK no longer runs on physical deviceAndroid Studio 2.3:自动生成的 Debug-APK 不再在物理设备上运行
【发布时间】:2017-09-29 21:38:39
【问题描述】:

我曾经在 API 21 AVD 中测试我的 Android 应用(最低 API 21,目标 25)。在 Android Studio 中点击“运行应用”按钮后,在 {project}/app/build/outputs/apk/ 中构建了一个调试 APK。然后,我将该 APK 复制到我的物理 API 25 设备以进行进一步测试。

自从在 Gentoo Linux 上将 Android Studio 从 2.2.3.0.145.3537739 升级到 2.3.0.8.162.3764568 后,这些自动生成的 APK 不再在物理设备上运行。应用程序在启动时立即崩溃,并且日志显示由“java.lang.ClassNotFoundException:找不到类 {我的主要活动类}”引起的“java.lang.RuntimeException:无法实例化活动”。

当我通过单击“构建 > 构建 APK”手动构建调试 APK 时,生成的 APK 与自动生成的文件大小不同,而且它在物理设备上运行而没有任何抱怨。

所以,实际上有两个问题:
1. 为什么手动生成的debug APK和自动生成的不一样?
2. 自 Android Studio 2.3 以来,是什么导致自动生成的在我的物理设备上失败?它适用于之前的所有 Studio 版本。

希望获得一些见解,即使存在 USB 调试并且将调试 APK 复制到设备的过程实际上毫无意义。 :-)

【问题讨论】:

  • 你是否也升级了 android gradle 插件?或者可能是 sdk 工具?
  • 有可能,我真的不知道最近的哪个更新实际上是造成新行为的原因。当前的 Gradle 插件是 2.3.0(之前是 2.2.3),而 Gradle 是 3.3(之前似乎是 2.14.1)。 Android SDK Tools 25.2.5、Android SDK Platform-tools 25.0.5、Android SDK Build-tools 25.0.2(有 25.0.3 可用,但不建议在 SDK 管理器中更新,为什么?)。
  • 您有机会在 Android Studio 中使用即时运行吗?尝试从设置中禁用它,看看问题是否仍然存在
  • 头奖。禁用即时运行后,APK 现在与手动生成的大小相同,并且可以在 API 21 AVD 和 API 25 物理设备中运行。 developer.android.com/studio/run/index.html 的文档甚至在“即时运行的限制”>“部署到多个设备”中提到即时运行的 APK 使用 API 特定代码,因此这些 API 21 APK 之前在API 25 设备。无论如何,我的工作流程毫无意义,但现在“错误”实际上是有道理的。非常感谢你,ahasbini!
  • 随时可以。如果您对此满意,我会发布答案

标签: android apk android-studio-2.3


【解决方案1】:

作为对问题的 cmets 的回顾,如果启用了 Instant Run,则生成的调试 apk 将包含特定于设备 API 的代码,因此使其无法在其他并非为其构建的 API 上使用。关闭 Instant Run 可以解决这个问题。

【讨论】:

    猜你喜欢
    • 2021-07-12
    • 1970-01-01
    • 2023-02-17
    • 1970-01-01
    • 1970-01-01
    • 2017-08-03
    • 2015-09-06
    • 2018-02-22
    • 1970-01-01
    相关资源
    最近更新 更多