别看步骤多,我只是细分了下,还没图,认真看完,绝对有用
1.拷贝system.img到模拟器目录下
cp sdk目录下的system.img avd目录下
system.img一般位于这两个位置:
sdk根目录下的system-images/android-X/default/armeabi-v7a/
或者sdk根目录下的platforms/android-X/images/
avd目录一般是用户主目录下的~/.android/avd/x.x.x.avd
2.修改disk.systemPartition.initPath
disk.systemPartition.initPath位于avd目录下的hardware-qemu.ini文件,用vim或gedit打开修改为
disk.systemPartition.initPath =avd目录下的/system.img
3.打开模拟器:emulator -avd 你的模拟器名称 -partition-size 512 &
4.adb remount把android文件系统从只读变成可读写,adb remount执行不了的,可以换这个adb shell mount -o rw,remount /system或者这个 mount -o remount,rw -t yaffs2 /dev/block/mtdblock0 /system
5.移除SdkSetup.apk
adb shell //进入模拟器
cd system/app
rm SdkSetup.apk
这一个apk是一定要移除的,否则又会被还原
6.这一步就做你想对模拟器做的,比如移除系统应用等等,比如我们rm Phome.apk,如果成功,重启模拟器之后再到system/app下是看不到Phone.apk的
7.备份system.img
拷贝system.img的临时文件到avd目录下
这边解释一下为什么模拟器重启会被还原:第2步中的disk.systemPartition.initPath原本是指向sdk原来的镜像,模拟器开启的时候会拷贝一份镜像到临时文件夹中,这一份拷贝的镜像就是你模拟器运行的时候用到的镜像,所以你对模拟器所做的改变都是在这一份拷贝中,当模拟器重启的时候又根据disk.systemPartition.initPath指向到最原始的镜像,所以对模拟器的system目录所做的修改会被还原,所以我们才要修改disk.systemPartition.initPath
回到主线:cp 临时文件夹/android-XXX/emulator-xxx avd目录,3个大X是用户名,emulator-xxx就是system.img的临时拷贝镜像
windows的临时文件夹一般使这个:C:\Users\UserName\AppData\Local\Temp\AndroidEmulator\
linux的是这个:/tmp/
8.关闭模拟器
9.删除avd目录下的cache.img和usrdata-qemu.img
rm avd目录/cache.img
10.给avd目录下的临时镜像改名
mv emulator-xxx system.img
sudo chmod 755 system.img
11.重启看效果吧。
以后还还要改,重复3-10