
除了志村新八带动屌丝逆袭以外,当然还有我们喜爱山崎退和近藤勋也紧跟步伐,誓要将“屌丝”称号踩入地底。因此对于一些厂商而言,屌丝的消费能力同样不容小视,他们相比一般人群收入水平略高,同时也更愿意花钱,因此可以说得屌丝者得天下,这已经是中国市场公认的成功模式,在互联网、游戏、服装等领域通过对屌丝把握已经涌现出了不少成功者。 于是小屌丝迈着欢快的步伐,一路小跑来到小花园,一辆大车停在那里,小屌丝心想,不会是给我找了个小公主吧,难道我就是传说中的灰男孩吗。
目前CyanogenMod官方支持的机型已经很多,只要你的手机不是太老太烂,都能找到相应的ROM。 但是看 ,你会发现大部分中配、低配,特别是arm-v6 CPU的手机最多只能升级到cm7 (android2.3),而无法升级到cm10.1(android4.2)。 本文将讲解如何下载和编译CM10.1源代码,重点讲述如何编译出这些低配、中配机型的cm10.1-ROM。 请一定要有耐心完成这件事情,各个环节肯定会遇到这样那样的问题,甚至编译出的ROM让你刷机后无法开机,只有耐心的尝试和探索,你才会取得成功!成功之后,你就可以尽情的更改源码,向别人分享你制作的ROM!
一. 编译 CyanogenMod官方 支持 升级到 cm10.1 的机型 ROM()
阅读上一篇文章 Ubuntu12.10-amd64系统上搭建Android4.2(JellyBean)源码开发环境,按照步骤一路执行,将 “第4步的 3)初始化repo”,修改为下图命令

然后 repo sync 同步源码,同步源码完成后 ,执行下列步骤并编译源码:
$ cd ~/myandroid/vendor/cm
$ ./get-prebuilts //(这一步是为了下载Term.apk并解压到当前propritary目录)(只需执行一次,以后编译无需执行)
$ cd ~/myandroid
$ source build/envsetup.sh
如果下载时间超过 15 分钟,设备将退出恢复模式,您需要重复执行第 2 步和第 3 步。模组厂提供了基本的ic驱动代码之后,首先需要在kernel中兼容这组,展讯去配置camera的kconfig和makefile,以及sensorcfg就可以基本完成对新camera senssor的兼容,高通上处理就有些不一样,由于目前高通平台引入了设备树dts来配置内核信息,关于设备树,各位童鞋可以查看我的相关博客-点击打开链接去了解更多相关知识,首先是在设备树中配置camera ic的i2c从地址芯片和各个控制管脚的gpio和e2prom的配置信息,这个地方需要注意的是,模组手册对这个从设备地址没有统一的写法,有的给出8位地址,有的给出7位地址,一开始容易混淆。在不使用流的情况下,是这样执行的:设备先从主机上拷贝内存,拷贝完成之后,再在设备上执行内核代码计算,最后当内核执行完毕,再把设备上的内存拷贝到主机上。
当前shell下执行make命令,生成可执行程序文件三星s5660手机驱动,随后make submit提交程序文件至本实例bin目录中,随后通过cd命令定位至实例bin目录,该可执行程序运行结果如下所示。当前shell下执行make命令,生成可执行程序文件,随后通过make submit命令提交程序文件至本实例bin目录,通过cd命令定位至bin目录,执行该程序文件运行结果如下所示。curl命令可以通过命令行的方式,执行http请求.在elasticsearch中有使用的场景,因此这里研究下如何在windows下执行curl命令. 工具下载 在官网处下载工具包: 使用方式一:在curl.exe目录中使用 解压下载后的压缩文件,通过cmd命令进入到curl.exe所在的目录. 由于博主使用的是windows 64位 的系统,因此可以使用i386下的curl.exe工具. 进入到该目录后,执行curl --h。

接下来你要准备 三星I897这台真机,并且已经刷上了CM10.1的ROM,已root,与电脑连接,且在你的ubuntu系统上执行命令 adb devices 可以识别这台设备!(如果无法识别,自己百度google去)
$ cd ~/myandorid/device/samsung/captivatemte
$ chmod a+x extract-files.sh
$ ./extract-files.sh // (这条命令实际上都是组织好的的adb pull,它将真机中的部分库和依赖文件拷贝到本地源码环境,辅助编译!因为部分库和依赖文件的源码我们无法获取,
//相关厂商只提供了这些编译好的东东!这一部很重要,如果跳过,即时编译ROM成功,刷机后手机也跑不起来的!) (只需执行一次,以后编译无需执行)
说明: 如果你不想预先把手机刷成CM10.1,可以以文本打开extract-files.sh,就看到里面其实都是拷贝文件的操作。那么你解压从官方获取的cm10.1的rom压缩包,逐个拷贝相应文件到源码环境相应目录,并编辑相应目录的mk文件,加入 "PRODCUT_COPY_FILES + =..." 这样的语句也是可以的,但是很麻烦!
以下开始真正编译:
$ croot
$ brunch captivatemtd
编译过程中遇到错误了不要怕,百度google吧。。。亲。。。编译完成后的ROM在out目录下,自己找找看!
二. 编译 CyanogenMod官方 不支持 升级到 cm10.1 的机型ROM (例如 三星S5660, 三星S5830,LG-P509...)
这类设备不受CM官方支持升级到CM10.1, 他们有一些共同特点:低配、中低配、中配、RAM小、CPU频率低、CPU采用ARM-V6指令集等。我认为最主要的原因是CPU采用ARM-V6指令集的问题,ARM-V6 指令集没有ARM-V7指令集的指令广,一个很显著的表象就是ARM-V6机器在网页上不能直接看flash! Android4.2.2基线的linux内核比较新,如果强制将这些机器升级到cm10.1,相机应用是个瓶颈!我们在网上看到这些低配机器的cm10.1,是因为其他团队或个人 基于CM的代码、专有内核(往往不是最新的linux 3.*内核)、驱动 进行再次开发 ,经过不懈努力才取得的成果!

这里介绍下编译这类手机cm10.1 ROM的方法:
a) 下载cm10.1源码后, 首先明确你要支持的机型,并弄清楚这个机型的代号(比如三星S5660的代号是gio,三星S5830的代号是cooper),在 github 搜索 这个代号(比如 gio),找到类似下列的源码资源(源码必须有代表android4.2基线的分支):
android_device_samsung_gio
android_device_samsung_msm7x27-common
android_kernel_samsung_msm7x27
这些就是需要的的! 依赖关系自己研究,呵呵! 这个时候你还不能高兴,就算你找到这些了,你编译成功了,ROM还是不能用三星s5660手机驱动,。。。你得点进去看看这是哪个牛逼的人 贡献的代码,并进入他的github主页,
(branch这里应该是jellybean或者cm-10.1或者其他代表android4.2的基线分支)
点击“Jellaxy” 进入这个人的主页后,你会发现他fork并维护了很多项目,仔细阅读下这些项目的说明和提交记录,我们需要使用其中一些项目替换自己下载的CM源码项目,比如替换framework/av目录等!
b) ubuntu文件浏览界面,CTRL+H 使隐藏目录可见,然后在 ~/myandroid/.repo/ 目录下 新建 local_manifest.xml,在其中添加以下内容:

可以通过查看watch事件类型来区分是znode,还是他的子节点被删除:nodedelete表示znode被删除,nodedeletedchanged表示子节点被删除。机器学习中决策树是一个预测模型,它表示对象属性和对象值之间的一种映射,树中的每一个节点表示对象属性的判断条件,其分支表示符合节点条件的对象。决策树是解决分类问题的一种常用方法,它是一种树形结构,其中每个内部节点表示一个属性上的测试,每个分支代表一个测试输出,每个叶节点代表一种类别。
不等于cm-10.1,那么你在project节点上必须加上 version="branch名称,例如jellybean".

c> 重新同步,会下载local_manifest.xml 中补充的代码源!
$ cd ~/myandroid/
$ repo sync
d) 同步完成后,你就得到了这个设备的内核和驱动以及部分 闭源 的库 和依赖文件! 依次执行下列命令
$ cd ~/myandroid/vendor/cm
$ ./get-prebuilts// (只需执行一次,以后编译无需执行)
$ cd ~/myandroid
$ source build/envsetup.sh
接下来你要准备 真机,并且已经刷上了CM10.1的ROM,已root,与电脑连接,且在你的ubuntu系统上执行命令 adb devices 可以识别这台设备!(如果无法识别,自己百度google去)
$ cd ~/myandorid/device/samsung/gio
$ chmod a+x extract-files.sh
$ ./extract-files.sh

开始编译:
$ lunch cm_gio-eng
$ make
或者 $ brunch gio 等价于 以上两条命令
注意:如果 ~/myandroid/device/samsung/gio/ 目录下没有 extract-files.sh 脚本,那么你从CM官方android_device_samsung_gio,branch为cm-7的分支下复制一个脚本补充下,或者打开本地
~/myandroid/vendor/samsung/gio
~/myandroid/vendor/samsung/msm7x27-common
这两个目录下的 mk文件, 你会发现 mk文件中很多 "PRODCUT_COPY_FILES + =..." 这样的语句, 细心的对比 这两个目录下包含的文件 和 你从网上下载的ROM中system/lib下的文件, 缺少什么文件,你就复制一个文件到vendor/samsung下对应深层目录,然后在mk中写一句 "PRODCUT_COPY_FILES + =..." 这样的语句,以后你就不需要执行 extract-files.sh脚本了!
我们在未配置jdk环境变量的时候,如果想要在dos下运行javac,那么就必须进入到jdk的bin目录下,然后才能执行编译,那么我们配置jdk的目的也就在于解决这个问题,环境变量配置后,然后执行javac,系统会通过path取寻找javac,如果我们不配置,那么是无法寻找到的,配置后系统可以很轻易寻找到javac,然后就在我们的源码下可以编译和执行我们所写的java代码了。用户通过bzr工具安装oabuild后,执行bootstrap脚本,即可自动调用cvs或svn下载相应版本的库源码,并通过python或perl执行相应脚本,完成整个项目的.net工程及环境配置。scope为test表示依赖项目仅仅参与测试相关的工作,包括测试代码的编译,执行。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
对于采用高通msm7x27平台的中低配手机,包括 三星S5660,三星S5830,中兴skate,中兴blade,LG-P500,LG-P505,LG-P506,LG-P509等手机,androidarmv6团队已经整合了全套代码!可以摒弃上列复杂步骤,extract-files.sh脚本也不需要! 注意下载源码的时候直接下载androidarmv6团队整合过的源码,所有步骤如下:
$ mkdir myandroid
$ cd myandroid
$ repo init -u git://github.com/androidarmv6/android.git -b cm-10.1
$ repo sync
$ cd ~/myandroid/vendor/cm
$ ./get-prebuilts//(只需执行一次,以后编译无需执行)
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/sanxing/article-107793-1.html
萌死我啦