ubuntu 14.10 編譯 android 4.4kitkat
由於在windows下開發luncher比較麻煩,決定轉到在linux下開發,自己編譯原始碼。
以下是安裝過程中遇到的問題,需要一一解決:
1、
Android can only be built by versions 3.81 and 3.82
刪除高版本的make 4.0.8,編譯安裝低版本make 3.81
下載make 3.81原始碼
參考make下的README和INSTALL檔案,安裝make 3.81
2、 JDK釋出方和版本問題
You are attempting to build with an unsupported JDK.
You use OpenJDK but only Sun/Oracle JDK is supported.
解除安裝OpenJDK apt-get remove openjdk*
安裝Sun/Oracle JDK
http://blog.csdn.net/tecn14/article/details/24797545 方法
http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase6-419409.html#jdk-6u45-oth-JPR 下載JDK6地址
下面開始安裝jdk
:在把jdk安裝在/usr/lib/jdk下面,
終端下進入你存放jdk-6u37-linux-x64.bin的/home/wr/software/
$sudo chmod 777 jdk-6u37-linux-x64.bin // 將檔案賦於執行許可權
$ sudo -s ./jdk-6u37-linux-x64.bin /usr/lib/jdk
解出來還是在/home/wr/software/目錄下,不糾結於此,直接配置環境變數:
etc/environment :
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/wr/software/jdk1.6.0_45/bin"
CLASSPATH="/home/wr/software/jdk1.6.0_45/lib:."
JAVA_HOME="/home/wr/software/jdk1.6.0_45/"
3、 i686-linux-gcc問題
漏掉了gcc相關包
安裝gcc-multilib
4、 libz.so
/home/wr/Android/android_kitkat/prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6/bin/../lib/gcc/i686-linux/4.6.x-google/../../../../i686-linux/bin/as: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
沒有安裝libz.so.1相關的工具包
安裝apt-file : sudo apt-get install apt-file
然後apt-file update
apt-file search libz.so
:
lib32z1: /usr/lib32/libz.so.1
lib32z1: /usr/lib32/libz.so.1.2.8
lib32z1-dev: /usr/lib32/libz.so
libx32z1: /usr/libx32/libz.so.1
libx32z1: /usr/libx32/libz.so.1.2.8
libx32z1-dev: /usr/libx32/libz.so
zlib1g: /lib/x86_64-linux-gnu/libz.so.1
zlib1g: /lib/x86_64-linux-gnu/libz.so.1.2.8
zlib1g-dev: /usr/lib/x86_64-linux-gnu/libz.so
依次安裝lib32z1 ib32z1-dev lsb-build-base3 zlib1g-dbg等等
5、
Yacc: aidl <= frameworks/base/tools/aidl/aidl_language_y.y
prebuilts/misc/linux-x86/bison/bison -d -o out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp frameworks/base/tools/aidl/aidl_language_y.y
make: *** [out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp] 斷開的管道
解決:
sudo apt-get install bison
6、
Lex: aidl <= frameworks/base/tools/aidl/aidl_language_l.l
/bin/bash: flex: 未找到命令
make: *** [out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_l.cpp] 錯誤 127
解決:
sudo apt-get install flex
7、
File "/usr/lib/python2.7/subprocess.py", line 1335, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
make: *** [out/target/product/generic/obj/GYP/shared_intermediates/blink/CSSPropertyNames.cpp] 錯誤 1
確認並安裝了以下環境:
git gnupg flex bison gperf build-essential zip curl libc6-dev x11proto-core-dev g++-multilib tofrodos python-markdown libxml2-utils xsltproc
確認漏裝了:
gperf build-essential x11proto-core-dev g++-multilib tofrodos python-markdown libxml2-utils xsltproc
http://blog.chinaunix.net/uid-25737580-id-3150901.html
編譯完成後,在source目錄下會生成一個out資料夾,在out/target/product/generic/下是生成的system.img,ramdisk.img,userdata.img.
00
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=4.4
TARGET_PRODUCT=full
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a
TARGET_CPU_VARIANT=generic
HOST_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-3.16.0-28-generic-x86_64-with-Ubuntu-14.10-utopic
HOST_BUILD_TYPE=release
BUILD_ID=KRT16S
OUT_DIR=out
============================================
編譯好後,進入模擬器
http://jingyan.baidu.com/article/86112f13549b44273797872c.html
source build/envsetup.sh
lunch
1
emulator
大功告成~ 現在可以隨心所欲的學習原始碼了~