一.發(fā)生錯誤時候的現(xiàn)象和log打印
1.現(xiàn)象 模塊使用了Settings.Global之后,單編模塊push到手機(jī)里面重啟赔桌,發(fā)現(xiàn)手機(jī)卡在開機(jī)logo界面算利,開不了機(jī)
2.抓取logcat看log打印會發(fā)現(xiàn)如下圖片中的打印,主要的關(guān)鍵詞為Privileged permissions not in privapp-permissions whitelist
二.查找源碼定位問題(Q的代碼)
文件路徑PermissionManagerService.java(frameworks\base\services\core\java\com\android\server\pm\permission)
三.修改的位置
1.frameworks\base\data\etc 在這個文件夾下面有很多xml文件工闺,除了privapp-permissions-platform.xml文件其他有些文件比如com.android.dialer.xml是單獨(dú)以包名分開的,可以再里面添加權(quán)限 比如我在com.android.dialer.xml文件中添加了權(quán)限WRITE_SECURE_SETTINGS的權(quán)限
2.對應(yīng)的模塊需要在manifest文件中加上權(quán)限android.permission.WRITE_SECURE_SETTINGS
四.如何驗證
整編代碼-------刷機(jī)----------導(dǎo)出文件有沒有生效 生成文件目錄/system/etc/permissions/privapp-permissions-platform.xml 或者/product/etc/permissions/com.android.dialer.xml 這個生成的目錄具體是由同級目錄下的Android.bp決定的瓣蛀,實(shí)在找不到就find搜索文件
五.快速驗證
在手機(jī)中adb shell進(jìn)入目錄陆蟆,導(dǎo)出對應(yīng)的xml文件,添加好權(quán)限惋增,push到源目錄叠殷,reboot嘗試是否可以開機(jī),若可以表示添加的權(quán)限是ok的诈皿,然后就放心大膽的添加在framework下的對應(yīng)文件里面林束,整編ok提交代碼上庫。