2011-11-27 115 views
2

我正在用OpenCV构建一个原型应用程序。该应用程序目前不会做任何事情,但其apk文件大小为6MB。大小是普通应用程序大小的10倍。有什么办法可以缩小这个尺寸吗?使用OpenCV时巨大的apk文件大小

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

+0

如何在Android Studio中以JNI/C++方式连接OpenCV? –

+0

@HarshitJain ..你有没有找到任何解决方案来减小apk大小?我尝试在build.grade中使用下面的代码,但是,它给了我相同的大小......! – Saty

回答

6

您可以解压缩.apk文件,并在lib文件夹下找到opencv_java.so的两个版本。它们每个都是大约5.6Mb。其实opencv_java.so是OpenCV库。将其尺寸减小到4Mb是一项艰巨的任务。但是,如果您不需要支持旧的ARMv5和ARMv6设备,则可以轻松地从.apk中删除opencv_java.so的第二个副本。 (最简单的方法来构建应用程序,而不armeabi OpenCV的库被去除的OpenCV包中的所有文件夹libs/armeabi和重建您的应用程序。)

2

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

+0

我只是试过这个,但它没有帮助。你可以给我看一个proguard.cfg和project.properties的例子吗?我试过的基本上是从proguard.cfg中删除了所有-keep类,并在project.properties中放置了'proguard.config = proguard.cfg'。但建筑产生了完全相同的尺寸。 –

+0

我们使用的东西与[this one]非常相似(http://code.google.com/p/roboguice/wiki/ProGuard)。你可以试试。 – dmon

+0

那么,我的project.properties有一行'#android.library.reference.1 = ../../OpenCV-2.3.1'我认为无论我用proguard做什么,该行都负责文件大小。 –

5

如果你正在使用你的应用Android的工作室后藤的build.gradle并添加内android {}

以下行
productFlavors { 
     x86 { 
      ndk { 
       abiFilter "x86" 
      } 
     } 
     armv7a { 
      ndk { 
       abiFilter "armeabi-v7a" 
      } 
     } 
} 

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