官方提供的办法:
大部分情况下,在您 release 版本的 apk 文件里,Realm 只占用 800KB 空间。我们发布的版本支持的处理器架构包括 ARM7、ARMv7、ARM64、x86、MIPS。所以发布的库文件本身看起来会稍微大一些。但安卓系统在安装 apk 时只会安装针对该设备处理器架构的原生库,安装后占用空间会比 apk 文件本身还要小一些。
你可以通过将 APK 针对不同平台分离打包以减少其大小。 添加如下代码到 build.gradle
:
splits {
abi {
enable true
reset()
include 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'mips', 'x86', 'x86_64'
}
}
根据你设置的每个 ABI,会生成一个独立 APK 文件。
解决64位库找不到的办法。
如果你的 app 还包含其它原生库,并且它们没有提供对 arm64 平台的支持,arm64 的安卓设备在加载 Realm 的 librealm-jni.so
时可能会失败。这是因为安卓无法同时加载32位和64位的原生库。最佳解决方案是为所有原生库提供 arm64 版本。但在你使用第三方闭源库的时候这不太好实现。参考 VLC and Realm Library conflicts。
一个解决方案是在编译期通过配置 gradle 将 Realm 的 arm64 库排除在外:
android {
//...
packagingOptions {
exclude "lib/arm64-v8a/librealm-jni.so"
}
//...
}