我已经this guide看到了如何为每个ABI构建拆分的APK。
但是我的应用程序嵌入了许多本机可执行文件作为资产。是否可以根据ABI对其进行过滤?
build.gradle
的相关部分:
android {
...
splits {
abi {
enable true
}
}
externalNativeBuild {
cmake {
path "CMakeLists.txt"
// builds assets and places them in src/main/assets
}
}
sourceSets {
main {
assets.srcDirs = ['src/main/assets']
}
}
}
使用CMake构建本机可执行文件后,对应用程序树进行采样:
src
+ main
+ assets
+ x86
| + native-x86.bin
+ x86_64
| + native-x86_64.bin
+ armeabi-v7a
| + native-arm.bin
+ arm64-v8a
+ native-aarch64.bin
每个ABI目录都包含本机二进制文件
我希望每个拆分的APK仅包含特定于ABI的资产目录,并过滤其他目录。例如,对于arm64 APK:
assets
+ arm64-v8a
+ native-aarch64.bin
答案 0 :(得分:0)
一种解决方案是使用Flavors。(未对此进行测试)
productFlavors {
x86 {
jniLibs.srcDir = /path/to/native-x86.bin
//or maybe
assets.srcDirs = /path/to/native-x86.bin
ndk {
abiFilter "x86"
}
}
armv7 {
jniLibs.srcDir = /path/to/native-arm.bin
ndk {
abiFilter "armeabi-v7a"
}
}
希望对您有帮助。