天天看點

讓Android程式獲得系統的權限,實作關機重新開機,靜默安裝等功能

android想要獲得系統權限有幾種途徑,一種就是你的程式固化的系統中,這種方式可以通過将apk放到rom中/system/app中然後刷機即可,或者是在你的程式root後通過root檔案管理器将apk放到改目錄下.第二種就是你的程式必須要有該平台的簽名,那麼怎樣獲得android下的系統簽名呢.

首先需要有android的源碼,編譯出signapk.jar檔案,signapk的源碼在android源碼目錄的/build/tools/signapk下,首先需要cd到該目錄下,然後通過javac signapk.java指令編譯該源檔案,得到SignApk$SignatureOutputStream.class和SignApk.class檔案,然後手動建立 k/com/android/signapk目錄,然後将兩個class檔案放到該目錄下,執行jar cvfm signapk.jar SignApk.mf -C k\ .即可生成signapk.jar檔案,得到android提供的簽名程式(k\ .之間有空格).

然後是在android源碼目錄中的位置是/build/target/product/security下面的platform.pk8和platform.x509.pem兩個檔案(該目錄下面還有兩個testkey.pk8和testkey.x509.pem檔案這兩個是系統簽名測試檔案,第三方rom一般通過使用這個重新簽名修改後的rom,上面提到的第一種方法修改完後需要使用該檔案簽名,不簽在某些recovery下是可以通過的,但是還是建議簽)

在獲得signapk.jar檔案和platform.pk8和platform.x509.pem檔案後就可以對某個apk進行系統簽名了 ,具體執行指令如下,假如需要對名為welen.apk(在此之前,welen.apk檔案的生成時必須在AndroidManifest.xml檔案中加入android:sharedUserId="android.uid.system",使其獲得和系統一樣的uid,在加入該屬性後如果沒有經過系統簽名,該apk是無法安裝的)的檔案進行系統簽名,則

java -jar signapk.jar platform.x509.pem platform.pk8 welen.apk welen_signed.apk

使用上面指令即可對welen.apk檔案進行簽名,簽名後的檔案擁有系統程式的權限,可執行靜默安裝解除安裝,系統關機重新開機,強制結束程序等操作,具體的關機重新開機的代碼就不寫了

繼續閱讀