apk 签名问题

来源:互联网 发布:得力指纹考勤软件 编辑:程序博客网 时间:2024/05/20 08:42

http://www.xuebuyuan.com/1719200.html


eclipse编译出来的apk,安装时报出INSTALL_FAILED_SHARED_USER_INCOMPATIBLE的错误。

原因:apk的AndroidManifest.xml中声明了android:sharedUserId="android.uid.system",但没有相应的签名

解决方案:

1. 找到编译目标系统时的签名证书platform.pk8和platform.x509.pem,在android源码目录build\target\product\security下。

没有那两个证书的话,就别指望用system用户了,赶紧地把android:sharedUserId="android.uid.system"声明删掉,不过删掉之后有些动作可能就没权限执行了。

 

2. 将签名工具(signapk.jar)、签名证书(platform.pk8和platform.x509.pem)及编译出来的apk文件都放到同一目录

 

3.执行签名命令:

java -jar signapk.jar  platform.x509.pem  platform.pk8 Demo.apk signedDemo.apk

 

4.将signedDemo.apk安装即可

 

类似地,在android源码树编译也会存在同样的问题,解决方法类似。

或直接把目标系统的签名证书platform.pk8和platform.x509.pem(根据android.mk文件的LOCAL_CERTIFICATE 定义,也可能是shared.pk8、media.pk8等)覆盖到build\target\product\security也可,这样就不需要再手工签名了。



用Android自带的signapk.jar签名应用程序


先找到相应的签名文件,文件位置:可以在......\android_project\build\target\product\security中找到media.pk8、media.x509.pem、platform.pk8、platform.x509.pem、shared.pk8、shared.x509.pem、testkey.pk8、testkey.x509.pem等签名文件,对应不同的权限。
自带的签名工具signapk.jar:由......\android_project\out/host\linux-x86\framework/中找到。
然后放到一个文件夹中,签名命令(一定要使用相应的权限,权限可在menufest和mk文件--LOCAL_CERTIFICATE中相应找到):
java -jar signapk.jar platform.x509.pem platform.pk8 MyDemo.apk MyDemo_signed.apk 得到具有对应权限的APK

0 0
原创粉丝点击