將應(yīng)用開(kāi)發(fā)成系統(tǒng)應(yīng)用柏锄,有如下這么幾種情況:
1蠕搜、只是想把 apk 放在 /system/app or /system/priv-app 下馏艾,不需要額外的權(quán)限他宛。直接找個(gè)文件管理器把 apk 文件復(fù)制到對(duì)應(yīng)的目錄中去四濒,就可以了换况。
2、在保證 apk 是系統(tǒng)應(yīng)用的基礎(chǔ)上盗蟆,還想利用系統(tǒng)簽名權(quán)限做一些事情戈二。這也是我選擇的方法。針對(duì)這種情況喳资,你需要找到你上傳 apk 的系統(tǒng)在編譯的時(shí)候生成的簽名文件觉吭。具體在 /android/system/build/target/product/security 中,找到 platform.pk8 以及 platform.x509.pem仆邓,復(fù)制出來(lái)鲜滩。然后編譯系統(tǒng)過(guò)程中生成的文件中找到 signapk.jar 文件,也復(fù)制出來(lái)节值。這個(gè) signapk.jar 是通用的徙硅,找不到可以直接上網(wǎng)下載一個(gè)。之后搞疗,按照文末提供的腳本以及注釋嗓蘑,就可以完成系統(tǒng)應(yīng)用的安裝以及對(duì)應(yīng)系統(tǒng)簽名權(quán)限的調(diào)用了。
3、編譯系統(tǒng)的時(shí)候直接把你的 apk 編譯進(jìn)去桩皿。這種方式我也不太清楚豌汇,具體步驟方法可以自行百度。因?yàn)槲覀兊?apk 還不是最終版业簿,還需要不斷的開(kāi)發(fā)和調(diào)試,因此也就沒(méi)有選擇這種方法阳懂。
安裝系統(tǒng)應(yīng)用腳本如下:
首先梅尤,將 android studio 生成的 unsigned(未簽名)的 apk 復(fù)制到包含證書(shū)以及相關(guān)文件的目錄下。
cp /path-to-your-out-dir-of-project/app-release-unsigned.apk /target-dir/unsigned.apk
簽名
java -jar signapk.jar ./platform.x509.pem ./platform.pk8 unsigned.apk signed.apk
adb root and remount岩调。root 是往 /system/app or /system/priv-app 寫(xiě)入文件所必須的巷燥。 remount 會(huì)把 android 的文件系統(tǒng)掛載成可讀寫(xiě)的。這兩個(gè)條件缺一不可号枕。
adb root
adb remount
修改 apk 的權(quán)限缰揪。
chmod 777 ./signed.apk
把 apk 放進(jìn)去.
adb push ./signed.apk /system/priv-app/ourtest.apk
重啟。
adb reboot
最近發(fā)現(xiàn)葱淳,可以不通過(guò)重啟(畢竟測(cè)試次數(shù)一多钝腺,就會(huì)發(fā)現(xiàn)重啟也是一個(gè)非常耗費(fèi)時(shí)間的調(diào)試平靜),直接殺掉 app 對(duì)應(yīng)的進(jìn)程就可以達(dá)到重啟的效果赞厕。
adb shell am force-stop your.package.name