2011-04-22 76 views
2

我有一個共享庫,我使用Android NDK構建,最終結果爲80MB(是的,很大!)。我絕對不能縮小規模。問題是,當安裝Android應用程序時,共享庫無法放入手機的/ system中,因爲只有300K是免費的。所以當應用程序試圖運行時,它會因SIGBUS錯誤而崩潰,因爲並不是所有的庫都在那裏。在系統中釋放更多空間幾乎是不可能的,而不會破壞很多事情。由於共享庫無法裝入/系統導致Android應用程序崩潰

所以,我想知道是否有另一種方式來鏈接到這個圖書館,把它放在另一個分區,如/數據有150MB免費。有沒有人有任何想法呢?

+0

+1哇..我印象深刻。如果這就是所有代碼(相對於其他類型的資源),我印象深刻......不容易做到,坦白地說。 – BonanzaDriver 2011-04-22 05:14:55

+0

它是wireshark :)他們的解析數據包的「解剖器」代碼是巨大的 – gnychis 2011-04-22 05:27:03

+0

我聽說過這個工具,但不知道它會/可能是大的。坦率地說,我對基於TCP/IP/Socket/Frame的編碼填充80 megs有點傻眼。我自己做了很多交流的東西...... 80只是分配。 – BonanzaDriver 2011-04-22 06:03:41

回答

1

也可以安裝.so文件到/data/data/YOURPACKAGE/lib/

你必須研究如何做到這一點,雖然,因爲我沒有在這方面的經驗。

編輯:看看這個帖子:http://www.aton.com/android-native-libraries-for-java-applications/

+0

有趣,我現在看到我的圖書館!似乎來自libs/armeabi/*中的Android源代碼的所有內容都安裝在此處。所以,我的整個圖書館都在那裏,它很合適。有趣的是,當我嘗試執行System.LoadLibrary(blah)時,它會嘗試將其複製到/ system/lib,這就是失敗的原因 – gnychis 2011-04-22 06:48:11

+0

因此,顯然這是自動完成的,並且它們將直接從此處加載因爲我不會將它們安裝在/ system/lib中(只適用於固定電話) – gnychis 2011-04-22 16:01:29

0

所以,我想知道是否有另一種方式把它放在另一個分區如/數據,提供免費150MB鏈接到這個庫。

歡迎您自行編寫固件。

否則,你不能改變這種事情發生了什麼。

+0

我不完全相信這一點,例如Linux有一個ld.so.conf文件來添加額外的庫路徑。雖然,android沒有這個或ldconfig。可能還有系統變量來添加庫路徑。 – gnychis 2011-04-22 13:18:36

+0

@gnychis:在一部根深蒂固的手機上,可能會有解決方案 - 您無法在Linux上以超級用戶權限更改評論中的任何內容。由於您沒有另行指定,我假設您正在嘗試將其作爲標準SDK應用程序部署到任意設備。要將SDK應用程序部署到任意設備,我可以絕對肯定地說,你所尋求的是不可能的。 – CommonsWare 2011-04-22 13:33:43

相關問題