1、前言
前段时间帮朋友修改一个APP,需要在平板上实现与服务器时间同步,并且实时修改当前的系统时间,这个问题本身不是很复杂,从服务器到APP都由朋友一人完成,不过头疼的是Android系统不允许用户修改系统时间,因为没有权限,必须要root后才行,可恨的是客户那里的平台都是那种听都没听说过的牌子,造成用一键root的时候失败,于是就有个今天这篇文章的内容。
2、基本思路
网上一般介绍有两种方法来给APP加root权限,一种是通过编译系统源码的方式,另外一种则是通过修改APP签名的方式。第一种方法太蛮烦,而且Android源码也不好下,特别大,于是就用第二种方法,通过把APP的User ID分配到系统进程中,从而获取root权限,同时对APP进行重新签名就可以了。
3、解决方案
Step1:修改AndroidManifest.xml文件,添加android:sharedUserId="android.uid.system"。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="xxx"
<strong>android:sharedUserId="android.uid.system"</strong>
android:versionCode="1"
android:versionName="1.0" >
Step3:重新为APK文件进行签名,注意签名不要包含中文目录。
java -jar signapk.jar platform.x509.pem platform.pk8 XXX.apk XXX_New.apk
通过上面三步就可以实现把为APP添加root权限的功能,这里需要注意的是可能做出来的APP不能在所有的平台上运行,因为很多第三方room没有采用官方的签名,而是由自己的签名,这种情况的话就会失败,暂时还没有找到比较好的解决方案,不过在原生的系统上或者自己编译的系统是肯定没问题的。