本文主要讲如下两个内容。

1.  如何让一部Android手机带两台PC进行调试。

2.  如何完美Root Android手机。

我曾经遇到过这样的问题,Mac OS X上测试Android的系统程序,大家都知道,Android源代码的编译通常需要Ubuntu Linux,所以在Mac OS X上安装了Vmware ubuntu。这样本没什么问题。将Android手机与MBP相连,系统会提示连接Mac OS X,还是Ubuntu。不过这有一个问题,就是ubuntu和mac os x同时只能连接一个。由于某些需要,要用到Mac OS X上的Eclipse编写Android应用,也能安装在同一部Android手机上,这就很郁闷,单单通过USB线只能连接一台PC(包括虚拟机)。

从技术上说,adb完全有这个能力使一部Android手机连接到两台PC上,不过可能大多数读者用的ROM是官方,为了安全起见,将该功能关了。如果读 者使用了最新的CM ROM(cm10.1,可能老的版本也有该功能,这个还没测试),就会发现在设置的“开发者选项”中多了一个“网络ADB调试”。如图1所示。这可是梦寐 以求的功能。

图1

选择“网络ADB调试”选项。然后记住下面的ip和端口号。在一台机器上用USB线连接手机,Eclipse的devices列表就会显示该手机已连接成功。如果仍然用当前PC通过网络连接ADB,需要执行下面的命令(PC与手机在同一网段)。

adb kill-server

adb connect 192.168.17.103:5555

如果一切正常,就已经连上了,打开Eclipse,会在devices列表看到如图2的设备。

图2

其实这两个设备是一个,只是上边那个通过网络连接的手机,下边那个通过USB线连接的手机。现在运行程序,仍然会看到要求选择运行设备,如图3所示。

图3

其实现在选哪个都行,因为这两个设备只是通过不同方式与PC连接。

如果在不同的PC上(或PC和虚拟机),一个通过USB线,一个通过网络。两台机器中的eclipse就可以在同一部手机上调试程序了,是不是很爽呢!

如果要断开网络adb连接,执行adb disconnect命令。

要注意,这一操作比较危险,一旦选择“网络adb调试”,只要同一网段的其他用户获知IP和端口号,就可以任意操作你的手机,而且不会有任何提示。甚至是在地球的另一端(只要你们在同一个网段,包括VPN)。

现在进入第二个主题,如果完美获取Android手机的ROM。由于前面使用的是CMROM(不知道CM ROM是什么的上网自己查),所以这里仍然讨论CM ROM的root过程。

可能刚一接触Android手机的读者会感觉root一部手机很复杂,其实再简单不过了。Root的基本原理就是在Android系统的/system /xbin目录放一个su命令。用过su的linux用户都知道su是什么东西,一个提取root权限的命令。如果读者用的是CM ROM,在/system/xbin目录已经有了su命令。而且在设置里可以打开root权限(cm的低版本直接就打开了root权限),所以使用CM ROM,这一步可以省了。当然,如果使用的不是CM ROM,也好吧。下一个CM ROM压缩包,将里面的杂七杂八的东西都删掉(包括内核镜像boot.img),只保留system/xbin目录中的su文件(该文件也可以上网找一个 现成的,或直接编译android源代码中的su也可以,默认是不带这个命令的)和META-INF目录,然后重新打包成update.zip。然后最好 刷一个clockworkmod recovery,这个比较好,update.zip不需要签名验证就可以刷。之后就可以在recovery模式下刷update.zip了。这个 update.zip并不是完整的ROM,只是一个升级包,目的是将su文件放到/system/xbin目录中(该目录没有root权限是只读的)。刷 完后,进入手机的shell(adb shell),然后执行su,发现原来的$变成了#,表明已经是root了,当然,有些目录还是不可写,例如,为了使system及其子目录可写,需要再 次执行下面的命令。

mount –o rw,remount /system

现在还有一个问题,就是通过adb shell进入Shell,默认仍然是$,这就有些麻烦,因为对于程序员来说,需要调试系统程序,要用adbremount命令使/system/app 目录变成可写的,然后可用adb push命令直接将apk文件上传到该目录。但如果默认不是root,是不能执行该命令的(权限不允许)。所以我们还需要做另外一件事,就是修改 Android系统根目录的default.prop的内容,通常可以改成如下内容。

ro.adb.secure=0
ro.secure=0
ro.allow.mock.location=1
ro.debuggable=1
persist.sys.usb.config=mass_storage,adb
persist.service.adb.enable=1

最大的问题就是default.prop是内存文件,改了也没用,一重启就会恢复原样,而且只有重启才能生效(好像进入了二难推理)。所以修改 default.prop文件的方法是直接修改boot.img文件。该文件由两部分组成:zImage和ramdisk.img。其中zImage就是 linux内核的二进制文件。ramdisk.img是内存磁盘镜像。该镜像中就包含了被称为Android第一个运行的程序init。 default.prop文件也包含在该镜像中。下面就需要android源代码和linux内核源代码了。强烈建议使用CM提供的源代码,因为CM团队 已经为我们进行了完美的适配,所以只需要修改与业务相关的内容即可。现在让我们向CM团队致敬。

Android源代码编译后,在out目录的相关子目录录生成了一个root目录,该目录中的内容就是ramdisk.img文件解压后的内容。现在找到default.prop文件,并安着上面的内容修改该文件。然后使用下面的命令重新生成ramdisk.img文件。

mkbootfs root | minigzip > /ramdisk.img

接下来使用下面的命令重新生成boot.img文件。

mkbootimg --kernel kernel  --ramdisk ramdisk.img -o boot.img

其中kernel是内核二进制文件,与zImage完全一样。只是编译android源代码时将其命名为

ok, 现在可以进入bootloader模式,然后重新执行fastboot flash bootboot.img刷内核镜像,然后再重启手机,现在进入shell,ok,默认就是#了。退出shell,执行adb remount。就可以用adb push上传文件到/system的其他目录了,如/system/app。

转载于:https://www.cnblogs.com/nokiaguy/archive/2013/05/05/3061431.html

Android双机(网络和USB)调试及其完美ROOT相关推荐

  1. android 4.0.4 usb调试,安卓手机4.0怎么打开usb调试?图文详解附视频

    安卓手机更新换代的太快,系统每次升级多少会有点不同 总会有那么点不适应,就连如何调试USB都不知道怎么设置了? 下面就来就讲讲目前主流品牌手机4.0手机USB调试. 大部分Android设备打开&qu ...

  2. android手机怎样开启usb调试模式,Android手机USB调试在哪?安卓手机如何打开USB调试模式?...

    Android手机USB调试在哪?安卓手机如何打开USB调试模式?如果我们要将安卓手机连接到电脑上,从而传输文件.下载应用或ROOT等,都需要打开手机的USB调试模式.安卓系统的版本有很多,它们的打开 ...

  3. 网络机顶盒usb调试模式打开

    1.进入[设置]--[关于设备]--找到[版本号],连续点击版本号7次: 2.返回上一步,就会多了一个[开发人员选项]的菜单: 3.打开[开发人员选项],即可找到[USB调试]了. 网络机顶盒(Net ...

  4. Android Studio 真机USB调试教程(超详细)

    Android Studio 真机调试 笔者以自己的HUAWEI P40为例 一.手机设置开发者模式 手机->设置----->关于手机 连续点击版本号,之后会让你输入锁屏密码,然后手机进入 ...

  5. android手机怎样开启usb调试模式,智能手机usb调试在哪_usb调试模式怎么打开

    标签:小米(194)HTC(27)三星(1202)手机(807) 打开各手机论坛,看到许多朋友在问usb调试在哪?usb调试模式怎么打开?"USB调试"是Android系统提供的一 ...

  6. Android 代码实现打开USB调试?

    Step1:添加权限: 在AndroidManifest.xml加上两个权限 < uses-permission android:name = "android.permission. ...

  7. android机上没有usb调试模式吗,如何在Android上启用USB调试

    Android系统的手机以及平板电脑占有巨大的市场份额,当使用USB数据线完成电脑端与安卓手机端数据传输时,需要将安卓手机开启USB调试模式. 什么是USB调试?USB调试是一种模式,允许Androi ...

  8. 安卓手机USB调试模式打开方法

    USB 调试模式是安卓系统提供的一个用于开发工作的功能,使用该功能可以在电脑和安卓设备之间复制数据.在安卓设备上安装游戏软件等等.默认情况下,USB 调试模式是关闭的,所以需要手动打开它.打开了 US ...

  9. 开启usb调试的手机如何去除屏幕锁密码

    今天公司的一个测试手机莫名其妙的上了屏幕锁,也不知道谁弄的,试了几个常用的密码也无法匹配. 直接恢复出厂设置,里面好多测试应用和测试资料都会丢失.万般无奈之下,只有尝试手动去除锁屏密码. 上网找了一些 ...

最新文章

  1. shell 10流程控制
  2. 详细介绍jQuery.outerWidth() 函数具体用法
  3. 单元测试:unittest.TestCase
  4. python设计模式14-命令模式
  5. 遍历进程链表,打印pcb相关字段的内核模块
  6. python定义变量字符串_Python学习笔记二(变量和字符串)
  7. FlowDocumentPageViewer
  8. js面向对象的程序设计 --- 中篇(创建对象) 之 原型模式
  9. 考研408 完整知识点篇2.0版
  10. 商城项目测试用例设计实战
  11. Microsoft edge兼容性问题
  12. day2 数据分析思维课
  13. 丹佛机场行李系统案例分析
  14. 什么是WEB应用waf防火墙和DDOS高防IP?
  15. 分布式电商项目十四:Vue前端框架简介及使用
  16. ART-PI调试记录----重力感应无线智能小车第二弹之OneNet+板载wifi控制电机转动
  17. vue3 动态传值给子组件
  18. elasticsearch性能测试工具rally深入详解
  19. java设计求圆的面积周长的代码_java编程 1.设计一个求圆的面积和周长的类,要求:1计算当半径r=10和20时,圆的面积,并显示出来 、...
  20. 微信小程序实现上传视频功能

热门文章

  1. 视力检查-2019年2月2日
  2. 使用TPU的注意事项
  3. 《Flask Web开发——基于Python的Web应用开发实践》代码使用方法
  4. OpenCV, 名校机器学习相关课程
  5. 教你从头写游戏服务器框架
  6. python json.loads json.dumps(ensure_ascii = False) 汉字乱码问题解决
  7. XII Open Cup named after E.V. Pankratiev. GP of Eastern Europe (AMPPZ-2012)
  8. golang中的类和接口的使用
  9. Thinking In Java 第四章 控制执行流程
  10. 2016-7-4收藏夹接口