错误 -- Installation error: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE

本文介绍了解决Android系统APK安装失败的问题,特别是当遇到INSTALL_FAILED_SHARED_USER_INCOMPATIBLE错误时的处理方法。文中详细解释了如何通过调整AndroidManifest.xml文件及使用正确的密钥进行签名来解决问题。
摘要由CSDN通过智能技术生成

修改Android系统APK(DownloadProvider)完成后, 运行报错:  

[2012-05-07 19:45:54 - DownloadProviderUI] Installation error: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE
[2012-05-07 19:45:54 - DownloadProviderUI] Please check logcat output for more details.
[2012-05-07 19:45:54 - DownloadProviderUI] Launch canceled!


到网上搜索验证后, 发现在 AndroidManifest.xml的头文件中多了这个属性"android:sharedUserId="android.media" , 网上 , 有人说只要把这个属性删除就行了. 删除这个属性确实能够安装成功, 但是运行会报错. 然后继续搜索, 发现要想成功安装该apk, 必须对其进行签名. 


以下是签名步骤:

 

1、用eclipse编译出apk(ClockSetting.apk)文件,但这个文件不能用,删掉META-INF目录下的CERT.SF和CERT.RSA两个文件

2、使用当前android系统(android系统可能不同)的platform密钥来重新给apk文件签名(可能还未用用户米要签名)。
首先,找到密钥文件,在我的Android源码目录中的位置是"build\target\product\security",下面的platform.pk8和platform.x509.pem两个文件。
然后,用Android提供的SignApk工具来签名,signapk的源代码是在"build\tools\signapk"下,这时得为下面的编译工作做些准备:
<1>、编译jar
命令行cd到signapk.java代码目录下,
javac signapk.java
获取SignApk$SignatureOutputStream.class和SignApk.class

建立目录s\com\android\signapk,将两个class文件放入目录下
jar cvfm signapk.jar SignApk.mf -C s\ .
注意:"s\"后面的"."前面有空格
生成signapk.jar文件,得到了Android提供的签名程序signapk.jar
<2>、用目标系统的platform密钥签名
将platform.pk8和platform.x509.pem文件(注意: 这两个文件根据AndroidManifest.xml头文件属性android:sharedUserId="android.media"来决定使用哪个签名.)复制到"D:\myandroid_mx27\build\tools\signapk"目录下,即signapk.jar和SignApk.mf所在的目录。
java -jar signapk.jar platform.x509.pem platform.pk8 D:\ClockSetting.apk D:\ClockSettingSigned.apk
我的未签名(ClockSetting.apk)和已签名(ClockSettingSigned.apk)apk文件都放在D盘,这样就得到了用Android源码编译的文件。


系统签名部分转载网友: elao520 的文章(详情: http://www.eoeandroid.com/thread-46074-1-1.html)


评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值