http://www.claudxiao.net/2013/10/persistent-change-emulator-system-partition/

对Android的模拟器,如果要修改其system分区里的文件,除了remount之外,还需要对数据进行持久化——因为默认情况下emulator会以只读的形式加载system.img,即便remount之后对其进行的修改也不会实际被保存下来。

网络上提到多种解决这一持久化问题的方案。例如[1],将/system拷贝至清空后的/data分区,然后将相应的userdata-qemu.img改名为system.img;以及[2],对live的/system,通过yaffs工具将其dump为一个镜像文件。这些方法都比较复杂,下面介绍一种简单的方法,来自[3]。

1. 创建一个AVD,在这个例子里,我们用Android 4.2.2,命名为root。

2. 将SDK下这个系统的system.img文件拷贝至AVD的目录下一份,例如,在这里:

$ cp adt-bundle-mac/sdk/system-images/android-17/armeabi-v7a/system.img ~/.android/avd/root.avd/

3. 手工指定挂载参数地启动它:

$ emulator -avd root -qemu -nand system,size=0x1f400000,file=~/.android/avd/root.avd/system.img

其中,0x1f400000是指给/system分区500MB的空间。

4. 系统启动后,adb remount一下,然后通过adb mount可以看到system分区已经变为rw了。

5. 现在可以对/system分区做希望的修改了。

6. 修改完成后,关掉模拟器。之后正常启动即可:

$ emulator -avd root

之后如果再要对system做修改,重复第3-6步即可。

嗯,从AVD的名字大家已经可以看出来了,我是想在里面加个root。方法是:

1. 下载Chainfire的SuperSU的UPDATE zip包[4],并解压缩。

2. 在上述第5步,执行以下命令:

$ adb push arm/su /system/xbin/

$ adb chmod 06755 /system

$ adb chmod 06755 /system/xbin/su

$ adb install common/Superuser.apk

3. 在模拟器里,进入SuperSu,会提示更新二进制文件,选择常规方法即可。

参考链接

[1] http://allencch.wordpress.com/2012/02/29/learn-to-root-android-using-emulator/

[2] http://blog.thecobraden.com/2012/06/making-persistent-changes-to-android.html

[3] http://stackoverflow.com/questions/15417105/forcing-the-android-emulator-to-store-changes-to-system

[4] http://download.chainfire.eu/supersu

修改Android模拟器的system分区,以及加入SuperSU的更多相关文章

  1. 【Android】修改Android 模拟器IMSI

    修改Android 模拟器IMEI 在.....\android_sdk\tools文件下找到emulator-arm.exe,使用UltraEdit文本编辑器打开,搜索CIMI关键字,把310260 ...

  2. 【Android】修改Android 模拟器IMEI

    修改Android 模拟器IMEI 在.....\android_sdk\tools文件下找到emulator-arm.exe,使用UltraEdit文本编辑器打开,搜索CGSN关键字,把000000 ...

  3. 如何完全备份android在系统system分区和data分

    安德鲁斯系统备份是非常的情况下,可以使用.下面的这个python脚本.它可以用来备份整个data分:所有data分区的文件和文件夹打包data.zip.并产生recovery专用edify脚本upda ...

  4. 自动批改android模拟器的imei的小程序 和 下载各个版本SDK Tools及ADT

    ADT 22.6.0版本的下载路径是:http://dl.google.com/android/ADT-22.6.0.zip ADT22.6.1版本的下载路径是:http://dl.google.co ...

  5. MTK Android修改System分区

    Z:\rk3326_p_hq_rf8637sa\device\rockchip\common\BoardConfig.mk #Calculate partition size from paramet ...

  6. 【问题&解决】解决创建Android模拟器时提示"No system images installed for this target"的问题

    在创建Android模拟器时间发现提示“No system images installed for this target”问题,无法创建模拟器,如下图: 解决:经上网查证,发现原因在于CPU/AB ...

  7. adb如何连接mumu模拟器并修改Android ID

    adb工具下载安装 https://dl.google.com/android/repository/platform-tools-latest-windows.zip 参考:https://blog ...

  8. 【转】使用命令行方式创建和启动android模拟器

    原文网址:http://blog.csdn.net/tiandinilv/article/details/8953001 1.Android模拟器介绍 Android中提供了一个模拟器来模拟ARM核的 ...

  9. Android模拟器基本使用和常用工具介绍

    注:其中部分内容参考网上资源 1.Android模拟器介绍 Android中提供了一个模拟器来模拟ARM核的移动设备.Android的模拟器是基于QEMU开发的,QEMU是一个有名的开源虚拟机项目(详 ...

随机推荐

  1. iOS状态栏标志

    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES; //显示 [UIApplication sharedA ...

  2. pc或者微信上用pdf.js在线预览pdf和word

    最近项目要求pdf和word可以在线预览功能,pc端还好解决,但是微信端就有点坑了,pc端原来的思路是将文件转成base64,然后用html格式显示 ,但是微信端不支持, 这种方式就pass掉了,谷歌 ...

  3. python 将base64字符串还原成图片保存

    import os,base64 strs='''/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCI ...

  4. jquery 查找元素

    /************ 查找父元素 *************/ //closest()方法 $("#mytd1").bind("click",functi ...

  5. Js 省市联动

    function cn(){ this.Items = {}; } cn.prototype.add = function(id,iArray){ this.Items[id] = iArray; } ...

  6. MySQL 使用 SSL 连接(附 Docker 例子)

    查看是否支持 SSL 首先在 MySQL 上执行如下命令, 查询是否 MySQL 支持 SSL: mysql> SHOW VARIABLES LIKE 'have_ssl'; +-------- ...

  7. 卖座网一处SQL注射(Http Referer sqlinjection)

    漏洞作者: 猪猪侠 漏洞详情 披露状态: 2015-01-13: 细节已通知厂商并且等待厂商处理中2015-01-14: 厂商已经确认,细节仅向厂商公开2015-01-24: 细节向核心白帽子及相关领 ...

  8. flume+kafka

    这里演示在单机fulume环境下,kafka作为source ,chanel , sink时三种情况 下面的测试都是基于下面的基本的配置文件进行修改的 a1.sources = r1 a1.sinks ...

  9. Vim快捷键操作命令大全

        Vim是一个超牛的编辑器,命令功能十分强大 .而且这些命令大都可以进行组合 ,比如,9yy命令表示复制9行内容,9表示要复制的行数,同样100dd表示删除100行,当数字和命令合作的时候,就比 ...

  10. 通过http输出流的方式从将html写入到Excel

    private void HtmlResponseToExecl() { //将数据(html)导入到Excel中 Response.Charset = "gb2312"; Res ...