天语进入recovery模式彩虹糖在拨号盘那进工程模式

查看: 5848|回复: 11
patchrom 之makefie分析—第一天
该用户从未签到
本帖最后由 梦的征程 于
17:06 编辑
& & 最近在学习MIUI V5移植教程,同时也为S5移植MIUI,虽然别的论坛有双卡的MIUI,但是拨号还有短信是用原生,让人觉得有点“不伦不类”的!所以自己心想移植一个真正的双卡MIUI,现在MiCode已经有MIUI双卡的patchrom代码,但是可惜的一点,他是MTK平台,而且是基于安卓4.2的patch,所以暂时还不能移植!而且现在在自己的功力不怎么够,官方给的pathc步骤及其简单,一般人根本看不懂!为了使patchrom能工作,首先得看懂makefile!所以我就先从makefie开始看懂patch的过程,这样才能在以后的移植过程少走弯路!本文先整体的分下miui官方的patchrom&&makfife的过程 稍后详细的分析下我们以后怎么用!  先看下官方给的帮助文档!大家一定会傻眼的,就是如下的几句,根本不知道怎么是patch怎么工作!下面我先照官方的文档大致的分析下过程!
 (1) connect your device to PC, ensure adb works
 (2) run the following commands
. build/envsetup.sh
mkdir xblade
adb reboot recovery
../tools/releasetools/ota_target_from_phone -r (this will generate a stockrom.zip, flash this zip in recovery mode to ensure it works)
cp ../honor/makefile .(modify the local-zip-file to stockrom.zip, read the comments in makefile)
make workspace
make firstpatch (this will add the miui code into framework/android.policy/services.jar, resolve any conflict)
make fullota
Now you can get your own miui ROM, enjoy it!
第一步是执行envsetup.sh,这一步是必须执行的!
其实这一步就是环境的初始化,因为整改patchrom是使用相对路径工作的,所以这句的主要作用是获取你的工作目录(patchrom工作目录的据对路径)。另一点就是把你所使用的移植工具加入环境变量方便你以后用终端在不同的目录使用patchrom/tools下的工具!(移植主要使用这里面的工具,makefile里面也用到这里面的工具)所以执行. build/envsetup.sh是必不可少的!脚本内容如下
#!/bin/bash
#
# usage:
#& && & under the porting workspace, run:
#& && & $. /path/to/envsetup.sh [android_build_top] [android_product_out]
#
# description:
#& && & If android build environment has been setup (i.e. lunch'ed), the value of
#& && & android_build_top and android_product_out specified here would not be used.
#& && & If android_build_top or android_product_out is empty, then ?
set -- `getopt &a:l:b:h:p:& &$@&`
android_top=
android_lunch=
ANDROID_BRANCH=
PORT_PRODUCT=&Unknown&
help=
while :
do
case &$1& in
& & -a) android_top=&$1& ;;
& & -l) android_lunch=&$1&;;
& & -b) ANDROID_BRANCH=&$1&;;
& & -p) PORT_PRODUCT=&$1&;;
& & -h) help=1;;
& & --);
esac
shift
done
shift
if [ -n &$help& ]; then
& & echo &Usage: . /path/to/envsetup [-a android-top [-l lunch-option] [-b android-branch]]&
& & return
fi
if [ -n &$android_top& ]; then
& & if [ ! -d &$android_top& ]; then
& && && &echo &Failed: $android_top does not exist&
& && && &return
& & fi
& & PORT_ROOT=$PWD
& & cd $android_top
& & . build/envsetup.sh
& & lunch $android_lunch
& & USE_ANDROID_OUT=true
& & export USE_ANDROID_OUT
& & cd $PORT_ROOT
else
& & ANDROID_BRANCH=
fi
TOPFILE=build/porting.mk
if [ -f $TOPFILE ] ; then
& &PORT_ROOT=$PWD
else
& &while [ \( ! \( -f $TOPFILE \) \) -a \( $PWD != &/& \) ]; do
& && & cd .. & /dev/null
& &done
& &if [ -f $PWD/$TOPFILE ]; then
& && & PORT_ROOT=$PWD
& &else
& && & echo &Failed! run me under you porting workspace&
& && & return
& &fi
fi
export PATH=$PORT_ROOT/tools:$PATH
if [ -n &$PORT_ROOT& ]; then
& & PORT_BUILD=$PORT_ROOT/build
& & ANDROID_TOP=${ANDROID_BUILD_TOP:=$1}
& & ANDROID_OUT=${ANDROID_PRODUCT_OUT:=$2}
& & export PORT_ROOT PORT_BUILD ANDROID_TOP ANDROID_OUT ANDROID_BRANCH PORT_PRODUCT
& & echo &PORT_ROOT& && & = $PORT_ROOT&
& & echo &ANDROID_TOP& &&&= $ANDROID_TOP&
& & echo &ANDROID_OUT& &&&= $ANDROID_OUT&
& & echo &PORT_PRODUCT& & = $PORT_PRODUCT&
& & echo &USE_ANDROID_OUT = $USE_ANDROID_OUT&
& & echo &ANDROID_BRANCH&&= $ANDROID_BRANCH&
fi复制代码第二步 make workspace
终端执行这个命令的前提是你的当前目录下有makefie,不然会报错!至于为何,以后详细说明,makefile的内容如下
#
# Makefile for i9100
#
# The original zip file, MUST be specified by each product
local-zip-file& &&&:= stockrom.zip
# The output zip file of MIUI rom, the default is porting_miui.zip if not specified
local-out-zip-file := MIUI_leo.zip
# the location for local-ota to save target-file
local-previous-target-dir := /home/ever-never/MIUIV5/ota
# All apps from original ZIP, but has smali files chanded
local-modified-apps := Camera SecMediaProvider
local-modified-jars :=
# All apks from MIUI
local-miui-removed-apps := MediaProvider Stk
local-miui-modified-apps := MiuiHome Settings Phone Mms ThemeManager MiuiSystemUI
# Config density for co-developers to use the aaps with HDPI or XHDPI resource,
# Default configrations are HDPI for ics branch and XHDPI for jellybean branch
local-density := XHDPI
# To include the local targets before and after zip the final ZIP file,
# and the local-targets should:
# (1) be defined after including porting.mk if using any global variable(see porting.mk)
# (2) the name should be leaded with local- to prevent any conflict with global targets
local-pre-zip := local-pre-zip-misc
local-after-zip:= local-put-to-phone
# The local targets after the zip file is generated, could include 'zip2sd' to
# deliver the zip file to phone, or to customize other actions
include $(PORT_BUILD)/porting.mk
# To define any local-target
local-zip-misc:复制代码
第三步是 make firstpatch
这是第一次移植时候必须运行的,他的功能是自动插桩!也是完全自动化的,使你移植的工作量减小!
下面是官方给的说明
运行”make firsrtpatch”。待命令运行完成以后,在我们的
文件夹下面会产生了一个 tmp 文件,里面有 5 个子文件夹:
(1)old_smali:去掉.line 的来自 Google 原版的 framework.jar 的 smali 代码
(2)new_smali:去掉.line 的来自 MIUI 修改过的 framework.jar 的 smali 代码
(3)dst_smali_orig:去掉.line 的来自 stockrom 的 framework.jar 的 smali 代码
(4)dst_smali_patched:去掉.line 的已经 patch 过 MIUI 代码的 smali 代码,smali
代码来自 stockrom 的 framework.jar 中
(5)reject:有冲突的 patch 文件,需要我们手动来解决的部分
最后是一步 make fullota这一步是在插桩完毕,自动生成rom的命令 (其实workspace firstpatch fullota 都是buid/porting.mk文件中的伪目标,这个以后说明!)这就是官方给的帮助文档!看起来很简单!但是要想真的使patchrom工作!这里给的只是一个大体步骤,还有很多细节需要我们自己设置!根据移植的rom不同!设置不同的参数!今天就先详细写这么多,以后争取每天更新一篇自己patch学习中的心得!有兴趣的同学可以关注下!下面给出官方的说明文档
(1.56 MB, 下载次数: 11)
20:25 上传
点击文件名下载附件
我只懂得前排加分~
该用户从未签到
前排给你加油了
该用户从未签到
虽不懂,但看起来很厉害,支持
该用户从未签到
楼主,我是从MIUI,HD2过来的,能不能再来个ubuntu搭建环境的教程,我编译总报错
该用户从未签到
楼主,我是从MIUI,HD2过来的,能不能再来个ubuntu搭建环境的教程,我编译总报错
哈哈 你怎么能找到这里呢?
该用户从未签到
等你弄出来我就给你加100分。
该用户从未签到
snarldog 发表于
等你弄出来我就给你加100分。
呵呵 慢慢来!等你给我加分,现在我也是正在学习!慢慢搞定
该用户从未签到
梦的征程 发表于
哈哈 你怎么能找到这里呢?
is 挖过来的,当时在刷机吧混的
该用户从未签到
is 挖过来的,当时在刷机吧混的
这是CM官方的环境配置教程,和谷歌官方的配置教程,但是我按照谷歌从来没成功过!教程很老,编译出错有时候不一定是环境的问题
该用户从未签到
梦的征程 发表于
这是CM官方的环境配置教程http://wiki.cyanogenmod.org/w/Build_for_m7#Prepare_the_device-specific_c ...
擦,我也是从来没成功过,,问G大,他貌似很忙,,从来不和我说话
该用户从未签到
擦,我也是从来没成功过,,问G大,他貌似很忙,,从来不和我说话
你miui ID是啥啊?没准我还能想起你呢
该用户从未签到
梦的征程 发表于
你miui ID是啥啊?没准我还能想起你呢
Powered by

参考资料

 

随机推荐