RenderScript包含所有平台的本机二进制文件
问题描述:
我们的Android项目包含一些本地库,我们仅支持arbeabi-v7
。所以生成的apk只包含这个体系结构的本地库。RenderScript包含所有平台的本机二进制文件
最近我们增加了RenderScript
引起生成APK包括librsjni.so
和libRSSuport.so
本地的即x86
所有支持的平台,arbeabi-v7
等
的build.gradle
文件的更改添加RenderScript
是:
defaultConfig {
// Other configs
renderscriptTargetApi 18
renderscriptSupportModeEnabled true
}
生成的apk库文件夹如下所示:
libs
- armeabi-v7
- librsjni.so
- libRSSuport.so
- Other native libs
- x86
- librsjni.so
- libRSSuport.so
- Other archs
- librsjni.so
- libRSSuport.so
由于运行时间可能认为非支持armeabi-v7
体系结构并尝试运行它并导致应用程序崩溃,这会导致主要abi不是armeabi-v7
的手机中出现问题。
截至目前,我们已经增加了以下内容build.gradle
:
ndk {
abiFilters "armeabi-v7a"
}
和gradle.properties
:
android.useDeprecatedNdk=true
虽然此方法可以解决问题,但它似乎是一个黑客或非标准的解决方案。
有没有一种标准或推荐的方法来解决这个问题?
答
如果你只使用预编译库,你最好的选择是采用splits功能:
android {
…
splits {
abi {
enable true
reset()
include "armeabi-v7a"
universalApk false
}
}
}
恕我直言,** ** abiFilters是你的问题一个完美的标准溶液。 –
@AlexCohn感谢您的回复。我所关心的是使用'android.useDeprecatedNdk'。有没有一种方法可以排除“non depricated ndk”的库? – Abdullah