如何安装系统认证签名过的APK

本文介绍了解决Android应用安装时出现的INSTALL_FAILED_SHARED_USER_INCOMPATIBLE错误的方法。提供了两种解决方案:一种是通过修改源码并使用特定证书进行编译;另一种是使用signapk.jar对外部编译的APK进行签名。

[DESCRIPTION]
如果你的App因为权限原因需要设置 android:sharedUserId=”android.uid.system” 那么IDE编译出的包通常是无法直接安装的,查看控制台会发现报 INSTALL_FAILED_SHARED_USER_INCOMPATIBLE错误。这是必须的,随随便便一个App声明一下就可以和系统用户共享ID,这很不科学。
[SOLUTION]
第一种解决方法:
如果你 repo sync 了 android 的整个源码,那么可以直接把你的 app 放到 /packages/apps 下面去 mm ,不过要记得在 Android.mk 中增加 LOCAL_CERTIFICATE 属性,这个属性具体有三个值:
系统中所有使用 android.uid.system 作为共享 UID 的 APK ,都会首先在 manifest 节点中增加android:sharedUserId=“android.uid.system”,然后在 Android.mk 中增加 LOCAL_CERTIFICATE := platform。可以参见 Settings 等
系统中所有使用android.uid.shared作为共享 UID 的 APK,都会在 manifest 节点中增加android:sharedUserId=“android.uid.shared”,然后在 Android.mk 中增加 LOCAL_CERTIFICATE := shared。可以参见 Launcher 等
系统中所有使用 android.media 作为共享 UID 的 APK,都会在 manifest 节点中增加android:sharedUserId=“android.media”,然后在 Android.mk 中增加 LOCAL_CERTIFICATE := media。可以参见 Gallery 等。
第二种解决方法:
当然,毕竟不是每个人都有机会,或者有必要下载整个源码的。 简单地,当你用 IDE 编出 apk 之后,可以去 w1/out/host/linux-x86/framework 找到 signapk.jar 文件;再去 /build/target/product/security/ 里找到 platform.pk8 、 platform.x509.pem 这两个文件。把它们连同你的 apk 扔进一个文件夹,然后 cd 到该文件夹下执行
java -jar signapk.jar platform.x509.pem platform.pk8 Origin.apk Signed.apk
得到的 Signed.apk 就可以直接 adb install了。

PS:5.0版本的系统安全级别较高,KK/JB版本权限可能比较低,不用platform签名也能用。

待验证:在untrusted_app文件里面添加外部程序的读写权限
w1\device\mediatek\common\sepolicy\untrusted_app.te

allow untrusted_app ttyMT1_device:chr_file rw_file_perms;
allow untrusted_app ttyMT1_device:chr_file { read write ioctl open };
allow untrusted_app ttyMT2_device:chr_file rw_file_perms;
allow untrusted_app ttyMT2_device:chr_file { read write ioctl open };
allow untrusted_app ttyMT3_device:chr_file rw_file_perms;
allow untrusted_app ttyMT3_device:chr_file { read write ioctl open };

w1\device\mediatek\common\sepolicy\platform_app.te
去掉AndroidManifest.xml里面的android:sharedUserId=”android.uid.system”权限

allow platform_app ttyMT1_device:chr_file rw_file_perms;
allow platform_app ttyMT1_device:chr_file { read write ioctl open };
allow platform_app ttyMT2_device:chr_file rw_file_perms;
allow platform_app ttyMT2_device:chr_file { read write ioctl open };
allow platform_app ttyMT3_device:chr_file rw_file_perms;
allow platform_app ttyMT3_device:chr_file { read write ioctl open };
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值