编译android-4.3.1_r源码并刷到自己的Galaxy Nexus I9250真机上

编译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的源码
[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  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的源码
[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  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:编译过程中可能会出现如下错误:
[plain]  view plain copy
  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.  
解决办法:
[plain]  view plain copy
  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之下。
然后再次依次执行如下命令重新编译,本次编译时间会比较短。
[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. $. build/envsetup.sh  
  2. $lunch 12  
  3. $make -j4  
第四步 将编译好的img刷到i9250手机上
(1) 修改~/.bashrc中的环境变量ANDROID_PRODUCT_OUT为:
[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. export ANDROID_PRODUCT_OUT=/home/dennis/devenv/android-4.3.1_r1/out/target/product/maguro  
(2) 重新进入命令行,然后开始刷机
[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. $ adb reboot bootloader  
  2. $ fastboot flashall -w  
刷好之后,系统会自动重启,如果没什么其他问题,你可以看到你的劳动成果了!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值