我目前正在构建SDK,并向SDK的用户提供.aar存档。RenderScript:在aar中不提供.so
我在我的SDK,基本上模糊图像的可选功能。 但是,此功能需要使用renderScript,因为共享库的存在使得.aar归档文件更大。
./jni/armeabi-v7a:
total 3752
rw-rr- 1 cylix wheel 1,1M 29 nov 16:16 libblasV8.so
rw-rr- 1 cylix wheel 746K 29 nov 16:16 libRSSupport.so
rw-rr- 1 cylix wheel 46K 29 nov 16:16 librsjni.so
./jni/mips:
total 5224
rw-rr- 1 cylix wheel 1,5M 29 nov 16:16 libblasV8.so
rw-rr- 1 cylix wheel 1,0M 29 nov 16:16 libRSSupport.so
rw-rr- 1 cylix wheel 70K 29 nov 16:16 librsjni.so
./jni/x86:
total 5344
rw-rr- 1 cylix wheel 1,6M 29 nov 16:16 libblasV8.so
rw-rr- 1 cylix wheel 958K 29 nov 16:16 libRSSupport.so
rw-rr- 1 cylix wheel 54K 29 nov 16:16 librsjni.so
./jni/arm64-v8a:
total 1808
rw-rr- 1 cylix wheel 843K 29 nov 16:16 libRSSupport.so
rw-rr- 1 cylix wheel 60K 29 nov 16:16 librsjni.so
但我注意到,如果我删除的库和没有在.aar为他们提供,该库的客户仍然可以在其端启用的renderScript并没有任何问题访问功能。
然后,我只是在我的代码检查的renderScript可用:
try {
Class.forName("android.support.v8.renderscript.RenderScript");
} catch (ClassNotFoundException e) {
//! renderScript not available
}
但这里是我的问题。 我仍然需要把我的文件的gradle:
renderscriptTargetApi 23
renderscriptSupportModeEnabled true
否则,项目不能编译。 但是这会导致自动包含上面列出的.so文件...
有什么办法可以解决这个问题:能够编译renderScript功能,但是可以过滤.so文件,以便它们不包含在.aar存档?
它的工作原理是因为您在不需要支持库回退的设备上进行测试。但这不是一个好的答案,因为当您在较旧的设备上运行时,代码在寻找这些共享对象时会崩溃。 –