编译android-4.3.1_r源代码并刷到自己的Galaxy Nexus I9250真机上
作者:雨水  日期:2014-04-30

编译源码的目的还是为了自己改动源码,然后还可以执行在相应的手机上,仅仅有这样才有意义.  我手上有一部三星的Galaxy Nexus I9250, 代号为maguro。可是在眼下google的官方未提供针对android4.4.2版本号所相应的硬件驱动,最新仅仅提供到Android4.3,详细可以在https://developers.google.com/android/nexus/drivers这里查看。 
我在网上看有基于4.4源代码+4.3驱动编译成功并能执行的,但我尝试了,非常多错误到眼下为止还没解决(已于2014-5-4已搞定),因此先尝试了4.3的源代码+4.3的驱动。以下就是整个过程:

注:关于编译环境设置等细节參考我的前一篇<基于Ubuntu
14.04 LTS编译Android4.4.2源码
>.
第一步:获取android-4.3.1_r1的源代码
  1. $mkdir android-4.3.1_r1
  2. $cd android-4.3.1_r1
  3. $repo init -u https://android.googlesource.com/platform/manifest -b android-4.3.1_r1
  4. $repo sync
第二步:编译android-4.3.1_r1的源代码
  1. dennis@dubuntu1404:~/devenv/android-4.3.1_r1$ . build/envsetup.sh
  2. including device/asus/deb/vendorsetup.sh
  3. including device/asus/flo/vendorsetup.sh
  4. including device/asus/tilapia/vendorsetup.sh
  5. including device/generic/armv7-a-neon/vendorsetup.sh
  6. including device/generic/mips/vendorsetup.sh
  7. including device/generic/x86/vendorsetup.sh
  8. including device/lge/mako/vendorsetup.sh
  9. including device/samsung/maguro/vendorsetup.sh
  10. including device/samsung/manta/vendorsetup.sh
  11. including device/samsung_slsi/arndale/vendorsetup.sh
  12. including device/samsung/toroplus/vendorsetup.sh
  13. including device/samsung/toro/vendorsetup.sh
  14. including device/ti/panda/vendorsetup.sh
  15. including sdk/bash_completion/adb.bash
  16. dennis@dubuntu1404:~/devenv/android-4.3.1_r1$ lunch
  17. You're building on Linux
  18. Lunch menu... pick a combo:
  19. 1. aosp_arm-eng
  20. 2. aosp_x86-eng
  21. 3. aosp_mips-eng
  22. 4. vbox_x86-eng
  23. 5. aosp_deb-userdebug
  24. 6. aosp_flo-userdebug
  25. 7. full_tilapia-userdebug
  26. 8. mini_armv7a_neon-userdebug
  27. 9. mini_mips-userdebug
  28. 10. mini_x86-userdebug
  29. 11. full_mako-userdebug
  30. 12. full_maguro-userdebug
  31. 13. full_manta-userdebug
  32. 14. full_arndale-userdebug
  33. 15. full_toroplus-userdebug
  34. 16. full_toro-userdebug
  35. 17. full_panda-userdebug
  36. Which would you like? [aosp_arm-eng] 12
  37. ============================================
  38. PLATFORM_VERSION_CODENAME=REL
  39. PLATFORM_VERSION=4.3.1
  40. TARGET_PRODUCT=full_maguro
  41. TARGET_BUILD_VARIANT=userdebug
  42. TARGET_BUILD_TYPE=release
  43. TARGET_BUILD_APPS=
  44. TARGET_ARCH=arm
  45. TARGET_ARCH_VARIANT=armv7-a-neon
  46. TARGET_CPU_VARIANT=cortex-a9
  47. HOST_ARCH=x86
  48. HOST_OS=linux
  49. HOST_OS_EXTRA=Linux-3.13.0-24-generic-x86_64-with-Ubuntu-14.04-trusty
  50. HOST_BUILD_TYPE=release
  51. BUILD_ID=JLS36I
  52. OUT_DIR=out
  53. ============================================
  54. dennis@dubuntu1404:~/devenv/android-4.3.1_r1$ make -j4
注1:假设这一步直接刷机,会出现提示flash成功,可是重新启动之后出现google的logo之后就黑屏,无法启动。原因就是由于驱动没有加进来,必须完毕第三步之后再開始刷机。
注2:编译过程中可能会出现例如以下错误:
  1. Can't locate Switch.pm in @INC (you may need to install the Switch module) (@INC contains: /etc/perl /usr/local/lib/perl/5.18.2 /usr/local/share/perl/5.18.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.18 /usr/share/perl/5.18 /usr/local/lib/site_perl .) at external/webkit/Source/WebCore/make-hash-tools.pl line 23.
  2. BEGIN failed--compilation aborted at external/webkit/Source/WebCore/make-hash-tools.pl line 23.
解决的方法:
  1. $sudo apt-get install libswitch-perl
第三步:下载i9250(maguro)的官方驱动并又一次编译
(1) 下载驱动:进入https://developers.google.com/android/nexus/drivers#magurojwr66y,将Wi-Fi等6个驱动一次下载下来,然后解压,会生成6个.sh文件。将这些文件放入源码的根文件夹就可以。
(2) 运行.sh文件提取驱动程序: 通过运行"chmod +x *.sh"为它们添加可运行权限,然后依次运行这6个sh文件,每一个文件会让你输入"I ACCEPT"来接受协议。接受之后会将提取后的驱动放入名为vendor的文件夹中。此时,vendor文件夹应该位于源码的根文件夹之下,即android-4.3.1_r1之下。
然后再次依次运行例如以下命令又一次编译,本次编译时间会比較短。
  1. $. build/envsetup.sh
  2. $lunch 12
  3. $make -j4
第四步 将编译好的img刷到i9250手机上
(1) 改动~/.bashrc中的环境变量ANDROID_PRODUCT_OUT为:
  1. export ANDROID_PRODUCT_OUT=/home/dennis/devenv/android-4.3.1_r1/out/target/product/maguro
(2) 又一次进入命令行,然后開始刷机
  1. $ adb reboot bootloader
  2. $ fastboot flashall -w
刷好之后,系统会自己主动重新启动,假设没什么其它问题,你能够看到你的劳动成果了!

作者:雨水 转载请注明出处:http://blog.csdn.net/gobitan/article/details/24792589
參考资料:
1.  http://blog.csdn.net/gobitan/article/details/24367439 基于Ubuntu 14.04 LTS编译Android4.4.2源码
2.  http://blog.csdn.net/zjmdp/article/details/7737802 Android 4.1 (Jelly Bean) 源代码编译过程总结

编译android-4.3.1_r源代码并刷到自己的Galaxy Nexus I9250真机上的更多相关文章

  1. [转]编译Android源代码常见错误解决办法

    1. 编译时出现/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libz.so when ...

  2. Android:基于Eclipse编译调试系统级应用源代码

    一.      概要描述 在使用Eclipse导入android工程源代码以后,我们可以使用ddms调试和跟踪源代码. 本文讲述动态调试源代码和静态调试源代码的两种方法,避免build system. ...

  3. 编译Android源代码与内核总结

    这些天花了些时间自己下载了android源代码来编译,当中走了一些弯路导致耗了些时间,如今又一次梳理总结下,让有同样想法的人自己编译的时候能少走些弯路,官方指导文档在http://source.and ...

  4. 编译Android 4.4源代码并烧录到Nexus4

    环境准备: 基本环境:ubuntu-12.04-desktop-64bit(裸机或者Windows下虚拟机安装均可,14.04也可以) 其他要求:空闲磁盘空间100G以上,代码部分接近10G,内存越大 ...

  5. 下载编译 Android wear 源代码,尝试制作可穿戴设备功能

    体验 Android Wear 缘由: Android wear 代码公布已经非常久了.一直没有尝试,这里是个编译的过程和步骤,假设要尝试.本文假定读者已经有下载编译 Android  的经验,假设没 ...

  6. 编译Android源代码

    硬盘空间需要在50G以上,最好100g 系统:ubuntu14.04 交叉工具链:arm-linux-gcc-4.5.1-v6-vfp-20120301 安装 Java 开发环境 $ sudo apt ...

  7. Ubuntu 下编译Android 源代码

    1.配置JDK 1.6 或者1.7(看情况配置,有的Android版本不能在1.7下运行) 2.配置环境:终端:(CTRL+ALT+T) $ sudo apt-get install git gnup ...

  8. 在Mac mini上编译Android源码

    参考文章 1.Android 6.0 源代码编译实践 2.编译Android源码致命错误解决方案 实践过程 1.Mac下安装Ubuntu双系统 (1)Ubuntu版本:Ubuntu 15.10 注:实 ...

  9. 深入理解gradle编译-Android基础篇

    深入理解gradle编译-Android基础篇 导读 Gradle基于Groovy的特定领域语言(DSL)编写的一种自动化建构工具,Groovy作为一种高级语言由Java代码实现,本文将对Gradle ...

随机推荐

  1. iOS开发之计算动态cell的高度并缓存

    项目中有个类似微博那样的动态cell,文字和图片的多少都不是确定的 刚开始使用autolayout,结果很多问题,最后我发现了一个框架 FDTemplateLayoutCell 写的很好,自动布局ce ...

  2. JavaScript 、ECMAScript、commonJS 发展历史 与标准化发展

    本文介绍下JavaScript和 ECMAScript的诞生及发展历史,以及标准化过程. 一.JavaScript诞生 1994年,网景公司(Netscape)发布了Navigator浏览器0.9版. ...

  3. cocos2d-x游戏开发系列教程-超级玛丽01-前言

    前言 上次用象棋演示了cocos2dx的基本用法,但是对cocos2dx并没有作深入的讨论,这次以超级马里奥的源代码为线索,我们一起来学习超级马里奥的实现,并以一些篇幅来详细讲述遇到的具体问题和具体的 ...

  4. 又见拦截导弹(LIS)

    又见拦截导弹 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 大家对拦截导弹那个题目应该比较熟悉了,我再叙述一下题意:某国为了防御敌国的导弹袭击,新研制出来一种导弹拦截系 ...

  5. iOS开发中xib和Storyboard中需要注意的事项

    使用xib注意事项: 1.只有自带view的控件才可以使用xib,因为它本身就是一个view 2.在使用可视化控件添加属性(代码)时候,如果删除了属性代码,一定要在xib上解除关联(不然会崩溃) 3. ...

  6. 谁能告诉我war包的作用及使用方法。。。。。。

    链接地址:http://zhidao.baidu.com/link?url=iliyTcmsTKb1K4gHMtWUsRIBaXglyOKIQsWwdrgvydvnaUHLe0KEoHvLVz8tLY ...

  7. Hadoop 配置文件简介

    1.core-site.xml文件 这是一个描述集群中NameNode结点的URI-统一资源标识符(包括协议,主机名称,端口号),集群里面的每一台机器都需要知道 NameNode的地址.DataNod ...

  8. iOS设置textfield为密码框

    self.passWordTextField.secureTextEntry = YES;

  9. duilib之源码分析

    <duilib之源码分析>1 stdAfx.h * lengthof(x) 计算数组长度宏 * MAX  两值最大 * MIN  两值最小 * CLAMP(x,a,b) x在a,b之间则取 ...

  10. 仿StackOverflow开发在线问答系统

    仿StackOverflow开发在线问答系统 [第二期11月9日开课]使用Python Flask Web开发框架实现一套类似StackOverflow的在线问答平台LouQA,具备提问,回答,评论点 ...