【问题标题】:Why, with apk split per ABI, a different apk from the one just built is installed?为什么按 ABI 拆分 apk 时,会安装与刚刚构建的 apk 不同的 apk?
【发布时间】:2017-07-07 11:33:49
【问题描述】:

我正在使用 Android Studio 2.2.2、Gradle 2.14.1 和以下拆分:

splits {
    abi {
        enable true
        reset()
        include "armeabi-v7a", "mips", "x86"
        universalApk true
    }
}

在华为 EVA-L19 和 ALE-L21 上尝试“运行‘应用程序’”时,它尝试安装与刚刚构建的不同的 apk:构建“通用”并尝试安装“armeabi-v7a”,导致:

07/07 13:04:07:启动应用程序 APK 文件 (...)\app-dev-armeabi-v7a-debug.apk 在磁盘上不存在。 安装 APK 时出错

如果文件夹中有旧的 V7 版本,情况会更糟,而且会浪费数小时更改代码而没有效果,因为它一直在安装相同的版本。

我们不打算为 64 位架构单独构建; “arm64-v8a”的预期行为是构建和安装“armeabi-v7a” - 当universalApk设置为false时会发生这种情况。

Instant Run 已禁用。

原因在哪里,如何解决?

【问题讨论】:

  • 你能检查一下在运行->运行/调试配置->安装选项->部署中选择了什么
  • @BrijeshMasrani 运行 |编辑配置 | Android App/app,常规选项卡,部署目标选项显示“打开选择部署目标对话框”。取消选择“用于未来启动的相同设备”。安装选项是“默认 APK”。这里的大部分内容都保留为默认值。
  • 为什么没有生成armeabi-v7a版本的apk?由于启用了 ABI 拆分,工作室正在尝试找到连接手机的相关 apk。
  • 还有一个问题,如果你要拆分 apk 为什么你还想要一个通用 apk
  • @BrijeshMasrani armeabi-v7a apk 是在我在 V7 架构手机上运行时生成的。 “运行”仅构建其中一个拆分,即当前设备的拆分。至于 Universal - 不是我的电话,有人想要 - 或过去想要 - 使用一些只能接受单个 apk 的测试相关工具。但我们不要过多关注这一点 - 要么是我的配置有问题,要么是需要报告的 Studio 错误。

标签: android android-studio


【解决方案1】:

不是解决方案,而是一些解决方法:

从属性中设置universalApk 选项:

splits {
    abi {
        enable true
        reset()
        include "armeabi-v7a", "mips", "x86"
        universalApk !project.hasProperty('notUniversal')
    }
}

然后在你的Android Studio => Settings => Build, Execution, Deployment => Compiler => Command-line Options: 添加属性标志:-PnotUniversal

之后:

当您尝试 Run/Debug app 构建时,将像 universalApk falsearmeabi-v7a 一样创建 .apk。

但是当您从命令行调用 ./gradlew 或即在 TeamCity => 时,它将像 universalApk true 一样调用并构建所有变体(通用)

【讨论】:

    猜你喜欢
    • 2020-09-14
    • 2020-11-23
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-27
    • 1970-01-01
    • 2020-04-09
    相关资源
    最近更新 更多