android系统签名的不足

android编程时,有时候我们可能需要时到到比如重启、关机等特殊的权限!此时需要用到app系统签名,app才可以运行!比如:

<uses-permission android:name="android.permission.REBOOT">uses-permission>
<uses-permission android:name="android.permission.SHUTDOWN">uses-permission>

在xml中添加以上权限时,我们首先会遇到第一个问题,就是编译出错,系统提示如下错误:
Permission is only granted to system apps!
解决方法请参考:

Android Studio 的“Permission is only granted to system apps”


解决了上面的问题后,此时可以编译生成apk,并且可以安装,但是此时如果app运行到使用上面的权限的相关代码时,会崩溃!

因为app并没有获取到那些权限,怎么样可以获取呢?,那几是对apk添加系统签名。


我们下载对应系统的platform.x509.pem、platform.pk8文件,并下载signapk.jar(我用的4.42源码下的,6.0的既然不行)文件到特定文件夹下面;

编译未签名的apk到该文件夹;

执行如下命令:

java -jar signapk.jar platform.x509.pem platform.pk8 old.apk new.apk

就会在当前文件夹下生成新签名的apk。


如果你当前运行的系统的前面文件platform.x509.pem、platform.pk8和你下载的一致,那么生成的apk可以跑。

否则安装报错。


总结:在考虑使用这种方式生成apk开前,一定要考虑签名文件的一致性。



你可能感兴趣的:(Android,基础知识)