安卓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
通用的调试程序的步骤:
找到调试模块在系统代码中的路径;
知道代码在哪里之后就是编译代码了,即如何编译调试模块;
编译出目标文件后就要将目标文件放到机器中运行,即如何刷到机器中;
目标文件刷到机器中后就是怎么调试代码了,即如何查看调试日志。
弄明白上面四个步骤后我们就可以开始定制或者优化模块之路了,当然前提是还得有相应的编程语言基本功和逻辑分析能力才行!