2013-01-06 74 views
2

我正在開發一個使用OpenCV和Tesseract庫的android應用程序。我只使用這些庫的某些功能。但隨着圖書館,應用程序的大小從4增加到50mb。修剪OpenCV庫

我明顯需要修剪庫。我將如何做到這一點?

編輯:爲了保持用戶友好性我不想使用OpenCVManager。我不想強制用戶安裝其他應用程序。

EDIT2:我需要爲tesseract庫做同樣的事情。我猜這是以同樣的方式工作?

回答

4

我絕對不確定我要建議什麼,但我最近在GCC文檔中找到了-gc-sections選項。在鏈接時使用,它應該從最終的可執行文件/庫中去除所有未使用的代碼段。這可以避免不得不手動修剪OpenCV,鑑於這個庫的複雜性,這必須是一個漫長而不愉快的任務。

要使用它,您顯然必須使用-ffunction-sections -fdata-sections -Os編譯每個依賴項,然後將整個代碼與-Wl,--gc-sections鏈接。它可能值得一試!

我在this page上找到了一些細節。

不要猶豫,糾正我,如果我錯了!

+0

感謝您的回答。我的確在尋找這個方向的答案。我會試試看看它是否能解決我的問題。 –

+0

你可以向我解釋如何在eclipse中使用它嗎? –

+0

我不知道如何直接在Eclipse中執行此操作。我想你必須用這些標記編譯你自己的OpenCV版本,我從來沒有直接在Eclipse中做過這些標記。 – mbrenon

-1

如果你不想使用OpenCVManager可以follow these instructions.

的問題是,我不知道它是否仍然適用於上述版本2.4.3,它不會降低您的apk的大小。

如果你想縮小這個尺寸,你必須爲自己編譯opencv4android並選擇你需要的模塊。