場景1.
A 應(yīng)用 有兩個(gè)版本 第一個(gè) 正式版 第二個(gè)測試版? ? 測試版的包名 = 正式版+test ,在Android studio 中 也就是 applicationId ?。
兩個(gè)版本都可以成功的安裝在手機(jī)上,也就是說 在手機(jī)上可以有 兩個(gè) A 應(yīng)用。
?場景2
由于某些原因,A 應(yīng)用要改包名,重新做一個(gè)正式版的應(yīng)用。也就是要在手機(jī)上安裝兩個(gè) 正式版的A.
我對(duì)新的應(yīng)用A 改了包名 配置 重新簽名打包 ,意想不到的結(jié)果出現(xiàn)了,不能成功安裝兩個(gè)A 應(yīng)用,提示 android APP 安裝失敗 應(yīng)用自定義權(quán)限重名 ?還有一些說是魅族的鍋之類相似的問題。
最后看到這么一句話
擁有相同自定義權(quán)限的軟件必須使用同樣的簽名,否則后一個(gè)程序無法安裝。
這個(gè)也就解釋了 為什么 A 的正式版和開發(fā)版 為什么能安裝在手機(jī)上 而不提示 應(yīng)用自定義權(quán)限重名,應(yīng)為用了同一個(gè)簽名。
我做的新的A 應(yīng)用,用了新的簽名,再加上自己沒有改掉清單文件中含有android:protectionLevel="signatureOrSystem" ?的配置的包名
A ?之前的配置
android:name="com.a.permission.MIPUSH_RECEIVE"
android:protectionLevel="signatureOrSystem"/>
那么改掉之后的A的配置
android:name="com.a.new.permission.MIPUSH_RECEIVE"
android:protectionLevel="signatureOrSystem"/>
記得改新包名的時(shí)候 所有相關(guān)的地方都要仔細(xì)查看。