您的位置:首页 > 移动开发 > Android开发

Android开发系统应用(一)

2015-02-04 14:50 204 查看
修改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)
转载自:/article/1971905.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: