小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Android雙機(網絡和USB)調試及其完美ROOT

 昵稱3884271 2015-11-20

本文主要講如下兩個內容。

1.  如何讓一部Android手機帶兩臺PC進行調試。

2.  如何完美Root Android手機。

    我曾經遇到過這樣的問題,Mac OS X上測試Android的系統(tǒng)程序,大家都知道,Android源代碼的編譯通常需要Ubuntu Linux,所以在Mac OS X上安裝了Vmware ubuntu。這樣本沒什么問題。將Android手機與MBP相連,系統(tǒng)會提示連接Mac OS X,還是Ubuntu。不過這有一個問題,就是ubuntu和mac os x同時只能連接一個。由于某些需要,要用到Mac OS X上的Eclipse編寫Android應用,也能安裝在同一部Android手機上,這就很郁悶,單單通過USB線只能連接一臺PC(包括虛擬機)。

   從技術上說,adb完全有這個能力使一部Android手機連接到兩臺PC上,不過可能大多數(shù)讀者用的ROM是官方,為了安全起見,將該功能關了。如果讀 者使用了最新的CM ROM(cm10.1,可能老的版本也有該功能,這個還沒測試),就會發(fā)現(xiàn)在設置的“開發(fā)者選項”中多了一個“網絡ADB調試”。如圖1所示。這可是夢寐 以求的功能。

                          圖1

      選擇“網絡ADB調試”選項。然后記住下面的ip和端口號。在一臺機器上用USB線連接手機,Eclipse的devices列表就會顯示該手機已連接成功。如果仍然用當前PC通過網絡連接ADB,需要執(zhí)行下面的命令(PC與手機在同一網段)。

   adb kill-server

   adb connect 192.168.17.103:5555

   如果一切正常,就已經連上了,打開Eclipse,會在devices列表看到如圖2的設備。

                                             圖2

       其實這兩個設備是一個,只是上邊那個通過網絡連接的手機,下邊那個通過USB線連接的手機?,F(xiàn)在運行程序,仍然會看到要求選擇運行設備,如圖3所示。

                                                             圖3

其實現(xiàn)在選哪個都行,因為這兩個設備只是通過不同方式與PC連接。

      如果在不同的PC上(或PC和虛擬機),一個通過USB線,一個通過網絡。兩臺機器中的eclipse就可以在同一部手機上調試程序了,是不是很爽呢!

     如果要斷開網絡adb連接,執(zhí)行adb disconnect命令。

    要注意,這一操作比較危險,一旦選擇“網絡adb調試”,只要同一網段的其他用戶獲知IP和端口號,就可以任意操作你的手機,而且不會有任何提示。甚至是在地球的另一端(只要你們在同一個網段,包括VPN)。

現(xiàn)在進入第二個主題,如果完美獲取Android手機的ROM。由于前面使用的是CMROM(不知道CM ROM是什么的上網自己查),所以這里仍然討論CM ROM的root過程。

     可能剛一接觸Android手機的讀者會感覺root一部手機很復雜,其實再簡單不過了。Root的基本原理就是在Android系統(tǒng)的/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文件(該文件也可以上網找一個 現(xiàn)成的,或直接編譯android源代碼中的su也可以,默認是不帶這個命令的)和META-INF目錄,然后重新打包成update.zip。然后最好 刷一個clockworkmod recovery,這個比較好,update.zip不需要簽名驗證就可以刷。之后就可以在recovery模式下刷update.zip了。這個 update.zip并不是完整的ROM,只是一個升級包,目的是將su文件放到/system/xbin目錄中(該目錄沒有root權限是只讀的)。刷 完后,進入手機的shell(adb shell),然后執(zhí)行su,發(fā)現(xiàn)原來的$變成了#,表明已經是root了,當然,有些目錄還是不可寫,例如,為了使system及其子目錄可寫,需要再 次執(zhí)行下面的命令。

mount –o rw,remount /system

      現(xiàn)在還有一個問題,就是通過adb shell進入Shell,默認仍然是$,這就有些麻煩,因為對于程序員來說,需要調試系統(tǒng)程序,要用adbremount命令使/system/app 目錄變成可寫的,然后可用adb push命令直接將apk文件上傳到該目錄。但如果默認不是root,是不能執(zhí)行該命令的(權限不允許)。所以我們還需要做另外一件事,就是修改 Android系統(tǒng)根目錄的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團隊 已經為我們進行了完美的適配,所以只需要修改與業(yè)務相關的內容即可。現(xiàn)在讓我們向CM團隊致敬。

       Android源代碼編譯后,在out目錄的相關子目錄錄生成了一個root目錄,該目錄中的內容就是ramdisk.img文件解壓后的內容?,F(xiàn)在找到default.prop文件,并安著上面的內容修改該文件。然后使用下面的命令重新生成ramdisk.img文件。

mkbootfs root | minigzip > /ramdisk.img

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

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

其中kernel是內核二進制文件,與zImage完全一樣。只是編譯android源代碼時將其命名為

       ok, 現(xiàn)在可以進入bootloader模式,然后重新執(zhí)行fastboot flash bootboot.img刷內核鏡像,然后再重啟手機,現(xiàn)在進入shell,ok,默認就是#了。退出shell,執(zhí)行adb remount。就可以用adb push上傳文件到/system的其他目錄了,如/system/app。

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多