平时编写的android程序属于第三方的应用程序,没有设计到修改系统,最多引用系统信息,今天要自定义一个时间设置需要用到系统权限,在网上学习之后,mark一下。
本文参考了
此昵称已经存在吗的Android系统权限和root权限
1.要活得系统权限,在完成程序的编写后,在配置文件AndroidManifest.xml中加入android:sharedUserId="android.uid.system,如下文
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.date"
android:versionCode="1"
android:versionName="1.0"
android:sharedUserId="android.uid.system">
加入这句命令,告诉系统需要权限,但并没有给系统权限,下面两种是大家用到的比较多的办法:
第一种:
需要在linux环境下完成,而且是编译android源码的环境下,修改Android.mk文件,加入LOCAL_CERTIFICATE := platform这一行,使用mm命令来编译,生成的apk就有修改系统时间的权限了(这个我没有操作)。
第二种:
不需要在源码环境下,但还是要求你有android的源码,而且我第一次弄的时候还是跑到linux底下了。
使用eclipse编译出apk文件。使用目标系统的platform密钥来重新给apk文件签名。首先找到密钥文件,在我
android源码目录中的位置是"build/target/product/security"下面的platform.pk8和platform.x509.pem两个文件。然后用Android提供的Signapk工具来签名,
signapk的源代码是在"build/tools/signapk"下,编译后在out/host/linux-x86/framework下(android 9.0后路径为out/soong/host/linux-x86/framework/signapk.jar ,如还是找不到signapk.jar文件,可直接在out目录下搜索:find -name "signapk.jar")
用法为: java -jar signapk.jar platform.x509.pem platform.pk8 input.apk output.apk"。
这里注意一下,好多人都直接说编译,让小白很难受啊,我说详细点,就是在linux环境下,去到"build/target/product/security",是一个.java文件,我用的javac编译通过,但也提示了一堆东西没有"javac SignApk.java"。我用mm来编译,死活不成功,提示/usr/bin/mm没有那个文件或目录。
这里再说一下,因为这里是对apk进行操作的,所以不用IDE的debug来调试,如果没有提前在path里面设置环境变量的话,可以到android的sdk目录platform-tools里有adb,用cmd命令窗来定位,然后执行adb install yourapkname.apk。如果不是第一次安装,建议把之前的卸载,再安装
---------------------
作者:qq_21042009
来源:CSDN
原文:https://blog.csdn.net/qq_21042009/article/details/78732919
版权声明:本文为博主原创文章,转载请附上博文链接!