使用 OpenCV 时巨大的 apk 文件大小

Posted

技术标签:

【中文标题】使用 OpenCV 时巨大的 apk 文件大小【英文标题】:Huge apk filesize when using OpenCV 【发布时间】:2011-11-27 02:30:11 【问题描述】:

我正在使用 OpenCV 构建原型应用程序。该应用程序目前不执行任何操作,但其 apk 文件大小为 6MB。大小是正常应用程序大小的 10 倍。有没有办法减小这个尺寸?

更新:我发现只要我在 JNI/C++ 中使用 android native camera 和 OpenCV 接口,文件大小可以取决于您在库中使用的方法。目前我的带有简单过滤器的测试应用程序的大小为 700K。

【问题讨论】:

如何在Android Studio的JNI/C++中接口OpenCV? @HarshitJain.. 你有没有找到任何解决方案来减小 apk 的大小?我尝试在 build.grade 中使用下面的代码,但是它给了我相同的大小......!! 【参考方案1】:

您可以解压缩 .apk 文件并在 lib 文件夹下找到两个版本的 opencv_java.so。它们每个约为 5.6Mb。

其实opencv_java.so就是OpenCV库。甚至将其大小减小到 4Mb 也是一项艰巨的任务。但是,如果您不需要支持旧的 ARMv5 和 ARMv6 设备,您可以轻松地从 .apk 中删除 opencv_java.so 的第二个副本。 (在没有 armeabi OpenCV 库的情况下构建应用程序的最简单方法是从 OpenCV 包中删除所有 libs/armeabi 文件夹并重新构建应用程序。)

【讨论】:

【参考方案2】:

如果您使用的是 Android Studio,请转到您的应用的 build.gradle 并在 android 中添加以下行

productFlavors 
        x86 
            ndk 
                abiFilter "x86"
            
        
        armv7a 
            ndk 
                abiFilter "armeabi-v7a"
            
        

这将允许您为单独的架构创建单独的 apk,从而大大减少 apk 的大小。

【讨论】:

【参考方案3】:

您可以使用ProGuard 从 OpenCV 中删除您未使用的代码(从“二进制”中)。

【讨论】:

我刚试过,但没有帮助。你能给我看一个 proguard.cfg 和 project.properties 的例子吗?我尝试的基本上是从proguard.cfg中删除所有-keep类并将proguard.config=proguard.cfg放在project.properties中。但是建筑产生的尺寸完全相同。 我们使用与this one 非常相似的东西。你可以试试。 好吧,我的 project.properties 有一行 #android.library.reference.1=../../OpenCV-2.3.1 我认为不管我用 proguard 做什么,这行都是文件大小的原因。 @dmon 您能否向我提供有关如何从打开的 cv 二进制文件中删除未使用的本机代码的完整说明。因为我在我的项目中包含开放 cv 二进制文件作为共享库。表示我使用的是 open cv android sdk 附带的 .so 文件。

以上是关于使用 OpenCV 时巨大的 apk 文件大小的主要内容,如果未能解决你的问题,请参考以下文章

opencv - 生成巨大的校准模式

安装文件比APK文件大4-5倍

构建 aab 时的文件大小 (mb) 比在 android 中使用 apk 构建时更大

您需要将 APK 文件大小减少到 100MB 或使用 APK 扩展文件 [重复]

如何在 android studio 中减小 Apk (.apk) 的大小

运行大小超过 2GB 的 apk 文件时崩溃