如果使用Android Studio對代碼進行
make project
後,将輸出的
app-debug.apk
部署到手機
/system/app
下,雖然該apk能作為系統 app 自動安裝并無法删除,但他在 selinux 中屬于
u:r:untrusted_app:s0
标簽(域),隻有通路 ASEC、SD卡、TCP/UDP socket、PTY的權限,且受制于
neverallow
規則的限制,在源碼中無法對其開放驅動節點通路的權限。
若要在seLinux開放app通路特定的驅動節點,我們需要将app進行
platform_app
簽名:
- 将xxx.apk檔案放到aosp根目錄,在aosp根目錄執行以下指令:
java -Djava.library.path="out/host/linux-x86/lib64" -jar out/host/linux-x86/framework/signapk.jar build/target/product/security/platform.x509.pem build/target/product/security/platform.pk8 xxx.apk xxx-signed.apk
簽名後安裝至Android機器中,現其在SELinux中的标簽(域)為:
u:r:platform_app:s0
參考文獻
[1] lei7143. O apk 簽名[EB/OL].CSDN部落格,2018.06.01