【问题标题】:how to reduce apk size without splitting when linked with opencv native libs?与opencv本机库链接时如何减少apk大小而不拆分?
【发布时间】:2018-05-05 18:16:25
【问题描述】:

我开发了一个使用 opencv 库来处理图像的 android 应用程序。目前我的 APK 大小是 80Mb。为了减小它的大小,我使用了拆分 apk,它的大小变成了大约 10 到 30Mb,具体取决于 cpu 架构。我将在本地 android 市场上发布我的应用程序,而不是在 google play store 上。但后来我意识到我想在上面发布我的应用程序的 android 商店不支持 apk 拆分,现在我必须在不拆分的情况下减小 apk 大小。还有什么其他方法可以做到这一点?我只是在使用 Core、Imgproc 和 Imgcodecs 模块。

【问题讨论】:

    标签: android opencv size apk


    【解决方案1】:
    • 在多 CPU 架构中拆分 apk 并没有什么不好。
    • 您不能将已打包的 opencv .so 文件变小。

    如果一个用户正在下载 apk,您应该确保所有数据对花费时间和数据在我们 apk 上的用户有用。

    解决方案:我很高兴 Google 注意到这一点并拥有Multiple APK support。作为标题,您可以上传多个针对多个 cpu 的 apk。

    所以不要担心大小,继续支持多 APK。

    更新:

    您只能使用 armeabiarmeabi-v7ax86 来使 apk 更小,因为世界上其他 cpu 架构的设备可以忽略不计。

    Unity statistics per architecture and CPU features

    ARMv7:98.1%

    英特尔 x86:1.7%

    【讨论】:

    • 我编辑了我的问题,请看。我不会在 google play 上发布它。
    • 您可以聘请 c、c++ 开发人员根据您的需要压缩 openCV 库的代码。问题是库具有对某些模块有用的完整代码。我们必须同意这一点。因为我们不能再通过那个库了。可能有很多代码对你没用,但你必须随身携带。
    • 在搜索了不同的 ABI 之后,我决定支持 'x86'、'armeabi-v7a' 和 'arm64-v8a' 并删除了其他架构的 opencv 库,因为没有任何 android 设备具有'x86_64' 或 'mips' 架构和 'armeabi' 也被弃用了。我的 APK 大小现在是 35MB。它不是那么小,但可以接受,而且比雇用一个新的 c++ 开发人员要好得多。
    • 酷,这就是我所做的,但我没有告诉,因为一些开发人员需要为所有设备制作兼容的应用程序。我也更新了答案,您可以考虑 armeabi-v7a 而不是 arm64-v8a,因为这在我的 2-3 个应用程序中效果很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-23
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 2017-03-02
    相关资源
    最近更新 更多