CubieBoard中文论坛

 找回密码
 立即注册
搜索
热搜: unable
查看: 4869|回复: 2

Android APK权限问题

[复制链接]
发表于 2016-6-2 14:37:18 | 显示全部楼层 |阅读模式
        虽然Android系统是基于Linux内核的,但是Android与Linux分别有自己权限机制,所以APK在文件系统上是root/root用户及用户组的,在安卓上就有root权限这种说法是错误的。

apk获取system权限的方式:

1.在Android源码中编译

    (1)在AndroidManifest.xml中添加android:sharedUserId="android.uid.system"
    (2)在Android.mk文件里面添加LOCAL_CERTIFICATE := platform(使用系统签名)
    (3)在源码下面进行mm编译(/work/A20_android/android$ mm packages/apps/包名)
    这样生成的apk能够获取system权限,可以在任意system权限目录下面进行目录或者文件的创建,以及访问其他apk资源等-)

2.在Intellij Idea或eclipse编译出apk文件

    (1)在apk源码中AndroidManifest.xml中添加android:sharedUserId="android.uid.system"
    (2)运行生成APK文件(此时的APK文件不可安装使用,需要签名)
    (3)可以使用现有的A20-SDK平台platform密钥来给apk文件签名,密钥在 Android源码目录中的位置是"build/target/product/security" ,

拷贝platform.x509.pem和platform.pk8这两个密钥,在下载SignApk.jar包,将密钥、jar包、待签名的APK放入同一文件夹,输入命令

#java -jar  signapk.jar platform.x509.pem platform.pk8 your-app.apk  your-signed-app.apk 即可生成已签名APK



apk获取Root权限的方式

APK获得root权限首先要求的是

1、这个手机系统已经被root了

2、你的应用必须获得系统签名

3、已经root的系统,一般的程序你可以执行 “su ” 或“sh”获得root权限,在java中我们可以借助 Runtime.getRuntime().exec(String  command )访问底层Linux下的程序或脚本,这样就能执行su命令,使apk具有root权限,能够访问系统中需要root权限才能执行的程序或脚本了.   

例如:

private void ssss1() {
    Process process = null;
    DataOutputStream dos = null;
    try {
        process = Runtime.getRuntime().exec("/system/bin/sh");
        dos = new DataOutputStream(process.getOutputStream());
       dos.writeBytes("reboot");//这里可以执行具有root 权限
        dos.flush();
        dos.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

回复

使用道具 举报

发表于 2016-6-2 16:04:19 | 显示全部楼层



再也不用担心apk没有root权限了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|粤ICP备13051116号|cubie.cc---深刻的嵌入式技术讨论社区

GMT+8, 2024-5-5 09:22 , Processed in 0.020964 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc. | Style by Coxxs

返回顶部