在 Android Studio 中添加 openCV 3.0 作为库后,我观察到我的 apk 文件已经增长到 50MB 以上,这显然不理想。
解压apk文件发现lib
目录下有多个目标架构,分别是arm64-v8a, armeabi, armeabi-v7a, mips, mips64, x86, x86_64
。它们每个占用 10+MB。
从我的源 jniLibs
目录中删除一些目标架构以减小 apk 大小是否安全?如果是这样,我应该删除哪些目标?我的目标是相对较新的设备,因此只要它能在较新的设备上运行,我就可以接受。
最佳答案
体系结构的流行度一般排名是 ARM、x86,然后是 MIPS。问题是 64 位是面向 future 的,因此取决于您放弃它们的意愿如何意味着您在 64 位架构上的 32 位代码可能会受到一些性能影响。
或者使用 Multiple APK Google Play 支持向您的用户提供正确架构的 APK,以减少大小/下载时间,但代价是相关的复杂性。
已更新
Android Compatibility Definition Document 要求在 64 位架构上支持 32 位代码3.3.1节
MUST support the equivalent 32-bit ABI if any 64-bit ABI is supported
Google 不希望新的 64 位设备在 32 位二进制文件上中断,因为生态系统中有相当多的 32 位代码(即游戏)。
关于android - openCV 3 为 Android 移除了不必要的 cpu 架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33858429/