我正在开发一个使用 OpenCV 和 Tesseract 库的 android 应用程序。我只使用这些库的某些功能。但是随着包含的库,应用程序的大小从 4 增长到 50mb。
我显然需要精简库。我该怎么做?
编辑:为了保持用户友好性,我不想使用 OpenCVManager。我不想强迫用户安装另一个应用程序。
EDIT2:我需要为 tesseract 库做同样的事情。我想这以同样的方式工作?
我完全不确定我要建议什么,但我最近-gc-sections
在 GCC 文档中找到了这些选项。在链接时使用,它应该从最终的可执行文件/库中删除所有未使用的代码部分。这可以避免必须手动修剪 OpenCV,鉴于该库的复杂性,这必须是一项漫长且相当不愉快的任务。
要使用它,您显然必须使用 编译每个依赖项-ffunction-sections -fdata-sections -Os
,然后将整个代码与-Wl,--gc-sections
. 它可能值得一试!
我在这个页面上找到了一些细节。
如果我错了,请不要犹豫纠正我!
如果您不想使用 OpenCVManager,您可以按照这些说明进行操作。
问题是,我不知道它是否仍然适用于 2.4.3 以上的版本,并且不会减少您的 apk 的大小。
如果你想减小这个大小,你必须自己编译 opencv4android 并选择你需要的模块。