让Android程序获得系统的权限,实现关机重启,静默安装等功能
android想要获得系统权限有几种途径,一种就是你的程序固化的系统中,这种方式可以通过将apk放到rom中/system/app中然后刷机即可,或者是在你的程序root后通过root文件管理器将apk放到改目录下.第二种就是你的程序必须要有该平台的签名,那么怎样获得android下的系统签名呢.
首先需要有android的源码,编译出signapk.jar文件,signapk的源码在android源码目录的/build/tools/signapk下,首先需要cd到该目录下,然后通过javacsignapk.java命令编译该源文件,得到SignApk$SignatureOutputStream.class和SignApk.class文件,然后手动创建k/com/android/signapk目录,然后将两个class文件放到该目录下,执行jarcvfmsignapk.jarSignApk.mf-Ck\.即可生成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-jarsignapk.jarplatform.x509.pemplatform.pk8welen.apkwelen_signed.apk
使用上面指令即可对welen.apk文件进行签名,签名后的文件拥有系统程序的权限,可执行静默安装卸载,系统关机重启,强制结束进程等操作,具体的关机重启的代码就不写了
http://hljdrl.sinaapp.com/?p=224