最近开发安卓项目,需要用到模拟器,找了很多,某神,某叠,还有大名鼎鼎的genymotion.
最终发现,还是用 AVD Manager
创建的好。
说远了,提到安卓开发,肯定或多或少用到root权限查看data/data/xxx.xxx/里的文件
不过上述那个4个模拟器,前两个自带有,后两个都不方便获取,我主要就是后两个
以下是从 android 模拟器root - 简书 转过来的内容
android 开发过程中程序很多时候免不了需要对系统目录下的内容进行操作,虽然android的内核是linux系统,但是在linux中切换到root下的方式是sudo root,但是在的android中并没有提供我们su文件。
So我们要向需要root的系统中添加su文件,同时改变su二进制文件的权限。
反正我会科学上网,默认咱都会哈 :)
将需要root的模拟器运行起来
我认为不如直接使用第三步启动就行,不然第二步之后,你还得把模拟器关了
在有 supersu.apk文件的目录处执行如下命令
cd过去啊,不然和咸鱼有啥区别
$ adb -e install {supersu.apk}
将super.apk 安装到模拟器中,安装好后不要急着运行此App
$ emulator.exe -avd [模拟器名字] -writable-system
模拟器名称可以使用 emulator -list-avds查看
以可写的方式运行模拟器,你应该在你的sdk目录下的tools文件目录下使用这句命令,因为在这下面才有emulator.exe程序
我就被这个坑了,其实你只要配置好了adb环境,不需要这么麻烦,直接emulator -avd {name} -writable-system就行了
将下载好的supersu.zip 文件解压,你能看到里面有很多文件夹中都包含su文件。我的模拟器模拟器是Androidx86,所以我在x86文件夹下找到su.pie文件,如果你的android版本是5.1和大于5.1版本的系统使用su.pie比su文件更合适,可以避免出现一些不必要的问题
有人问这个从哪看,不会度娘吗 :(
其实用AVD Manager创建的话那个ABI就是的
另外x86_64就是x64,不是x86
还有如果文件夹内没有su.pie,没必要一定找那个,su也可以的,只不过优先su.pie的意思
接下来你需要如下操作
$ adb root
$ adb remount
$ adb -e push C:\SuperSU-v2.79\x86\su.pie /system/xbin/su
在root状态下 adb remount 的意思是 重新挂载系统分区,使系统分区重新可写,一般情况下system下面的文件斯不允许只读的。通过push的方式将su.pie拷贝到/system/xbin/su文件中
我被这句话坑了很久才发现是优先su.pie的意思
现在我们需要获得通过adb去修改模拟器中su二进制文件的权限
$ adb -e shell
$ su root
$ cd /system/xbin
$ chmod 06755 su
如果你发现通过ls -l 看到你的su文件的权限是rwsr_x_x
了说明已经成功
现在我们需要安装su 二进制件(具体安装到什么地方我也不清楚,也许是安装到supersu.apk中吧? 我也不知道)同时将它设置为后台守护程序
$ su --install
$ su --daemon&
这一步的目的暂时我也没有仔细了解
设置SELinux的限制,主要是关闭SELinux,这个命令的具体执行位置没有具体的固定,但貌似在最后执行没有什么问题
$ setenforce 0
到这里,我的android模拟器似乎已经完成的root,重新打开android模拟器,点击运行supersu程序(也就是刚才安装到你android系统中的程序),打开和可能它会提示你更新,你可以直接忽略直接使用。然后你的系统就已经完成root了,可以做一些涉及到系统的操作了。
如果最后点击supersu App时提示的是找不到su文件说明,你的su文件可能是不匹配,或者是因为你在没有将su文件的设置进行完整就打开了supersu App。哈哈可以尝试一下卸载supersu App,重从头开始以上的几个步骤。
作者:武旦小生
链接:https://www.jianshu.com/p/1d3bb2c897f3
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
好了,转载的到此为止,以下是我自己总结的
首先,root后的模拟器,如果是AVD Manager
创建的,可能会遇到无法使用AVD Manager
再次启动,此时需要使用命令启动
$ emulator.exe -avd [模拟器名字] -writable-system
没错,和 第三步 一样的。然后就是如果你命令行关闭了。。。嗯,模拟器也就关了
android 模拟器root - 简书 https://www.jianshu.com/p/1d3bb2c897f3