我不使用Android Studio,但我从命令行执行所有操作。我正在为不同的架构构建不同的APK,因此我的build.gradle
看起来像这样:
...
splits {
// Configures multiple APKs based on ABI.
abi {
// Enables building multiple APKs per ABI.
enable true
// By default all ABIs are included, so use reset() and include to specify that we only
// want APKs for x86, armeabi-v7a, and mips.
// Resets the list of ABIs that Gradle should create APKs for to none.
reset()
// Specifies a list of ABIs that Gradle should create APKs for.
include "armeabi", "armeabi-v7a", "arm64-v8a"
// Specifies that we do not want to also generate a universal APK that includes all ABIs.
universalApk false
}
}
然后,我使用here描述的方法为各个APK分配不同的版本代码。
这一切都很好,除非我说
./gradlew tasks
只有一个名为installRelease
的任务。然后,运行此任务将自动选择适当的APK并进行安装。
但是,我想分别测试各个APK,即在我的64位Android设备上,我首先要测试armeabi
,然后是armeabi-v7a
,最后是{{1} }。但是,在运行arm64-v8a
时,gradle将始终自动安装installRelease
。那么我如何强制gradle安装特定的架构呢?
以前,我在arm64-v8a
中使用此代码而不是上面显示的build.gradle
代码:
splits
使用此代码时,gradle提供了名为productFlavors {
arm7 {
// in the future, ndk.abiFilter might also work
ndk {
abiFilter 'armeabi-v7a'
}
}
arm8 {
ndk {
abiFilters 'arm64-v8a'
}
}
arm {
ndk {
abiFilter 'armeabi'
}
}
}
,installArmRelease
和installArm7Release
的单个任务,这正是我正在寻找的但我不得不删除此代码,因为我没有找到一种方法,将其与代码一起使用,为代表here所描述的各个APK生成不同的版本代码。