安卓recovery編譯教程
① 如何從源代碼編譯TWRP Recovery
目前穩定的的分支是twrp2.4板本2.4.xx代碼基地。如果你使用的CM10.1你*必須*使用twrp2.4分支。主分支代表TWRP2.2和JB-WIP TWRP2.3。選擇任何你喜歡的分支,但唯一的分支越來越活躍的代碼更改twrp2.4。 * CM7 ONLY* 更換整個CM7/build文件夾
② 一個百度雲上搜索到的「recovery編譯教程」的視頻,求這個視頻的原始出處,是哪個網站上的,謝謝
安卓手機recovery模式進入方法:
方法一:
1、關機。
2、同時按住電源(掛機鍵)+ 小房子(Home)鍵,直到出現Recovery界面為止。
方法二:
1、關機。
2、先按住音量+鍵不放。
3、然後再長按電源開機鍵,直到出現Recovery界面為止。
③ 安卓如何安裝recovery
不同的機型多少都會有差距,刷recovery不需要雙清。卡刷包就是把你下載的第三方的rom復制到你的存儲卡里,然後進入recovery模式,選擇從sd卡刷入rom,然後選擇該刷機包就可以刷機了。
通常刷機主要有一下三個步驟 1,解鎖 2,刷入recovery 3,刷入rom包。
如果樓主卡在了第二個步驟,可以去安卓論壇看一下刷機教程,選擇你的機型就可以找到教程。有需要在聯系我,我每天網路都在線
④ android 修改代碼怎樣編譯
1: ./mk n(r) kernel; ./mk bootimage;當修改kernel相關代碼時,具體如下:
alps/kernel/
alps/mediatek/platform/mt65xx/kernel/
alps/mediatek/source/kernel/
alps/mediatek/customer/mt65xx/kernel/
alps/mediatek/customer/common/kernel/
alps/mediatek/customer/$porject_name$/kernel
......
2: ./mk n pl 當修改preloader相關代碼時, 具體如下:
alps/mediatek/platform/mt65xx/preloader/
alps/mediatek/source/preloader/
alps/mediatek/customer/mt65xx/preloader/
alps/mediatek/customer/common/preloader/
alps/mediatek/customer/$porject_name$/kernle
......
3: ./mk uboot 當修改uboot相關代碼時,具體如下:
alps/mediatek/platform/mt65xx/uboot/
alps/mediatek/source/uboot/
alps/bootable/bootloader/uboot/
alps/mediatek/customer/mt65xx/uboot/
alps/mediatek/customer/common/buoot/
alps/mediatek/customer/$porject_name$/uboot/
......
4: ./mk systemimage 當修改system相關代碼時,具體如下:
alps/frameworks/
alps/packages/
alps/vendor/
alps/hardware/
alps/dalvik/
...........
5: ./mk recoverimage 當修改recover相關代碼時,具體如下:
alps/bootable/recovery/
alps/mediatek/customer/$project_name$/recovery/
......
6: ./mk factoryimage: 當修改factory相關代碼時使用此命令,具體如下:
alps/mediatek/customer/$project_name$/factory/
alps/mediatek/customer/common/factory/
alps/mediatek/source/factory/
......
7: ./mk secroimage 當修改secro相關代碼時,具體如下:
alps/mediatek/source/secro/
alps/mediatek/customer/$project_name$/secro/
.....
⑤ 如何構建編譯TWRP touch recovery
目前穩定的的分支是twrp2.4板本2.4.xx代碼基地。如果你使用的CM10.1你*必須*使用twrp2.4分支。主分支代表TWRP2.2和JB-WIP TWRP2.3。選擇任何你喜歡的分支,但唯一的分支越來越活躍的代碼更改twrp2.4。
* CM7 ONLY*
更換整個CM7/build文件夾:
確保您獲得twrp2.3分支和不是主分支。
*開始構建編譯*
注意:如果您添加或更改任何標志,你將需要進行編譯清除,然後再重新編譯或標志更改將不被使用起。
現在,你的源代碼,你需要設置或更改您的設備(S)的一些構建標志。查找BoardConfig.mk為您的設備,CM/devices/manufacturer/codename文件夾(例如CM/devices/hp/tenderloin/BoardConfig.mk)BoardConfig.mk。首先配置BoardConfig.mk的文件為
TARGET_RECOVERY_INITRC:=
如果您的設備有此行,將在恢復中使用一個自定義,預置init.rc的路徑。最有可能的是,你將需要略微更改自定義init.rc。尋找recovery中的init.rc文件,並打開它。頂部附近,你會看到這樣的信息:
on init
export PATH /sbin
export LD_LIBRARY_PATH .:/sbin
添加所需的最後一行。這條線是需要得到的鏈接器運行。 TWRP ClockworkMod不同,是一個動態鏈接的恢復。動態鏈接可以讓我們節省了大量的空間,以幫助確保,TWRP恢復圖像將適合在更多的設備。它也讓我們使用動態鏈接的觸摸屏上看到摩托羅拉Photon與Atrix和惠普的TouchPad,而無需 mount /system 的二進制文件。
還需要包括您的主板配置架構和平台設置。通常情況下,這些都已經包含了,如果你正在使用設備的configs別人創建的,但如果你創建你自己的,你可能需要添加他們。沒有他們,往往會恢復故障段在啟動過程中,你只會看到屏幕上一遍又一遍地典輝簾閃光。
⑥ 中國移動M812C獲取ROOT許可權和刷第三方recovery教程
本教程針對的機型為:
中國移動M812C
機子系統版本為:
4.4.2
進入
recovery
方法,關機狀態下同時按「
開機鍵
」和「
音量上
」鍵,過幾秒後即可進入,或是重啟時按住「
音量上
」鍵同樣可進入
一般官方的recovery恢復程序會有限制,只能刷官方的ROM包(即官方安卓系統),而刷第三方ROM包則需要第三方的recovery,而刷入recovery需要有root許可權,即最高級的系統許可權。
針對此機型的工具有:
獲取ROOT許可權的工具為:360一鍵ROOT(PC版),可360官方下載,地址root.360.cn
刷Recovery工具下載地址:
Recovery
6.0.5.1版本,在此感謝xiaolu
下面簡單說下操作步驟(帶配圖,基於全新系統而言,已經root過的可以略過):
1.>>一部全新的手機需要先打開「開發者選項」,系統默認隱藏了的,打開方法:手機設置
->
全部設置
->
關於手機
->
硬體版本上面連續按5下即可,返回後可在「關於手機」上面看到「開發者選項」,如下圖
2.>>下面進入「開發者選項」,最右上方點下打開「開發者選項」功能,拉到下面在「USB調試」右邊打上勾,彈出詢問窗口後點確認,如下圖:
3.>>經過上面兩步後,手機用數據線連接電腦,此時手機會彈出個詢問窗口,打上勾並確認,若沒彈出可重新關閉和打開USB調試,如下圖
4.>>裝手機驅動,手機連接電腦後會出現個類似光碟機的盤,裡面帶有驅動,雙擊可安裝,有些系統如XP若裝不了可用360手機助手等安裝驅動
5.>>打開安裝好的360一鍵ROOT(PC版),過會顯示出手機型號並帶有一鍵root按鈕,按下一鍵ROOT,一會手機重啟並root成功,如下圖
特別提醒:用360
root後不要急於卸載手機端的360應用,會導致root失敗,刷了第三方recovery後再卸載也不遲!
上面是root的步驟,刷寫recovery也很簡單,下載上面網路網盤連接的壓縮包後解壓,雙擊「點擊刷入recovery.bat」,並按照界面上提示和選項操作即可成功輸入recovery,若是開頭就出問題刷不入,可能是一些第三方手機助手等軟體佔用了刷寫工具的埠,建議關閉後重試,也可打開任務管理器結束掉類似帶有「adb」字樣的進程後再重試。
下面是recovery界面圖,帶虛擬按鍵,由左到右依次為「向下」「向上」「返回」「確認」4個按鍵
說下刷ROM包的簡單步驟,熟悉的可略過,針對新手
1.>>下載ROM包後可放到內置存儲的根目錄,或是SD卡的根目錄,後進入recovery恢復模式
2.>>進入recovery後先雙清,即「清除數據恢復出廠」和「清除Cache分區」,如下圖
3.>>安裝ZIP刷機包,可「從/sdcard讀取刷機包」和「從/external_sd讀取刷機包」,sdcard為手機內置存儲,external_sd為外置SD卡,如下圖
4.>>根據你ROM包的存放位置選對後即可刷包,進度條滾完即刷好,重啟手機會有幾分鍾的等待時間,新系統開機需要先置放和優化系統里的文件
另外說明,當重啟手機時會提示你「是否禁用install-recovery.sh腳本」,選「否」不禁用,如下圖
特別提醒,刷機只需執行上面幾個步驟即可,不熟悉者切勿在recovery模式下過多操作其他無關選項!
關於雙清的說明,一般不同類型系統刷機前需要先雙清,如中國移動官方系統要刷MIUI的ROM包,必須要雙清,不雙清刷入會因數據版本不同導致沖突而致軟體出錯!有個別使用者想要保留原有系統一些軟體或配置,而選擇備份工具備份,後面刷了系統再恢復進去,這個也可能會導致數據版本不同而沖突出錯。對於相同類型系統刷機可不雙清直接刷入,比如官方系統刷官方包,MIUI系統刷MIUI包。
⑦ 如何編譯製作recovery.img
解壓後得到了recovery.img文件和一個名字為META-INF的文件夾,我想問,這個可能和我手機的版本或者其他什麼相關,於是不得不手動recovery,好處就是不管x
⑧ android源碼怎麼編譯生成recovery.img
recovery.img生成過程
L630-L637 依賴關系
(From: build/core/Makefile)630 $(INSTALLED_RECOVERYIMAGE_TARGET): $(MKBOOTFS) $(MKBOOTIMG) $(MINIGZIP) /631 $(INSTALLED_RAMDISK_TARGET) /632 $(INSTALLED_BOOTIMAGE_TARGET) /633 $(recovery_binary) /634 $(recovery_initrc) $(recovery_kernel) /635 $(INSTALLED_2NDBOOTLOADER_TARGET) /636 $(recovery_build_prop) $(recovery_resource_deps) /637 $(RECOVERY_INSTALL_OTA_KEYS)
INSTALLED_RECOVERYIMAGE_TARGET 為我們的編譯目標:
584 INSTALLED_RECOVERYIMAGE_TARGET := $(PRODUCT_OUT)/recovery.img
它依賴很多其它目標:
1.MKBOOTFS, MINIGZIP, MKBOOTIMG,PC端工具軟體:(From build/core/config.mk)265 MKBOOTFS := $(HOST_OUT_EXECUTABLES)/mkbootfs$(HOST_EXECUTABLE_SUFFIX)266 MINIGZIP := $(HOST_OUT_EXECUTABLES)/minigzip$(HOST_EXECUTABLE_SUFFIX)267 MKBOOTIMG := $(HOST_OUT_EXECUTABLES)/mkbootimg$(HOST_EXECUTABLE_SUFFIX)
2.INSTALLED_RAMDISK_TARGET,標准根文件系統 ramdisk.img:
326 BUILT_RAMDISK_TARGET := $(PRODUCT_OUT)/ramdisk.img328 # We just build this directly to the install location.329 INSTALLED_RAMDISK_TARGET := $(BUILT_RAMDISK_TARGET) 3.INSTALLED_BOOTIMAGE_TARGET, 即boot.img,標准內核及標准根文件系統:362 INSTALLED_BOOTIMAGE_TARGET := $(PRODUCT_OUT)/boot.img
4. recovery_binary, Recovery可執行程序,源碼位於:bootable/recovery
590 recovery_binary := $(call intermediates-dir-for,EXECUTABLES,recovery)/recovery
5. recovery_initrc,recovery模式的init.rc, 位於 bootable/recovery/etc/init.rc
586 recovery_initrc := $(call include-path-for, recovery)/etc/init.rc
6. recovery_kernel, recovery 模式的kernel, 同標准內核
587 recovery_kernel := $(INSTALLED_KERNEL_TARGET) # same as a non-recovery system
7.INSTALLED_2NDBOOTLOADER_TARGET,我們不用。
8. recovery_build_prop, recovery 模式的build.prop, 同標准模式。589 recovery_build_prop := $(INSTALLED_BUILD_PROP_TARGET)
9. recovery_resource_deps, recovery 模式使用的res, 位於:recovery/custom/{proct_name}/res, 以及設備自定義部分(我們沒用到)
591 recovery_resources_common := $(call include-path-for, recovery)/custom/$(TARGET_PRODUCT)/res592 recovery_resources_private := $(strip $(wildcard $(TARGET_DEVICE_DIR)/recovery/res))593 recovery_resource_deps := $(shell find $(recovery_resources_common) 594 $(recovery_resources_private) -type f) 10. RECOVERY_INSTALL_OTA_KEYS, ota 密鑰:
618 # Generate a file containing the keys that will be read by the619 # recovery binary.620 RECOVERY_INSTALL_OTA_KEYS := /621 $(call intermediates-dir-for,PACKAGING,ota_keys)/keysL638-L655 准備內容
638 @echo ----- Making recovery image ------639 rm -rf $(TARGET_RECOVERY_OUT)640 mkdir -p $(TARGET_RECOVERY_OUT)641 mkdir -p $(TARGET_RECOVERY_ROOT_OUT)642 mkdir -p $(TARGET_RECOVERY_ROOT_OUT)/etc643 mkdir -p $(TARGET_RECOVERY_ROOT_OUT)/tmp
准備recovery目錄:out/target/proct/{proct_name}/recovery 及其子目錄:
./root
./root/etc
./root/tmp644 echo Copying baseline ramdisk...645 cp -R $(TARGET_ROOT_OUT) $(TARGET_RECOVERY_OUT)646 echo Modifying ramdisk contents...647 rm -rf $(TARGET_RECOVERY_ROOT_OUT)/res
從標准根文件系統拷貝所有文件, 刪除其res 目錄。
648 cp -f $(recovery_initrc) $(TARGET_RECOVERY_ROOT_OUT)/649 cp -f $(recovery_binary) $(TARGET_RECOVERY_ROOT_OUT)/sbin/ 拷貝recovery 模式的核心文件 init.rc 及 recovery 650 cp -rf $(recovery_resources_common) $(TARGET_RECOVERY_ROOT_OUT)/651 $(foreach item,$(recovery_resources_private), /652 cp -rf $(item) $(TARGET_RECOVERY_ROOT_OUT)/)653 cp $(RECOVERY_INSTALL_OTA_KEYS) $(TARGET_RECOVERY_ROOT_OUT)/res/keys 拷貝資源文件及密鑰文件。 654 cat $(INSTALLED_DEFAULT_PROP_TARGET) $(recovery_build_prop) /655 > $(TARGET_RECOVERY_ROOT_OUT)/default.prop 生成屬性文件 default.prop, 它包含了標准根文件系統的default.prop (out/target/proct/{proct_name}/root/default.prop)以及system分區的build.prop (out/target/proct/{proct_name}/system/build.prop) L656-L661 最終生成recovery.img
656 $(MKBOOTFS) $(TARGET_RECOVERY_ROOT_OUT) | $(MINIGZIP) > $(recovery_ramdisk) 壓縮recovery根文件系統 657 build/quacomm/mkimage $(PRODUCT_OUT)/ramdisk-recovery.img RECOVERY > $(PRODUCT_OUT)/ramdisk_recovery.img 加一個標識頭(RECOVERY) 658 mv $(PRODUCT_OUT)/ramdisk_recovery.img $(PRODUCT_OUT)/ramdisk-recovery.img659 $(MKBOOTIMG) $(INTERNAL_RECOVERYIMAGE_ARGS) --output $@660 @echo ----- Made recovery image -------- $@661 $(hide) $(call assert-max-image-size,$@,$(BOARD_RECOVERYIMAGE_PARTITION_SIZE),raw)
和內核一起,生成recovery.img附:Recovery 根文件系統目錄結構
$ tree
.
├── advanced_meta_init.rc
├── data
├── default.prop
├── dev
├── etc
├── init
├── init.factory.rc
├── init.goldfish.rc
├── init.quacomm.rc
├── init.rc
├── meta_init.rc
├── proc
├── res
│ ├── images
│ │ ├── icon_error.png
│ │ ├── icon_installing.png
│ │ ├── indeterminate1.png
│ │ ├── indeterminate2.png
│ │ ├── indeterminate3.png
│ │ ├── indeterminate4.png
│ │ ├── indeterminate5.png
│ │ ├── indeterminate6.png
│ │ ├── progress_empty.png
│ │ └── progress_fill.png
│ └── keys
├── sbin
│ ├── adbd
│ ├── advanced_meta_init
│ ├── meta_init
│ ├── meta_tst
│ └── recovery
├── sys
├── system
└── tmp
⑨ android 怎麼調試bootable/recovery
通用的調試程序的步驟:
找到調試模塊在系統代碼中的路徑;
知道代碼在哪裡之後就是編譯代碼了,即如何編譯調試模塊;
編譯出目標文件後就要將目標文件放到機器中運行,即如何刷到機器中;
目標文件刷到機器中後就是怎麼調試代碼了,即如何查看調試日誌。
弄明白上面四個步驟後我們就可以開始定製或者優化模塊之路了,當然前提是還得有相應的編程語言基本功和邏輯分析能力才行!