我試圖從我的java代碼安裝系統應用程序,到目前爲止,我還沒有取得任何成功。
以下是我到目前爲止所做的:Android:以編程方式將apk複製到/ system/app
- 我的設備已生根。
- 我的「安裝程序」應用程序作爲系統應用程序安裝。 (手動將其複製到/ system/app)
- 我已經在平臺密鑰上籤署了安裝程序apk,並且在清單中有
android:sharedUserId="android.uid.system"
。 我一直在嘗試(並嘗試,然後更多)爲
Runtime.getRuntime.exec("su")
。我打算將系統分區掛載爲rw
,爲apk執行cat
,然後將系統分區設爲ro
。以下是命令列表:mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system<br> cat /sdcard/application.apk > /system/app/application.apk<br> mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system<br><br>The application.apk here is the app being installed from the installer app. This app is also signed with platform key, and has the sharedUserId configured.
- 我已要求清單中的
INSTALL_PACKAGES
權限。
我已經嘗試了許多exec(「」)格式的變體,包括在每個命令中使用'su -c'
。我得到了「斷管」異常和安全異常。有時候,我沒有發現異常,但文件沒有被複制。
請讓我知道我在這裏失蹤。有沒有人得到這個工作?
謝謝!
在相關說明上,使用平臺密鑰簽署的應用程序和具有sharedUserId = system的應用程序之間有什麼區別?和應用程序目前在/系統/應用程序? – Chaitanya
/system/app中的應用程序可以訪問權限級別2(據我所知不是1)。無論授予的權限如何,帶有系統sharedUserId的應用程序都會繼承授予「父」應用程序的權限,並且除了運行在與「父」相同的進程ID上。各種API檢查應用程序的進程ID,如果它們不是特定類型,則拒絕對它們的訪問。儘管2大多數是緊密相連的,但它們並不總是*並駕齊驅。這是描述它的非技術方式,我相信其他人會做得更好...... – slinden77