修改Android模拟器的system分区,以及加入SuperSU

 

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

时间: 2024-08-30 03:50:12

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

修改Android模拟器的host文件

PS:最近在用html5做移动端开发,用到了android模拟器,请求api时,需要修改host文件,查找资料,找到解决办法,将步骤记录下来.. 1.使用cmd命令进入相应sdk的tools文件夹下 2.执行 emulator -avd avdname -partition-size 128 命令启动模拟器 3.使用 cd..(返回上一级)进入platform-tools目录下 4.执行 adb root 命令,等待提示成功 5.执行 adb remount 命令 5.执行 adb pull /

修改android模拟器的路径

如果在eclipse中创建了多个AVD,是会占用大量的存储空间的,而默认的创建路径是在C盘,我们可以把已经创建的AVD剪切到自己指定的文件夹下. (1)默认情况下模拟器在C:\Users\XXXXXXXX\.android目录我们可以把.android剪切到指定的文件加下. (2)第一步完成后,模拟器并不能使用,eclipse提示找不到AVD,我们需要增加环境变量:修改.android\avd目录下面的.ini文件 (3)修改.android\avd目录中的.ini文件,将path修改为正确的路

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

安德鲁斯系统备份是非常的情况下,可以使用.下面的这个python脚本.它可以用来备份整个data分:所有data分区的文件和文件夹打包data.zip.并产生recovery专用edify脚本update-script.sh. 当然,备份system分区了,假设再加上几行代码,就能够备份boot,recovery,uboot等等分区.只是这要依据不同的分区来写不同的备份代码: backup.py import sys import os from os.path import join from

修改Android 设备号

/** * 判断是否是模拟器 * @return */ public static boolean isEmulator() { /** * 还有其他情况: * 比较 IMSI * 模拟器的imsi(2.2 为 310260000000000) * * 修改Android 模拟器IMSI * 在.....\android_sdk\tools文件下找到emulator-arm.exe,使用UltraEdit文本编辑器打开,搜索CIMI关键字,把310260000000000 改成你自己想要的IMS

自动批改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.com/android/ADT-22.6.1.zip SDK Tools r22.6版本的下载路径是:http://dl.google.com/android/android-sdk_r22.6-windows.zip SDK Tools r22.6.1版本的下载路径是:http://dl.google

如何完全备份android系统上的system分区和data分区

安卓的系统备份在很多场合下可能会用到,下面这个python的脚本,可以用来备份整个的data分区:将所有data分区的文件和目录打包到data.zip,并生成recovery的专用edify脚本到update-script.sh.当然,简单的修改下脚本的备份路径就可以备份system分区了,如果再加上几行代码,就可以备份boot,recovery,uboot等等分区,不过这要根据不同的分区来写不同的备份代码: backup.py import sys import os from os.path

Android System分区大小异常

平台:Freescale / Android 4.2.2 问题描述: 用 df 命令,看到/system分区大小275M. 用 busybox fdisk -l /dev/block/mmcblk0p5,看到 536M. Freescale的刷机工具是Mfgtool,分区的动作在mksdcard-android.sh里面完成. SYSTEM_ROM_SIZE=512 dd if=/dev/zero of=${node} bs=1024 count=1 sfdisk --force -uM ${n

android 模拟器修改默认路径问题

问题产生: 当在本地配置好自己的avd的时候(因为本地可以有图形界面,当ssh连接到机房服务器时,只能是无界面的,所以需要先在本地配置好),发送到服务器时,avd想放到和工程一个目录,而不是当前默认的~/.android/avd下,所以遇到找不到avd的问题, 1.知识点(翻译自官方文档) avd文件的默认位置 当创建一个avd时,android 工具会在开发的电脑上创建一个专用的目录存放avd,目录包括avd配置文件.用户数据镜像.sd卡镜像及设备相关的其他文件.需要注意的是,这个目录不包括系

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

在创建Android模拟器时间发现提示“No system images installed for this target”问题,无法创建模拟器,如下图: 解决:经上网查证,发现原因在于CPU/ABI选项无法选择,并显示“No system images installed for this target”,也就是没有适合的系统镜像,即SDK中对应的Android版本没有下载系统镜像,如下图: 下载安装好了之后,重启Eclipse,问题解决,如下图: