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开前,一定要考虑签名文件的一致性。