PMS 包解析源码流程 - 修改定制应用icon
PMS構(gòu)造方法中任務(wù)階段性trace Tag
BOOT_PROGRESS_PMS_START
BOOT_PROGRESS_PMS_SYSTEM_SCAN_START
BOOT_PROGRESS_PMS_DATA_SCAN_START
BOOT_PROGRESS_PMS_SCAN_END
BOOT_PROGRESS_PMS_READY
PMS主要工作:包解析、簽名校驗(yàn)、應(yīng)用安裝卸載,如下時(shí)序圖僅為包解析流程
?首次開(kāi)機(jī)完整流程為未提及cache的路徑,非首次開(kāi)機(jī),則會(huì)涉及到ParsedPackage的cache流程,即當(dāng)應(yīng)用被解析完成后會(huì)存儲(chǔ)很多配置文件,例如package.xml,package_list等,其中包解析的內(nèi)容會(huì)被存貯在data/system/package_cache/目錄下,當(dāng)機(jī)器重啟后,此類(lèi)配置文件信息會(huì)在PMS構(gòu)造方法中preparePackageParserCache中構(gòu)建cache對(duì)象。當(dāng)cache對(duì)象存在后,包解析ParsingPackageUtils中的方法就不會(huì)再執(zhí)行,直接從cache文件中構(gòu)建出parsedPackage包。這也是為啥reboot會(huì)比首次開(kāi)機(jī)快一些的一個(gè)原因。
??經(jīng)上述流程,故icon替換就可以在parseBaseApplication方法中去做出來(lái),當(dāng)前包為定制icon應(yīng)用時(shí),則將其icon替換,這里要注意,有時(shí)我們獲取可能從acitivityInfo信息中獲取icon,所以ParsedActivityUtils.parseActivityOrReceiver中也需要做icon替換。當(dāng)前項(xiàng)目高通di5 laucnher調(diào)用中相冊(cè)、智慧充電就存在該情況
? ?
在包解析處做修改優(yōu)點(diǎn):
即此時(shí)修改應(yīng)用icon后,不論其他應(yīng)用如何調(diào)用,都能保證獲取到的即為定制后的icon,否則
? ? 1.? 在APPlicationPackageManager接口處做修改,則需要保證應(yīng)用必須調(diào)用此接口,且代碼替換代碼會(huì)重復(fù)走很多遍。
?2.在PackageInfoWithoutStateUtils中調(diào)用generateApplicationInfoUnchecked或generateAcitivtyInfoUnchecked生成ApplicationInfo或ActivityInfo的時(shí)候修改,這里比起APMS未限制應(yīng)用的接口調(diào)用,但是依舊走很多遍。
???在包解析處修改的缺點(diǎn):
當(dāng)應(yīng)用icon是根據(jù)某個(gè)屬性值取不同icon圖片時(shí),則會(huì)出現(xiàn)修改persist屬性值重啟后,樣式修改未生效,原因即為上述情況說(shuō)到的cache,重啟后,cache不為空,解析流程會(huì)直接返回不會(huì)重新走一次包解析,此時(shí)可以考慮執(zhí)行恢復(fù)出廠(chǎng)設(shè)置,但是要注意看恢復(fù)出廠(chǎng)設(shè)置,是否有去清data/system/package_cache目錄,若未做清除,則也是不會(huì)生效。如果這里需要做改動(dòng),可以考慮修改bootable/recovery/recovery.cpp將此目錄在恢復(fù)出廠(chǎng)設(shè)置的時(shí)候清掉。
???在此處修改的缺點(diǎn):
當(dāng)應(yīng)用icon是根據(jù)某個(gè)屬性值取不同icon圖片時(shí),則會(huì)出現(xiàn)修改persist屬性值重啟后,樣式修改未生效,原因即為上述情況說(shuō)到的cache,重啟后,cache不為空,解析流程會(huì)直接返回不會(huì)重新走一次包解析,此時(shí)可以考慮執(zhí)行恢復(fù)出廠(chǎng)設(shè)置,但是要注意看恢復(fù)出廠(chǎng)設(shè)置,是否有去清data/system/package_cache目錄,若未做清除,則也是不會(huì)生效。如果這里需要做改動(dòng),可以考慮修改bootable/recovery/recovery.cpp將此目錄在恢復(fù)出廠(chǎng)設(shè)置的時(shí)候清掉。
https://download.csdn.net/download/kanghongxia_021/85405257https://download.csdn.net/download/kanghongxia_021/85405257
??原圖,可用https://www.diagrams.net/,draw.io該工具打開(kāi)
總結(jié)
以上是生活随笔為你收集整理的PMS 包解析源码流程 - 修改定制应用icon的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: windows11系统正版来了,wind
- 下一篇: 家用双wan口路由器推荐_请推荐双WAN