我正在开发一个使用OpenCV和Tesseract库的android应用程序。我只使用这些库的某些函数。但随着库的加入,应用程序的大小从4mb增加到50mb。
显然我需要精简库。我该怎么做呢?
编辑:为了保持用户友好,我不想使用OpenCVManager。我不想强迫用户安装另一个应用。
EDIT2:我需要为tesseract库做同样的事情。我想这也是同样的道理吧?
我绝对不确定我要建议什么,但我最近在GCC文档中找到了-gc-sections
选项。在链接时使用,它应该从最终的可执行文件/库中剥离所有未使用的代码段。这可以避免手动修改OpenCV,考虑到这个库的复杂性,手动修改OpenCV肯定是一个漫长而令人不快的任务。
要使用它,显然必须使用-ffunction-sections -fdata-sections -Os
编译每个依赖项,然后将整个代码与-Wl,--gc-sections
链接。也许值得一试!
我在这一页找到了一些细节。
如果我错了,不要犹豫,纠正我!
如果你不想使用OpenCVManager,你可以遵循这些说明。
问题是,我不知道它是否仍然适用于2.4.3以上的版本,它不会减少你的apk的大小。
如果你想减少这个大小,你必须为自己编译openv4android并选择你需要的模块。