制作ROM教程编译篇.docx
《制作ROM教程编译篇.docx》由会员分享,可在线阅读,更多相关《制作ROM教程编译篇.docx(9页珍藏版)》请在冰豆网上搜索。
![制作ROM教程编译篇.docx](https://file1.bdocx.com/fileroot1/2023-2/22/34bfe967-44c5-4c8d-b088-53236a35f894/34bfe967-44c5-4c8d-b088-53236a35f8941.gif)
制作ROM教程编译篇
ROM教程编译篇
制作手机ROM,也就是我们平时说的刷机包,至少你要对一些概念有所了解,例如刷机,recovery,root,adb等等。
这些基本概念不用介绍了,大家平日接触过有个概念就行。
我们所做的ROM是将一些主流的ROM适配到我们自己的手机上去,例如cmmiuiflyme等等,做ROM也有很多种途径,移植,插桩适配,源码编译。
我们现在就学习两个方向做ROM,插桩适配和编译。
移植ROM虽然上手难度小一点,但是情况太多修复bug也比较麻烦,这里就不论述了,有兴趣可以自己试试。
对于刚开始学习,一个手机是否合适还是有很大影响的。
如果你的手机很合适,基本照着教程输完命令也就出包了。
比如在开发者里人人皆知的nexus系列,当然国产的一加手机也是开发者中的首选。
不过一些比较热门的手机也会比较好做,开源的就好。
这个给大家一个地址https:
//github./CyanogenMod然后去搜索一下你的手机代号(又说道代号了,这里又要补充一下,每一个手机基本都会有一个代号不再用型号称呼我的手机是motog代号是falcon比如小米4的代号是cancro谷歌的nexus4代号是mako等等这个你要去XX或者论坛里去查查)如果搜出来结果了像这个样子那你的手机device就有了(如果没有的话,可能说明这个机型不太适合初学开发,我目前刚学。
。
。
。
如果没有device我也不知道该怎么继续下去。
。
。
不过办法总比困难多,想钻研总是会有办法的)搜索到结果就像下图但是每个人手机情况都有别,所以到时候会碰到很多不同的原因。
具体后面再说。
我们进行制作的环境一般都不在windows下,使用的是一些linux的系统,常用的有ubuntu,mint,debian等等等等这个看个人爱好用哪个就像win7win8win10的选择。
如果你的电脑配置比较好,又不想装双系统,可以用虚拟机的方式安装。
不过还是推荐用实体机安装,这样以后用起来比较方便,性能也能得到利用。
虚拟机安装方法这里不多说了,比较简单,实体机安装的时候一般把镜像解压到U盘选U盘启动按照提示一步一步就行。
具体还请XX,装系统是一个男生必须会的一项技能,女生就可以让男生帮你们装(安装的时候有个选项是和windows组成双系统,那个别选,据说选了windows就会挂,虽然我也没试过选下面的一个自定义的然后把盘分一下这样才是双系统正确操作文件不会丢失的如果想学习编译的话磁盘一定要大一点。
。
建议100G以上。
。
我分了200+G)
等你安装完了接下来可以熟悉一下操作这个系统很重要一个东西就是终端按ctrl+alt+t可以呼出终端。
就长这样以后主要是和这玩意打交道。
这个和windows下的cmd窗口差不多,这个命令也有很多以后慢慢就熟悉了。
=================之后开始开发的相关工作了====================
我们这里先做一些编译的准备,就打开这个终端,输入如下的命令,这个是安装一些必要的软件包:
sudoapt-getinstallbisonbuild-essentialcurlflexgitgnupggperflibesd0-devlibncurses5-devlibsdl1.2-devlibwxgtk2.8-devlibxml2libxml2-utilslzopopenjdk-7-jdkopenjdk-7-jrepngcrushschedtoolsquashfs-toolsxsltproczipzlib1g-devg++-multilibgcc-multiliblib32ncurses5-devlib32readline-gplv2-devlib32z1-dev
(直接复制进去就行了,注意这个窗口里粘贴不能用ctrl+v了用右键粘贴也行用ctrl+shift+v也行。
)
之后就是下载repo了repo这个东西我也说不清是干啥的,应该就是管理下载的反正以后下载源码都会用到他用下面命令:
mkdir-p~/bin//这个是新建一个叫bin的文件夹mkdir这个是新建命令~就是你的home目录
curlhttps:
//storage.googleapis./git-repo-downloads/repo>~/bin/repo
//这个意思是从谷歌那里拉下来repo这个程序
chmoda+x~/bin/repo//给这个文件夹权限
echo"exportPATH=~/bin:
$PATH">>~/.bashrc//这个是配置环境变量
之后就是大头戏了,咱们拉源码,这里要先建立好文件夹,别到时候都放到了home下。
。
会出来一大堆东西的我新建了一个叫做cyanogenmod的文件夹,这个都随意。
之后进入文件夹之后右键打开终端,当然你也可以打开终端用cd命令进入。
这时候会显示这样
之后只要输入
repoinit-ugit:
//github./CyanogenMod/android.git-bcm-12.1
然后输入reposync
可能下载的时候要设置和你的名字什么的有提示之后输入
这里根据自己的情况改
gitconfig--globaluser.email"youremail.address"
gitconfig--globaluser.name"YourName"
这里的cm12.1就是拉取cm12.1的源码同理你可以获取12.013之类的
不过。
。
因为天朝原因,目前写这篇教程的时候直接这样是不能从谷歌下载东西的,所以你需要做些处理
https:
//github./racaljk/hosts
这个地址会更新可用的hosts需要的时候就去看一下然后找到
216.239.38.123googlesource.
216.239.38.123android.googlesource.
216.239.38.123gerrit.googlesource.
这一段前面这个ip是我目前获取的可用的到时候更新了自己去查一下然后打开终端,输入sudogedit/etc/hosts之后输入密码就可以打开hosts这个文件吧上面那三行加进去保存。
然后进行拉取源码的操作就行了。
(这里估计得下载10+G文件我用移动下载可以满速电信没试过,哦对说到电信。
。
。
咱们学校的闪讯linux下我还没学会怎么使,wine打开没反应。
。
要是高人研究出来可以告知一下)中间可以中断,或者你发现网络出问题了也可以中断在运行中的终端输入ctrl+z就可以了之后开始再输入reposync
说到reposync这个命令还有很多学问后面可以加一些参数比如-c-j4之类的具体可以自行了解一下不同
当你把源码都获取完了,会自动释放出来很多文件,之后就很好办了。
我的源码目录下文件夹是这样的
简要说明一下device就是你的机型目录里面有你的设备文件夹vendor里面是从你手机里拉取的一些文件out到时候是生成包的目录(这个和之后要介绍的插桩都一样通用的)
终端进到cyanogenmod文件夹,输入sourcebuild/envsetup.sh(终端有个自动补齐功能,就是你输入命令输入一般按一下tab可以自动补全后面你可能要输入的命令不过前提是前一半输入正确了或者能在该目录下执行,要是有时候没补齐也没事,自己输入就是了source这个命令是初始化环境的,以后打开终端进行下面的步骤都要先输入一下这个,不然后面可能会说没有命令啥的)
之后输入breakfastfalcon(我的机型代号是falcon,这个根据你机型的名称来)然后又会下载一大堆文件,这个是你手机的device。
下载到最后有可能会说一些东西找不到之类的错误,没关系先进行下一步。
用cd命令进入到你机型的文件夹,比如我的cyanogenmod/device/motorola/falcon输入
./extract-files.sh(前面有个.的)然后就会从手机中拉取一些文件这个和你手机中现在的rom也有些关系。
我试过我用flyme的时候会有些文件拉取不到。
。
可能flyme系统中没有这些编译需要的文件,可以的话换一个偏原生点的包试试
进行完这个步骤之后可以再回到cyanogenmod文件夹下重来一次breakfastfalcon了不出意外之前的那些错误应该会没了如果再出错可以看看出错的提示,具体再讨论。
这样就是做好编译的准备了
输入croot
然后输入brunchfalcon就可以。
。
。
。
等着了。
。
。
。
。
如果不出错就可以等着出包了。
我的配置编译一次得4个小时。
当然途中可能会出现一些错误,别慌,错误一般都有提示,只要解决了可以从断点继续的。
一些简单的错误可能会说build.prop里面少了一行手机的名称啊代号啥的。
。
这个照着路径找到文件加上就行后面有具体说,其他的如果碰到了可以对着出错提示分析,XX,或者咨询一些大神。
从断的地方继续还是输入brunchfalcon就行
每次要重新编译的时候,最好要清除一下上次的缓存之类的文件
makeclobber
(应该还有别的命令makeclean之类的大家自己试试)
编译cm的方法就是这样,不过还有很多开源的rom项目,比如sudamod下载源码的时候用sudamod的命令替换之后breakfast的时候会提示一个sm_falcon什么的没有这是sudamod和cm不一样的地方了要稍作修改进到你的设备目录下,有一个叫cm.mk的东西,打开来里面本来的cm_falcon改成sm_falcon然后吧文件名也改成sm.mk之后就和cm的步骤一样了最后编译的时候会提示build.prop找不到一行什么参数你就照着他提示的目录找到build.prop加上哪行参数。
我编译cm的时候没有出什么问题,编译sudamod的时候发现这两个地方有区别其他都是一样的。
当然这里只是提供了一个例子开源项目很多解决方法也不一样只要学会搜索咨询分析,都可以解决。
这个文档也刚开始写,后面遇到问题我也会更新,过一阵子还会写插桩的教程
祝大家玩的愉快!
有问题可以提出交流。
Cyanogenmod只是一个开源rom项目,下面也提供一些地址(github真的是个好地方)
Sudamod:
https:
//github./sudamod
BOSP-LP:
https:
//github./TeamBliss-LP
PAC:
https:
//github./PAC-ROM
Omnirom:
https:
//github./omnirom
等等等等
参考文档
wiki.cyanogenmod.org/w/Build_for_bacon#Download_the_source_code
(这篇教程是个好东西,算比较全的就是纯英文有遇到问题可以去这里)
.oneplusbbs./thread-572886-1-1.html
(这个一加社区的中文教程,我主要参考这个,不过有些细节没有)
感
Rombay提供的常见开源项目地址
以及各位帮我解答问题的大神
本人也刚学习这些有些说错了请指出。