场景1.
A 应用 有两个版本 第一个 正式版 第二个测试版 测试版的包名 = 正式版+test ,在Android studio 中 也就是 applicationId 。
两个版本都可以成功的安装在手机上,也就是说 在手机上可以有 两个 A 应用。
场景2
由于某些原因,A 应用要改包名,重新做一个正式版的应用。也就是要在手机上安装两个 正式版的A.
我对新的应用A 改了包名 配置 重新签名打包 ,意想不到的结果出现了,不能成功安装两个A 应用,提示 android APP 安装失败 应用自定义权限重名 还有一些说是魅族的锅之类相似的问题。
最后看到这么一句话
拥有相同自定义权限的软件必须使用同样的签名,否则后一个程序无法安装。
这个也就解释了 为什么 A 的正式版和开发版 为什么能安装在手机上 而不提示 应用自定义权限重名,应为用了同一个签名。
我做的新的A 应用,用了新的签名,再加上自己没有改掉清单文件中含有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"/>
记得改新包名的时候 所有相关的地方都要仔细查看。