背景
個人想要了解一下關于系統(tǒng)權限方面的知識箱叁,而我又天真地以為只要把app push到/system/app/目錄下,app就有系統(tǒng)簽名了惕医,也就能獲取到系統(tǒng)權限了耕漱。但是其實這樣是不行的。抬伺。螟够。算了,學一下adb命令也行峡钓。
實現(xiàn)方式
參考:How to install user apps as Android system apps
想要把app放到已有系統(tǒng)的/system/app/目錄下齐鲤,有兩種方式:
- 安裝re管理器,通過re管理器來實現(xiàn)椒楣。
- 使用adb命令给郊。
無論是哪種方式,前提手機都要root過才行捧灰,那么淆九,先來學習如何root。
root手機
想要了解root原理的可以看下:Android 的提權 (Root) 原理是什么?
可以使用刷機精靈毛俏、kingroot等來root手機炭庙,個人更推薦kingroot,因為我試了刷機精靈失敗了煌寇,kingroot成功了焕蹄。
驗證root是否成功只需要進入adb shell 然后su切換為root用戶,看是否$變成#了阀溶,命令行的開頭用戶名也會變成root腻脏,如下所示:
開始push
手機root過后就能開始push了鸦泳,手機系統(tǒng)是android 5.1
參考:android 安裝apk 到 /system/app下面
沒有root的手機在嘗試直接push到/system/app/目錄下時不是提示remote Permission denied 而是提示 remote Read-only file system(個人親測)
可以進到/system/app/目錄下,ls查看有沒有對應的apk永品,這里我就不貼出來了做鹰。到了這一步,我們已經(jīng)把apk放到/system/app/下了鼎姐,但是我們還要安裝該app呀钾麸,執(zhí)行pm install?不用炕桨,這里只需要把對應的apk文件變成可讀寫可執(zhí)行饭尝,然后重啟一下手機,該apk就會自動安裝了献宫∮蟪Γ可以adb shell后進入/system/app/目錄執(zhí)行l(wèi)s -l查看對應apk的權限,我看了一下默認移進來后只是可讀寫遵蚜,不可執(zhí)行帖池,所以如果不修改文件權限的話當然就不會安裝了。
重啟后發(fā)現(xiàn)桌面多了一個app吭净,且是不可卸載的睡汹,那就代表成功了。
卸載系統(tǒng)應用
從系統(tǒng)目錄中移除文件也是要root權限的寂殉,手機root后進入adb shell囚巴,切換為root用戶,進入/system/app/目錄rm 對應文件友扰,然后重啟就可以了彤叉,如下所示:
如果不行,重新掛載mount -o remount /system村怪,再rm秽浇。
模擬器是否可行?
答案:我root沒成功甚负,所以沒下文了柬焕。。梭域。
雖然adb shell連接模擬器的時候直接顯示的就是root用戶斑举,但是實際上操作的時候還是跟沒root一樣,裝了kingroot上去病涨,好久都沒成功富玷。于是我又參考android 模擬器root這篇文章試了下,在修改讀寫權限時失敗,報以下錯誤:
查了下說要在sdk\emulator下用命令行啟動模擬器赎懦,再執(zhí)行雀鹃,果然可以了。
第四步push的時候還是提示
個人理解:操作system目錄不是需要root權限嗎铲敛,上面所做的目的就是為了獲取root褐澎,但是命令中又包含需要root才能執(zhí)行的命令会钝,這行不通吧伐蒋?(個人見解)
關于push 到/system/app/的知識總結就到這里了,下面要開始驗證文章開頭我的困惑了迁酸。