本文转载自:http://quantoubao.blog.163.com/blog/static/2083211702013870501987/

安装Android SDK安卓模拟器的方法很简单,网上大把,傻瓜式的。不过对其root的方法,网上的版本就不那么好使了。网上的方法从方向性来说是没错的,就是细节没给讲清楚,或者讲错,或者没提到这样root方式对高低不同版本API的区别,导致不少人跟着所谓教程去做都root失败。

  我这里以Android4.0.4(API15)为蓝本讲讲适合高版API的Android SDK虚拟机的root方法,很简单的。

  没有root之前是这样的,帧缓冲无内容。

  Root的第一步,准备工具。就两个文件。①上网搜一个叫做《YAFFS2IMG》的镜像浏览器,暂时建议用1.5版,2.0版我下载几款(当然不是Z版)似乎都有问题。②上这个网址,就是Superuser设计者的网站androidsu.com,下载对应自己模拟器版本的超级授权用户文件(该页面下方有其压缩包)。所谓对应版本,一方面是对应模拟器模拟的CPU版本,是ARM的还是x86的,不能选错。如果你模拟时选了MIP的CPU,那就死了root这条心吧。目前互联网上铺天盖地的教程都没讲清楚这点,还在文中引用第三方下载点的文件,是导致新手操作失败的罪魁祸首!另一方面就是选适合自己模拟器模拟系统的版本,以目前androidsu.com提供的最新正式版破解文件来看,适合Android2.0-4.1的。对于更旧版的(好像没什么root的意义了)可找它的历史版本;对于更新版的可以考虑它的测试版或再等一段时间。下载的话,只要下那个Superuser包即可,已经含有齐全的文件。

  Root的第二步,用《YAFFS2IMG》将虚拟机子目录“system-images”内对应目标模拟器使用的系统镜像目录(我这里是“android-15\armeabi-v7a”)内的“system.img”打开。将其根目录下的“build.prop”文件提取到硬盘,用文本编辑工具(如记事本)打开,将其“ro.config.nocheckin=yes”一行删掉。当然,行头加“#”号注释掉也可以,似乎多余。再把改完的“build.prop”导入回镜像中的原来位置替换原文件。记住,把文件权限设为“0644”。必须记住,这里只能是“0644”,别依据其它教程讲的其它权限!

  Root的第三步,把第一步下载的Superuser压缩包解开,把里头的一个叫做“su”(无扩展名)的文件导入第二步打开的镜像“bin”目录里,把权限设为“6755”。再把这个“su”导到“xbin”目录中,如果遇到已存在旧文件,直接覆盖,且把权限设为“0755”。记住,前一个是“6755”,后一个是“0755”。别弄错了!网上害人的教程,要么把权限说错(可能它设的权限适合旧旧旧版本的SDK模拟器),要么讲漏了“xbin”这个目录!然后把解压缩包中的“Superuser.apk”导入到镜像的“app”目录中,设权限为“0644”,也不能错!

  Root的最后一步,把修改的镜像保存,选择“无ECC/没有FFFF标志”这组参数组合。

  得了,这就是Root后的景况。一劳永逸。

  上面提到的文件修改别指望在虚拟机中完成,一重启虚拟机就没了。就算用了快照,对其它引用同镜像的AVD也无效。还是这样改镜像最妥当,改一下就全部同镜像的AVD都生效。本方法对安卓 SDK模拟的4.0/4.1可用,至于4.2/4.3,等有新版su再试吧。

请看后续文段《Android SDK模拟器Root方法进阶

前文再续,书接上一回(《Android SDK模拟器对4.0.4等高版API的简易Root方法》)。话说目前讲的Android SDK模拟器虚拟机Root的话,大多用androidsu.com的Superuser方案。事实上用其它su也未尝不可,方法很简单。

  准备工夫除了前文提到通用的《YAFFS2IMG》浏览器外,就是每个权限管理工具的apk文件与对应的su文件。

  通用的处理手法就是(实机同样Root方法,实机系统用RE工具或连电脑跑adb命令,虚拟机系统用YAFFS2IMG):

  ⑴参照我旧文第2步。

  ⑵将apk文件主文件名改为其原始完整包名,可用幸运破解器看对应包的“Package name”。

  ⑶将改名后的apk文件塞到目标系统的“system\app”里,权限取0644。

  ⑷将apk文件用解压缩工具解包,看里头有没有lib目录,有的话,将里头对应cpu目录(armeabi或x86或mip)里的所有文件塞到目标系统的“system\lib”里,权限全取0644。

  ⑸把su文件放相应位置,并修改权限。根据不同的Root工具,这有几样情况——

   ①只放“system\bin”,权限是0755,“system\xbin”不得有su。

   ②只放“system\bin”,权限是6755,“system\xbin”不得有su。

   ③只放“system\xbin”,权限是0755,“system\bin”不得有su。

   ④只放“system\xbin”,权限是6755,“system\bin”不得有su。

   ⑤既放“system\bin”,权限是0755;又放“system\xbin”,权限是0755。

   ⑥既放“system\bin”,权限是6755;又放“system\xbin”,权限是0755。

   ⑦既放“system\bin”,权限是0755;又放“system\xbin”,权限是6755。

   ⑧既放“system\bin”,权限是6755;又放“system\xbin”,权限是6755。

   例如,对于androidsu.com的方案,要采用情况⑥;对于eu.chainfire.supersu的方案,必须采用情况④。其它Root方案类似。上面讲的不得有su的状态是指虚拟机,因为虚拟机是写镜像,与系统虚拟操作无关,而实机会在重启时自动处理掉这多余的su。

  ⑹重启目标系统验收成果。

附上IntelX86的su文件:Superuser-3.1.3-x86-signed.zip

附上yaffs2img浏览器:yaffs2img浏览器

超简单,安卓模拟器手动root的更多相关文章

  1. 安卓模拟器研究-root

    http://www.bluestacks.cn/index.asp 下载最新的 BlueStacks 尝试了很久都没有root成功. 百度搜索  找到经验文档 http://jingyan.baid ...

  2. adb连接安卓模拟器

    为了在电脑上玩手机游戏,国内推出了很多安卓模拟器,mumu.夜神.itools.海马等等.我们也可以用他们来做安卓开发,相对genymotion或者android studio自带的模拟器而言,国产模 ...

  3. 超简单让.NET Core开发者快速拥有CI/CD的能力-Docker版本

    超简单让.NET Core开发者快速拥有CI/CD的能力-Docker版本 前言 上一篇自动化测试,全面且详细的介绍了从零开始到发布版本的步骤,这是传统的方式,本次为大家带来的是如何在5分钟内使用上d ...

  4. 使用fiddler和安卓模拟器抓取安卓客户端数据包

    安卓模拟器要选可以桥接网络的,本文中用的是雷电模拟器. 软件的安装都很简单,在此不再赘述. fiddler中的设置 首先,打开fiddler,点击Tools选项卡下的Options. 切换到https ...

  5. 超简单的CDH6部署和体验(单机版)

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  6. 超简单的JNI——NDK开发教程

    不好意思各位,我按照网上一些教程进行JNI开发,折腾了半天也没成功,最后自己瞎搞搞定了,其实超简单的,网上的教程应该过时了,最新版的AS就包含了NDK编译的功能,完全不用手动javah,各种包名路径的 ...

  7. Android Studio 1.0.1 + Genymotion安卓模拟器打造高效安卓开发环境

    我们开发安卓大多是使用Eclipse和安卓SDK中自带的安卓模拟器.当然,Google早就推出了自己的安卓开发环境——Android studio,在不久前,Google发布了Android Stud ...

  8. mysql主从复制(超简单)

      mysql主从复制(超简单) 怎么安装mysql数据库,这里不说了,只说它的主从复制,步骤如下: 1.主从服务器分别作以下操作:  1.1.版本一致  1.2.初始化表,并在后台启动mysql  ...

  9. 超简单的NDK单步调试方法

    令人兴奋的是,ADTr20已经支持JNI单步调试,再也不需要如上这么麻烦的步骤了 你现在需要做的只需以下2步: 1.使用ndk-build编译时,加上如下参数NDK_DEBUG=1,之后生成so文件之 ...

随机推荐

  1. LL(1)算法

    编译原理的语法分析中一个入门的算法就是LL(1)算法了,这里做一个总结.首先比较重要的是FIRST集和FOLLOW集合的生成. 先上个例子吧: 首先说一下FIRST集的生成,这个就要看产生式右部对应的 ...

  2. Jsp 错题分析

    ArrayList删除元素通过RemoveAt(int index)来删除指定索引值的元素 运行时异常都是RuntimeException类及其子类异常,如NullPointerException.I ...

  3. java并发编程学习: 守护线程(Daemon Thread)

    在正式理解这个概念前,先把 守护线程 与 守护进程 这二个极其相似的说法区分开,守护进程通常是为了防止某些应用因各种意外原因退出,而在后台独立运行的系统服务或应用程序. 比如:我们开发了一个邮件发送程 ...

  4. 记一次事件委托在 ios 下的兼容 bug

    项目中碰到的兼容类 bug,记录一二. 页面上有几个同类型的控件,点击它们会触发一些事件,很显然,事件委托优于批量绑定.为了图方便,我将 click 事件绑定到了 document.body 上(绑定 ...

  5. python基础-牛逼的三层循环,实现想在那里退出,就在那里退出。

    #!/usr/bin/env python # -*- coding:utf-8 -*- #Author: nulige tag=True #设置tag控制他,只要一输入Flash就退出整个循环 wh ...

  6. JavaScript语法规范

    推荐的JavaScript编码规范 阅读 247 评论 0 喜欢 0 作为前端开发人员,我相信每一个人都或多或少的用到原生的JavaScript,也正是因为用的人多,导致编码风格也是多种多样的,而不规 ...

  7. RPC

    那是N年前的一天,老王在看一本讲java的技术书(可惜忘了叫啥名字了),突然看到有一章讲RMI的,立马就觉得很好奇.于是乎,就按书上所讲,写了demo程序.当时也就只知道怎么用,却不知道什么原理.直到 ...

  8. Thinking in java学习笔记之持有对象总结

  9. noip2016十连测round1

    A:String Master 题目:所谓最长公共子串,比如串 A:"abcde",串 B:"jcdkl",则它们的最长公共子串为串 "cd" ...

  10. 在WildFly中运行多个standalone模式的实例

      WildFly作为一款优秀的EJB容器,其前身为JBoss AS.JBoss作为一款开源的应用服务器,被广泛的应用在各种项目当中.假设我们现在有这样一个项目,他是以standalone的模式运行在 ...