1、宿主机:ubuntu14.04 x64
2、目标机:tiny4412开发板
搭建个Android环境需要boot、kernle、Android三大部分。
这里分别对应:uboot、linux-3.5、android-4.2.2_r1,这里主要讲解android-4.2.2_r1编译。
一、编译android-4.2.2_r1环境准备
在ubuntu14.04中需要安装下面的库:
sudo apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dri:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 dpkg-dev |
并且手动安装jdk(对于4.x版本的android使用的jdk是1.6版本,如果是5.x使用1.7的jdk的版本)
手动安装jdk过程记录:
① 下载jdk,使用下面的链接地址下载
http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase6-419409.html#jdk-6u45-oth-JPR
把下载的jdk-6u45-linux-x64.bin拷贝到/usr/local/java目录。
② 安装jdk
root@andorid-virtual-machine:/usr/local/java# ./jdk-6u45-linux-x64.bin
③ 配置jdk环境变量,修改/etc/profile
JAVA_HOME=/usr/local/java/jdk1.6.0_45
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
export JAVA_HOME
export PATH
④ 重启ubuntu就可以使用下面命令来查看是否安装和设置环境变量成功
root@andorid-virtual-machine:/usr/local/java# java -version //出现下面的信息表示成功
java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)
root@andorid-virtual-machine:/usr/local/java#
到了这里编译安卓源码的环境就搭建成功了。接下开始编译安卓
二、编译andorid4.2.2版本
1、进入安卓源码
# cd /work/tiny4412/Andorid/android-4.2.2_r1
2、设置环境变量
root@andorid-virtual-machine:/work/tiny4412/Andorid/android-4.2.2_r1# source setenv
3、选择编译平台
root@andorid-virtual-machine:/work/tiny4412/Andorid/android-4.2.2_r1# lunch
选择:
full_tiny4412-eng
4、设置cache加快编译速度
root@andorid-virtual-machine:/work/tiny4412/Andorid/android-4.2.2_r1# prebuilts/misc/linux-x86/ccache/ccache -M 50G
5、编译
root@andorid-virtual-machine:/work/tiny4412/Andorid/android-4.2.2_r1# make
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=4.2.2
TARGET_PRODUCT=full_tiny4412
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a-neon
HOST_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-3.19.0-25-generic-x86_64-with-Ubuntu-14.04-trusty
HOST_BUILD_TYPE=release
BUILD_ID=JDQ39
OUT_DIR=out
============================================
find: `../../vendor/unbundled_google/libs/gcm/gcm-client/src': 没有那个文件或目录
find: `../../vendor/unbundled_google/libs/gcm/gcm-server/src': 没有那个文件或目录
find: `../../vendor/unbundled_google/libs/gcm/gcm-client/src': 没有那个文件或目录
find: `../../vendor/unbundled_google/libs/gcm/gcm-server/src': 没有那个文件或目录
出现上面没找到文件或者目录的警告。
PRODUCT_COPY_FILES frameworks/base/data/sounds/ringtones/ogg/Scarabaeus.ogg:system/media/audio/ringtones/Scarabaeus.ogg ignored.
PRODUCT_COPY_FILES frameworks/base/data/sounds/ringtones/ogg/Solarium.ogg:system/media/audio/ringtones/Solarium.ogg ignored.
build/core/Makefile:32: 警告:覆盖关于目标“out/target/product/tiny4412/system/etc/permissions/android.software.live_wallpaper.xml”的命令
build/core/base_rules.mk:502: 警告:忽略关于目标“out/target/product/tiny4412/system/etc/permissions/android.software.live_wallpaper.xml”的旧命令
build/core/Makefile:32: 警告:覆盖关于目标“out/target/product/tiny4412/root/init.rc”的命令
system/core/rootdir/Android.mk:46: 警告:忽略关于目标“out/target/product/tiny4412/root/init.rc”的旧命令
BEGIN failed--compilation aborted at external/webkit/Source/WebCore/make-hash-tools.pl line 23.
make: *** [out/target/product/tiny4412/obj/STATIC_LIBRARIES/libwebcore_intermediates/Source/WebCore/html/DocTypeStrings.cpp] 错误 2
make: *** 正在等待未完成的任务....
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.
make: *** [out/target/product/tiny4412/obj/STATIC_LIBRARIES/libwebcore_intermediates/Source/WebCore/platform/ColorData.cpp] 错误 2
解决方法:
apt-get install libswitch-perl
重新编译。
Install: out/host/linux-x86/framework/dvlib-tests.jar
注意:某些输入文件使用或覆盖了已过时的 API。
注意:要了解详细信息,请使用 -Xlint:deprecation 重新编译。
注意:某些输入文件使用了未经检查或不安全的操作。
注意:要了解详细信息,请使用 -Xlint:unchecked 重新编译。
Install: out/host/linux-x86/framework/bouncycastle-bcpkix-host.jar
host Java: cts-java-scanner-doclet (out/host/common/obj/JAVA_LIBRARIES/cts-java-scanner-doclet_intermediates/classes)
/bin/bash: jar: 未找到命令
/bin/bash: jar: 未找到命令
make: *** [out/host/common/obj/JAVA_LIBRARIES/common_intermediates/javalib.jar] 错误 127
make: *** 正在等待未完成的任务....
make: *** [out/host/common/obj/JAVA_LIBRARIES/hosttestlib_intermediates/javalib.jar] 错误 127
/bin/bash: jar: 未找到命令
make: *** [out/host/common/obj/JAVA_LIBRARIES/cts-java-scanner-doclet_intermediates/javalib.jar] 错误 127
/bin/bash: jar: 未找到命令
make: *** [out/host/common/obj/JAVA_LIBRARIES/ddmuilib_intermediates/javalib.jar] 错误 127
注意:某些输入文件使用了未经检查或不安全的操作。
注意:要了解详细信息,请使用 -Xlint:unchecked 重新编译。
/bin/bash: jar: 未找到命令
解决:配置jdk的路径
最终经过漫长的等待终于编译成功了!