在Android L之前两个签名不一致的APP可以在AndroidManifest.xml中声明相同的Permission,但是在Android L上,声明了同样的Permission的两个签名不一致的APP不能同时安装。
举个例子:
(1)第一个APP的AndroidManifest.xml如下:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.test" android:versionCode="1" android:versionName="1.0" > <permission android:name="com.test.permission.TEST" android:protectionLevel="dangerous" /> ......
(2)第二个APP的AndroidManifest.xml如下:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.test.hellojni" android:versionCode="1" android:versionName="1.0"> <permission android:name="com.test.permission.TEST" android:protectionLevel="dangerous" /> ......
(3)使用两个不同的签名文件(keystore,可以百度如何生成keystore文件)分别对两个APP进行签名。
(4)安装其中的一个APP,在安装第二个APP时,打印如下log:
Package com.test.hellojni attempting to redeclare permission com.test.permission.TEST already owned by com.test
如果使用adb 命令 adb install则会报出类似于如下错误:
Failure [INSTALL_FAILED_DUPLICATE_PERMISSION perm=com.test.permission.TEST pkg=com.test]