使用 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 文件大小的主要内容,如果未能解决你的问题,请参考以下文章
构建 aab 时的文件大小 (mb) 比在 android 中使用 apk 构建时更大
您需要将 APK 文件大小减少到 100MB 或使用 APK 扩展文件 [重复]