编译android-4.3.1_r源码并刷到自己的Galaxy Nexus I9250真机上
作者:雨水 日期:2014-04-30
我在网上看有基于4.4源代码+4.3驱动编译成功并能运行的,但我尝试了,很多错误到目前为止还没解决(已于2014-5-4已搞定),因此先尝试了4.3的源码+4.3的驱动。下面就是整个过程:
第一步:获取android-4.3.1_r1的源码
$mkdir android-4.3.1_r1 $cd android-4.3.1_r1 $repo init -u https://android.googlesource.com/platform/manifest -b android-4.3.1_r1 $repo sync
第二步:编译android-4.3.1_r1的源码
dennis@dubuntu1404:~/devenv/android-4.3.1_r1$ . build/envsetup.sh including device/asus/deb/vendorsetup.sh including device/asus/flo/vendorsetup.sh including device/asus/tilapia/vendorsetup.sh including device/generic/armv7-a-neon/vendorsetup.sh including device/generic/mips/vendorsetup.sh including device/generic/x86/vendorsetup.sh including device/lge/mako/vendorsetup.sh including device/samsung/maguro/vendorsetup.sh including device/samsung/manta/vendorsetup.sh including device/samsung_slsi/arndale/vendorsetup.sh including device/samsung/toroplus/vendorsetup.sh including device/samsung/toro/vendorsetup.sh including device/ti/panda/vendorsetup.sh including sdk/bash_completion/adb.bash dennis@dubuntu1404:~/devenv/android-4.3.1_r1$ lunch You're building on Linux Lunch menu... pick a combo: 1. aosp_arm-eng 2. aosp_x86-eng 3. aosp_mips-eng 4. vbox_x86-eng 5. aosp_deb-userdebug 6. aosp_flo-userdebug 7. full_tilapia-userdebug 8. mini_armv7a_neon-userdebug 9. mini_mips-userdebug 10. mini_x86-userdebug 11. full_mako-userdebug 12. full_maguro-userdebug 13. full_manta-userdebug 14. full_arndale-userdebug 15. full_toroplus-userdebug 16. full_toro-userdebug 17. full_panda-userdebug Which would you like? [aosp_arm-eng] 12 ============================================ PLATFORM_VERSION_CODENAME=REL PLATFORM_VERSION=4.3.1 TARGET_PRODUCT=full_maguro TARGET_BUILD_VARIANT=userdebug TARGET_BUILD_TYPE=release TARGET_BUILD_APPS= TARGET_ARCH=arm TARGET_ARCH_VARIANT=armv7-a-neon TARGET_CPU_VARIANT=cortex-a9 HOST_ARCH=x86 HOST_OS=linux HOST_OS_EXTRA=Linux-3.13.0-24-generic-x86_64-with-Ubuntu-14.04-trusty HOST_BUILD_TYPE=release BUILD_ID=JLS36I OUT_DIR=out ============================================ dennis@dubuntu1404:~/devenv/android-4.3.1_r1$ make -j4
注1:如果这一步直接刷机,会出现提示flash成功,但是重启之后出现google的logo之后就黑屏,无法启动。原因就是因为驱动没有加进来,必须完成第三步之后再开始刷机。
注2:编译过程中可能会出现如下错误:
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. BEGIN failed--compilation aborted at external/webkit/Source/WebCore/make-hash-tools.pl line 23.
解决办法:
$sudo apt-get install libswitch-perl
第三步:下载i9250(maguro)的官方驱动并重新编译
(2) 执行.sh文件提取驱动程序: 通过执行"chmod +x *.sh"为它们增加可执行权限,然后依次执行这6个sh文件,每个文件会让你输入"I ACCEPT"来接受协议。接受之后会将提取后的驱动放入名为vendor的目录中。此时,vendor目录应该位于源代码的根目录之下,即android-4.3.1_r1之下。
然后再次依次执行如下命令重新编译,本次编译时间会比较短。
$. build/envsetup.sh $lunch 12 $make -j4
第四步 将编译好的img刷到i9250手机上
(1) 修改~/.bashrc中的环境变量ANDROID_PRODUCT_OUT为:
export ANDROID_PRODUCT_OUT=/home/dennis/devenv/android-4.3.1_r1/out/target/product/maguro
(2) 重新进入命令行,然后开始刷机
$ adb reboot bootloader $ fastboot flashall -w
刷好之后,系统会自动重启,如果没什么其他问题,你可以看到你的劳动成果了!