Android学习笔记之:获取Android手机(系统)Root权限介绍

      随着智能手机的快速发展,其强大的功能让越来越多的人用得不亦乐乎,大量的APP不断地进入,各式各样的功能满足各种种样的人类需求,当你面对自己手机上大量的app应用,在尽情享受的同时有没有过烦恼呢?反正我是有烦恼的,至少当我刚买个Android新手机时,里面就已经装有好几十个APP时,我就有点头大了,因为这几十个APP中,大部分是我用不到或不想用的APP,更恼火的是:这些APP还不能卸载,这也太霸王了吧!如果要删除这些不想要的系统软件我们就要获取到手机的Root权限(也就是刷机)才行,这对我们开发人员而言就不是件难事,现在也有很多获取手机ROOT权限的APP应用,只要装在手机上就可能刷机成功,还是方便的。这两天学习Android手机Root相关视屏,正好做点笔记!这篇文章http://blog.csdn.net/chaihuasong/article/details/8463212/有详细介绍ROOT的原理 和方法,值得学习。

  Root权限是Android系统中拥有最高权限,可以操作手机中绝大部分功能 ,能实现很多我们非ROOT权限所不能实现 的功能 。我们之所以要ROOT也是基于获取好手机操作的更多权限,那我们获取到Root权限后,可以做做么呢?

 1、可以将程序应用安装在SD卡上及删除原厂系统自带预装软件,节省存储空间。

 2、可以管理开机启动项,修改开机动画,禁用不需要后台运行的程序,手机更省电。

 3、可以备份手机重要资料,一旦不小心数据丢失还可以在备份中还原。

 4可以修改手机系统,也就是root后可以给安卓手机刷机,体验不同安卓系统的乐趣。

 5、可以刷入第三方的recovery,对手机进行刷机、备份等操作。

 6、可以修改hosts,改变手机的网络,正常访问谷歌服务,汉化手机系统等

 7、对我们开发者而言更方便:可以直接在手机上查看正在运行APK的文件夹及数据库等。

备注:以上几点主要来自百度,一下子真想不到有这么多用处。

   我们都知道Android系统底层是Linux系统,Android中的Root权限等同于Windows中的administrator。在我们的Linux系统中,从普通用户切换到Root用户用到的是su命令。

   其实Android系统本质就是Linux,为什么呢?

   操作系统的基本组成 :系统内核+文件系统

  Linux系统:Linux内核+文件系统(ext3/4)

  Android系统:Linux内核+文件系统(ext3/4)同Linux系统是一样的,本质就是Linux系统 。

 讲了这么多,那如何来获取Root权限呢?除了上面提到的用现有的Root工具或软件外,我们通常要以下几个步骤:

1,一个合适的Recovery:在bootloader模式下复制整个的文件系统,在Recovery模式下将文件复制到Android设备的指定文件,

2,改造su命令:Android系统自带的su命令只允许root用户及shell用户使用,要进行改造

3,制做Recovery刷机文件:zip格式的压缩文件主要由待复制和Edify语言编写的脚本组成

4,执行su命令提取ROOT权限:刷机后,Android系统直接拥有Root权限,我们就成为了超级用户啦。

5,让Rom本身拥有Root权限 。

下面就开始我们的刷机之旅:

首先我们刷一个很酷的Recovery:

进入http://www.clockworkmod.com/rommanager,如图:

根据自己手机选择一个对应的Recovery包,下载到本地。什么是Recovery?我也找了好久的资料,感觉http://www.3lian.com/edu/2012/04-11/25212.html还行,就是页面广告太多了。

刷机中要用到的命令语句 :

1.fastboot flash boot boot.img,这个要保证在boot.img存在的情况下才可以执行

2.千万不要执行fastboot erase bootloader命令,一旦执行,手机秒变砖头。

上面提到了Edify语言:这是Android系统来运行updater-scripts的Edify语言,大部分的Edify命名都是函数,当调用这些函数结束的时候,会返回数据给脚本。我们在进行刷机操作中要用到的函数有:

ui_print(msg1,...,msgN):用于在Recovery界面输出字符串。其中msg1,...,msgN表示N个参数,至少要指定一个参数,如果指定多个参数,则会把参数拼接输出。

run_program(prog,arg1,...argN):执行程序,prog表示要执行的程序文件,需要写完整的文件路径。arg1等参数表示执行程序 的参数,其它prog是必有有的,如run_program("/sbin/busybox/","mount","/system");

delete(file1,...fileN):删除一个或多个文件,至少要指定一个文件。

package_extract_dir(package_path,destination_path):提取刷机包中package_path指定目录所有文件到destination_path指定目录。package_path指刷机包中目录,destination_path指目标路径

set_perm(uid,gid,mode,file1,...,fileN):用于设置一个或多个文件的权限,uid指用户ID,gid表示用户组ID,如果要想文件的用户和用户组都有root权限,则都要设置为0,mode表示设置的权限

mount(fs_type,partition_type,location,mount_point):挂载分区如:mount("ext4","EMMC","/dev/block/platform/s3c-sdhci.0/by-name/system","/system");

unmount(mount_point):解除文件系统的挂载。

接下来我们编写update_script脚本文件,主要有五步:

1,以读写模式挂载/system

2,删除旧的su文件

3,复制新的su文件

4,修改su文件的权限

5,卸载/system

文件内容:

run_program("/sbin/busybox","mount","-o","rw","/system");

delete("/system/xbin/su");

package_extract_dir("system","/system");

set_perm("0","0","0777","/system/xbin/su");

umount("/system");

分别对应上面的5步。

接着复制su命令到/system/xbin目录:

adb reboot recovery:在bootloader模式下直接进入,可通过音量下下键切换正常地系统,还是recovery模式

最后在Android设备的终端执行su命令提取root权限(在APP中调用su命令)。

记得好乱~~~






  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值