为什么,对于每个ABI的apk拆分,安装了与刚建立的apk不同的apk?

时间:2017-07-07 11:33:50

标签: android android-studio

我使用的是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上“运行'app'”时,它会尝试安装与刚刚构建的不同的apk:构建“universal”并尝试安装“armeabi-v7a”,从而导致:

07/07 13:04:07: Launching app
The APK file (...)\app-dev-armeabi-v7a-debug.apk does not exist on disk.
Error while Installing APK

当文件夹中存在旧的V7版本时,更糟糕的是,浪费时间使代码中的更改无效,因为它会继续安装相同的版本。

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

Instant Run已停用。

原因在哪里以及如何解决?

1 个答案:

答案 0 :(得分: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。

但是当您从命令行或在TeamCity =>处拨打./gradlew时它将被称为universalApk true并构建所有变体(具有通用性)