2010-06-16 64 views
7

我爲一名操作員工作,並且我們在Android手機上預裝應用程序。預裝Android應用程序和.so庫文件無法升級

但是,一旦從Market上升級,一些預加載的應用程序就會崩潰。

問題是這樣的:
- 應用程序包含一個.so庫文件
- 以預裝在手機上完整的應用程序中,.so庫文件必須被單獨放置到lib目錄(/系統/ lib/libXXXXjni.so)
- 當預裝的應用程序從Market中升級並運行時,而不是找到新APK中的.so庫文件時,會先找到舊的預加載的.so文件 - 導致崩潰,因爲這兩個.so fiels有不同的內容

有沒有人有建議的變通方法,或知識庫搜索algorthim可能會幫助我解決這個?

一個可能的解決方案可能是簡單地重命名庫文件,但這足夠嗎?

在此先感謝...

回答

0

當預加載,可以嘗試在應用程序庫: /data/data/com.package.foobar/lib/libXXXXjni.so

重命名庫會工作。可能使用應用程序的版本號作爲.so文件的名稱。雖然構建變得更加複雜。

+0

對於任何類型的預加載情況,設備是否必須具有root用戶權限才能對該數據/數據位置中的文件進行重命名? – Maximus 2011-10-11 18:41:05

+0

我在想圖書館在升級版中獲得一個新名字。重命名將發生在開發人員的機器上(以及代碼中的System.loadLibrary(...)調用中。)我認爲最好的方法是在應用程序的lib目錄中預加載庫,而不是/ system/lib。 – abh 2011-10-13 17:18:44