一.發(fā)生錯(cuò)誤時(shí)候的現(xiàn)象和log打印
1.現(xiàn)象 模塊使用了Settings.Global之后,單編模塊push到手機(jī)里面重啟,發(fā)現(xiàn)手機(jī)卡在開(kāi)機(jī)logo界面,開(kāi)不了機(jī)
2.抓取logcat看log打印會(huì)發(fā)現(xiàn)如下圖片中的打印,主要的關(guān)鍵詞為Privileged permissions not in privapp-permissions whitelist

二.查找源碼定位問(wèn)題(Q的代碼)
文件路徑PermissionManagerService.java(frameworks\base\services\core\java\com\android\server\pm\permission)

三.修改的位置
1.frameworks\base\data\etc 在這個(gè)文件夾下面有很多xml文件,除了privapp-permissions-platform.xml文件其他有些文件比如com.android.dialer.xml是單獨(dú)以包名分開(kāi)的,可以再里面添加權(quán)限 比如我在com.android.dialer.xml文件中添加了權(quán)限WRITE_SECURE_SETTINGS的權(quán)限

2.對(duì)應(yīng)的模塊需要在manifest文件中加上權(quán)限android.permission.WRITE_SECURE_SETTINGS
四.如何驗(yàn)證
整編代碼-------刷機(jī)----------導(dǎo)出文件有沒(méi)有生效 生成文件目錄/system/etc/permissions/privapp-permissions-platform.xml 或者/product/etc/permissions/com.android.dialer.xml 這個(gè)生成的目錄具體是由同級(jí)目錄下的Android.bp決定的,實(shí)在找不到就find搜索文件

五.快速驗(yàn)證
在手機(jī)中adb shell進(jìn)入目錄,導(dǎo)出對(duì)應(yīng)的xml文件,添加好權(quán)限,push到源目錄,reboot嘗試是否可以開(kāi)機(jī),若可以表示添加的權(quán)限是ok的,然后就放心大膽的添加在framework下的對(duì)應(yīng)文件里面,整編ok提交代碼上庫(kù)。