使用 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 文件大小的主要内容,如果未能解决你的问题,请参考以下文章