怎样基于android4.4.2的源代码和android-4.3.1_r1的驱动编译I9250的ROM
作者:雨水  2014-05-04 联系方式:dennis.hu.cd at gmail.com


说明:经过多番折腾,最终把自己编译的Android4.4.2的源码成功地跑在我的三星Galaxy Nexus I9250手机上了。期间离不开一位外国朋友的帮助,也就是參考资料[1]的作者Sato Kensuke. 这里将过程记录下来,希望对大家有所帮助!


第一步:下载android-4.4.2_r2的源代码
參见我前面的文章<基于Ubuntu 14.04 LTS编译Android4.4.2源码>,地址:http://blog.csdn.net/gobitan/article/details/24367439 


第二步:下载android-4.3.1_r1的device部分源代码
因为我之前已经所有下载了android-4.3.1_r1的源代码并编译成功执行到我的i9250手机上,详细參考我前面的文章<编译android-4.3.1_r源代码并刷到自己的Galaxy Nexus I9250真机上>,地址:http://blog.csdn.net/gobitan/article/details/24792589。因此我是直接拷贝过去的。仅仅下载指定文件夹源代码的方法是我预计的,未经測试(已于2014-5-5測试成功):
依照正常下载源码的步骤,在运行repo sync之前,改动.repo/manifest.xml文件,将里面不须要的文件夹所有凝视掉,这样同步的时候应该就仅仅须要同步自己须要的文件夹了,所有下载源码耗时耗空间。

第三步:替换及改动device部分源码
1. 备份android-4.4.2_r2的device文件夹;
2. 用android-4.3.1_r1的device文件夹全然替换android-4.4.2_r2的device文件夹;
3. 改动诸多文件以使4.3的设备代码适配4.4的源码,过程较为复杂,这里暂不详述;

第四步:下载i9250的官方驱动并又一次编译
此步骤与我的<编译android-4.3.1_r源代码并刷到自己的Galaxy Nexus I9250真机上>一文中的第三步全然一样,这里不详述. 參见地址:http://blog.csdn.net/gobitan/article/details/24792589

第五步:将编译好的img刷到i9250手机上
(1) 改动~/.bashrc中的环境变量ANDROID_PRODUCT_OUT为:
export ANDROID_PRODUCT_OUT=/home/dennis/devenv/aosp/out/target/product/maguro
(2) 又一次进入命令行,然后開始刷机
dennis@dubuntu1404:~$ adb devices
List of devices attached
0146A0D00600900B device
dennis@dubuntu1404:~$ adb reboot bootloader
dennis@dubuntu1404:~$ fastboot flashall -w
< waiting for device >
--------------------------------------------
Bootloader Version...: PRIMEMD04
Baseband Version.....: I9250XXLJ1
Serial Number........: 0146A0D00600900B
--------------------------------------------
checking product...
OKAY [ 0.007s]
sending 'boot' (4472 KB)...
OKAY [ 0.587s]
writing 'boot'...
OKAY [ 0.681s]
sending 'recovery' (5020 KB)...
OKAY [ 0.659s]
writing 'recovery'...
OKAY [ 0.798s]
erasing 'system'...
OKAY [ 0.015s]
sending 'system' (264925 KB)...
OKAY [ 34.379s]
writing 'system'...
OKAY [ 30.739s]
erasing 'userdata'...
OKAY [ 0.418s]
formatting 'userdata' partition...
Creating filesystem with parameters:
Size: 14539534336
Block size: 4096
Blocks per group: 32768
Inodes per group: 8144
Inode size: 256
Journal blocks: 32768
Label:
Blocks: 3549691
Block groups: 109
Reserved block group size: 871
Created filesystem with 11/887696 inodes and 97200/3549691 blocks
sending 'userdata' (137559 KB)...
writing 'userdata'...
OKAY [ 28.220s]
erasing 'cache'...
OKAY [ 0.016s]
formatting 'cache' partition...
Creating filesystem with parameters:
Size: 452984832
Block size: 4096
Blocks per group: 32768
Inodes per group: 6912
Inode size: 256
Journal blocks: 1728
Label:
Blocks: 110592
Block groups: 4
Reserved block group size: 31
Created filesystem with 11/27648 inodes and 3566/110592 blocks
sending 'cache' (8832 KB)...
writing 'cache'...
OKAY [ 2.970s]
rebooting...
finished. total time: 99.523s
dennis@dubuntu1404:~$
刷好之后,系统会自己主动重新启动。 

第六步:添加�ducati-m3.bin驱动
注:假设缺少这一步,会导致相机无法使用。
1. 下载img
进入https://developers.google.com/android/nexus/images#takju,然后选择4.3 (JWR66Y)的link下载。然后解压,找到里面的system.img文件,然后从该文件里提取出ducati-m3.bin。
2. 将其push到/vendor/firmware,參见例如以下:
(1) 以root身份启动adb 
dennis@dubuntu1404:~$ adb root
restarting adbd as root
(2) 又一次挂在文件系统获取写权限
dennis@dubuntu1404:~$ adb remount
remount succeeded
(3) 将ducati-m3.bin驱动复制到手机的/vendor/firmware文件夹下

dennis@dubuntu1404:~$ adb push ducati-m3.bin /vendor/firmware
3772 KB/s (4515868 bytes in 1.168s)
注:前两步的root和remount不可少,否则你是没有权限拷贝过去的。另外,在一般的产品手机是无法运行上述操作的,这里能够运行是由于我们build的是debug版本号。

第七步:展示下劳动果实
在CSDN发文,我基本不用图片,原因是图片常常被弄丢,最后反而影响阅读,这里破例一次,上图!

图上显示Android版本号为4.4.2及其它版本号信息。

更新日期:2014-5-4 创建
更新日期:2014-5-5 调整第五步和第六步的顺序,添加�对权限操作的说明。

转载请注明出处:作者:雨水,地址:http://blog.csdn.net/gobitan/article/details/25003141 

參考资料:

怎样基于android4.4.2的源代码和android-4.3.1_r1的驱动编译I9250的ROM的更多相关文章

  1. 基于vitamio的网络电视直播源代码

    这个项目是基于vitamio的网络电视直播源代码.也是一个使用了vitamio的基于安卓的网络直播项目源代码,可能如今网上已经有非常多类似这种视频播放应用了.只是这个还是相对来说比較完整的,希望这个案 ...

  2. Android开发学习之TabView选项卡具体解释 -- 基于Android4.4

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/he90227/article/details/24474197 直接上代码 -- 基于Android ...

  3. 2018-12-6-Roslyn-如何基于-Microsoft.NET.Sdk-制作源代码包

    title author date CreateTime categories Roslyn 如何基于 Microsoft.NET.Sdk 制作源代码包 lindexi 2018-12-06 16:2 ...

  4. 基于Platinum库的DMS实现(android)

    接上篇博文:基于Platinum库的DMR实现(android) 文章讲述了如何使用Platinum库实现DMR 今天同样使用该库,来讲解一下DMS的实现 关于该库如何编译,请参考这篇博文:NDK下 ...

  5. 基于Linux 3.0.8 Samsung FIMC(S5PV210) 的摄像头驱动框架解读(一)

    作者:咕唧咕唧liukun321 来自:http://blog.csdn.net/liukun321 FIMC这个名字应该是从S5PC1x0開始出现的.在s5pv210里面的定义是摄像头接口.可是它相 ...

  6. 源代码解析Android中View的layout布局过程

    Android中的Veiw从内存中到呈如今UI界面上须要依次经历三个阶段:量算 -> 布局 -> 画图,关于View的量算.布局.画图的整体机制可參见博文 < Android中Vie ...

  7. 【从源代码看Android】02MessageQueue的epoll原型

    版权声明:本文为博主原创文章,欢迎转载.请注明原文链接 https://blog.csdn.net/ashqal/article/details/31772697 1 开头 上一讲讲到Looper,大 ...

  8. Android源代码因删除所有git仓库导致的编译错误

    /******************************************************************************** * Android源代码因删除所有g ...

  9. 使用具体解释及源代码解析Android中的Adapter、BaseAdapter、ArrayAdapter、SimpleAdapter和SimpleCursorAdapter

    Adapter相当于一个数据源,能够给AdapterView提供数据.并依据数据创建相应的UI.能够通过调用AdapterView的setAdapter方法使得AdapterView将Adapter作 ...

随机推荐

  1. call Kernelized Correlation Filters Tracker(Matab) in Qt(c++)

    recently, i need call the KCF tracker in my graduation project. the KCF tracker is fast and best per ...

  2. AngularJs学习教程

    AngularJs 目录 AngularJs实战一 购物车 细讲ng-repeat指令 ng-show和ng-hide ng-class指令 ng-src和ng-href 应用控制器中的职责 watc ...

  3. 根据headerView位置改变headerView颜色(collectionView/tableview)

    滑动时,tableview中的headerView 的frame不断改变,collectionView的headerView的center不断改变.sotableview: -(void)setFra ...

  4. android get uuid获取uuid

    https://github.com/Paldom/UniqueDeviceID protected void getDeviceUUID(){ try { Context context = cor ...

  5. 第三百四十一天 how can I 坚持

    不好,有点肚子疼,凉肚子了. 今天晚上回来看了个电影<聚焦>,貌似明白了一个道理,任何一份职业,只要认识到了它的价值,那就好好干. 计划又放在脑门后了,上班又闲扯了一天.老季公司招人,让我 ...

  6. Spark的发展历程

    ·2009年:Spark诞生于AMPLab.·2010年:开源.·2013年6月:Apache孵化器项目.·2014年2月:Apache顶级项目.·2014年2月:大数据公司Cloudera宣称加大S ...

  7. 判定元素正在插入到DOM树——DOMNodeInsertedIntoDocument

    在firefox, webkit中我们可以使用DOMNodeInsertedIntoDocument事件,但这个事件很快变废弃了,虽然浏览器还是很有节操地支持它们,但哪一天不在也很难说.比如说fire ...

  8. int* V.S. int[]

    [int* V.S. int[]] 在C++中,int[]有2种形态,一种是指针形态,即使用方法和int*一样,另一种是符号形态,即只是一个编译期的符号(意味着在runtime期,所定义的int[]根 ...

  9. 个人用户安装SEP注意事项

    一.安装时选择“非管控客户端” 二.安装时选择“自定义安装” 三.不要安装“应用程序与设备控制”,否则会拖慢开机   离线病毒库下载地址 http://www.symantec.com/securit ...

  10. MSSQL手札三 MSSQL存储过程

    --存储过程完成一段sql代码的封装 create proc trim --参数列表,多个间用逗号分隔 ) as --自定义代码段 ) set @str1=LTRIM(RTRIM(@str)) pri ...