1. 程式人生 > >ubuntu 14.10 編譯 android 4.4kitkat

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下的READMEINSTALL檔案,安裝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

大功告成~ 現在可以隨心所欲的學習原始碼了~