`
yanghaoli
  • 浏览: 288523 次
社区版块
存档分类
最新评论

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

 
阅读更多

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

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。

2
1
分享到:
评论

相关推荐

    手机强制开启USB调试模式

    USB调试是Android系统提供的一种开发者选项,用于帮助程序员在设备上进行应用测试和系统调试。在默认情况下,这个功能是关闭的,因为它涉及到设备的安全性和隐私保护。然而,当需要安装自定义应用、获取Root权限或者...

    Root精灵ROOT前如何打开USB调试模式.docx

    Android 作为一个广泛使用的移动操作系统,其 USB 调试模式的开启对于开发者和 Root 用户来说非常重要。本文档将总结 Android 不同版本下的 USB 调试模式开启方法。 一、Android 2.1 ~ 2.3.7 系统下的 USB 调试模式...

    Android OTG USB 串口通信 示例,不需要使用root 权限

    总的来说,Android OTG USB串口通信不需要root权限,只需要正确地注册BroadcastReceiver,利用UsbManager和开源库,就可以安全、高效地实现设备间的串口数据传输。通过这样的方式,开发者可以为用户带来无需复杂设置...

    Android代码-ADB 网络调试

    **Android代码 - ADB网络调试** ADB(Android Debug Bridge)是Android开发者不可或缺的工具,它允许开发者通过USB或网络在电脑上与Android设备进行通信,进行各种调试操作,如安装应用、运行命令、查看设备日志等...

    android手机通过电脑USB上网

    总结起来,USB tethering是Android设备和电脑之间共享网络连接的一种方式,允许设备互相借用网络。无论是正向还是反向tethering,都需要对设备设置和可能的第三方工具有一定的了解和操作。在执行这些操作时,务必...

    android.hardware.usb.accessory.xml和android.hardware.usb.host.xml

    做usb accessory通信时,myUsbManager.getAccessoryList();return null,说是少文件。解决办法是先root手机,然后把这两个文件推送到手机的/system/etc/permissions目录下。

    一键root提取刷写固件工具箱v1.7-wifi和USB兼容版

    一键root提取刷写固件工具箱v1.7_wifi和USB兼容版

    android 请求root权限

    在Android系统中,根权限(root权限)是一个高级权限,允许用户访问系统级别的文件和功能,这在默认情况下是被禁止的。对于开发者或者高级用户来说,获取root权限能够实现更多的自定义和优化操作,例如修改系统文件...

    安卓ROOT工具-几乎可以ROOT所有android手机

    万能ANDROID系统ROOT工具,几乎可以ROOT所有ANDROID手机!

    Android手机如何通过USB使用电脑宽带上网

    使用 Android 手机通过 USB 连接电脑实现宽带上网需要四个步骤:开启 USB 调试模式、USB 绑定、电脑端设置网络分享和设置 IP、子网掩码、DNS。通过这些步骤,可以成功地使用 Android 手机通过电脑的宽带上网。

    小软件 usb调试助手1.2版.rar

    综上所述,USB调试助手1.2版是一个面向Android开发者的实用工具,它简化了USB调试过程,提供了丰富的辅助功能,使得开发者能更高效地进行应用开发、测试和调试工作。由于没有具体的标签信息,以上内容主要基于标题和...

    Android实时投屏软件,此应用程序提供USB连接的Android设备的显示和控制 它不需要任何root访问权限

    总之,这款Android实时投屏软件充分利用了Android系统的开放性,通过USB或TCP/IP连接实现了无需root权限的屏幕镜像和控制功能。它的核心技术涉及ADB调试、屏幕捕获、视频编码、网络传输以及远程控制等多个方面,展示...

    android 2.3.7及以上-root工具

    2. **启用USB调试**:在设备的开发者选项中,开启USB调试,以便电脑与设备连接并执行root操作。 3. **安装驱动**:确保电脑上安装了正确的设备驱动程序,以便正确识别手机。 4. **运行root脚本**:运行`root.bat`...

    android 获取root权限工具

    对于开发者来说,获取root权限能够更深入地调试和优化应用程序,而对于普通用户,root权限则意味着更大的自由度和定制化能力。本工具专注于帮助Android用户简单有效地获取root权限。 首先,让我们了解一下什么是USB...

    android获取root权限

    然后,我们需要确保机器里有 SD 卡,打开了 USB 调试模式,机器中已经装了 Android 设备的驱动。接着,我们需要用命令 adb push update-hero-signed.zip /sdcard/update.zip 将 update-hero-signed.zip 放在 SD 卡上...

    Android 模拟器永久root工具

    Android 模拟器永久root工具------包含 (android for img.rar、Android SU文件更新包.zip、RootExplorer.apkSuperuser.apk) 1、用android for img.rar里的android for img.exe打开 E:\SDK\platforms\android-8\...

    Android实时投屏软件,此应用程序提供USB(或通过TCP/IP)连接的Android设备的显示和控制

    QtScrcpy 可以通过 USB / 网络连接Android设备,并进行显示和控制。无需root权限。 同时支持 GNU/Linux ,Windows 和 MacOS 三大主流桌面平台。 它专注于: 精致 (仅显示设备屏幕) 性能 (30~60fps) 质量 (1920×...

    Android Usb 3g dongle 整包

    总的来说,Android Usb 3g Dongle整包包含了与3G USB Dongle相关的所有必要组件,包括驱动程序和管理工具,使得开发者和高级用户能在Android 6.0设备上轻松建立3G网络连接。不过,这个过程可能需要一定的技术知识,...

    rk-android9.0-root补丁(rootservice方式).rar

    RootService是一种在Android系统中实现root权限管理的服务,允许开发者在用户权限下运行需要root权限的任务,同时保持系统的稳定性和安全性。 【描述】描述中的内容与标题一致,主要强调这是一个针对rk-android9.0...

    android与PC通过USB通信,获取IMEI号

    1. 连接Android设备到PC:确保USB调试模式已启用(在设备的"开发者选项"中)。然后,通过USB连接手机和电脑。 2. 安装ADB:下载并安装适用于你的操作系统的ADB工具。将ADB添加到系统环境变量,以便在任何目录下都能...

Global site tag (gtag.js) - Google Analytics