让Android程序获得系统的权限,实现关机重启,静默安装等功能

时间:2023-03-08 17:05:43

引用:http://www.cnblogs.com/welenwho/archive/2012/05/10/2494984.html

android想要获得系统权限有几种途径,一种就是你的程序固化的系统中,这种方式可以通过将apk放到rom中/system/app中然后刷机即可,或者是在你的程序root后通过root文件管理器将apk放到改目录下.第二种就是你的程序必须要有该平台的签名,那么怎样获得android下的系统签名呢.

首先需要有android的源码,编译出signapk.jar文件,signapk的源码在android源码目录的/build/tools/signapk下,首先需要cd到该目录下,然后通过javac signapk.java命令编译该源文件,得到SignApk$SignatureOutputStream.class和SignApk.class文件,然后手动创建 k/com/android/signapk目录,然后将两个class文件放到该目录下,执行jar cvfm signapk.jar SignApk.mf -C k\ .即可生成signapk.jar文件,得到android提供的签名程序(k\ .之间有空格).

然后是在android源码目录中的位置是/build/target/product/security下面的platform.pk8和platform.x509.pem两个文件(该目录下面还有两个testkey.pk8和testkey.x509.pem文件这两个是系统签名测试文件,第三方rom一般通过使用这个重新签名修改后的rom,上面提到的第一种方法修改完后需要使用该文件签名,不签在某些recovery下是可以通过的,但是还是建议签)

在获得signapk.jar文件和platform.pk8和platform.x509.pem文件后就可以对某个apk进行系统签名了 ,具体执行指令如下,假如需要对名为welen.apk(在此之前,welen.apk文件的生成时必须在AndroidManifest.xml文件中加入android:sharedUserId="android.uid.system",使其获得和系统一样的uid,在加入该属性后如果没有经过系统签名,该apk是无法安装的)的文件进行系统签名,则

java -jar signapk.jar platform.x509.pem platform.pk8 welen.apk welen_signed.apk

使用上面指令即可对welen.apk文件进行签名,签名后的文件拥有系统程序的权限,可执行静默安装卸载,系统关机重启,强制结束进程等操作,具体的关机重启的代码就不写了