Android 安卓上ABI拆分资产
我已经了解了如何为每个ABI构建拆分APK 然而,我的应用程序嵌入了大量本机可执行文件作为资产。是否可以根据ABI对其进行过滤Android 安卓上ABI拆分资产,android,native,assets,Android,Native,Assets,我已经了解了如何为每个ABI构建拆分APK 然而,我的应用程序嵌入了大量本机可执行文件作为资产。是否可以根据ABI对其进行过滤 build.gradle的相关部分: android { ... splits { abi { enable true } } externalNativeBuild { cmake { path "CMakeLists.txt"
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
检查这个
一个解决方案是使用香料。(没有测试)
希望这能对您有所帮助。过去有一个使用产品口味的配方,尽管我最近没有研究过这一点。
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"
}
}