天天看點

Android搭建

編譯環境:ubuntu12.04/16.10

1、解壓Android源碼

7za x /media/oo/Disk2/nanopi2/android-5.1.1_r6-20160401.tar.7z.001 -onanopi2/
           

2、JDK配置

檢視需要的jdk版本

# Check for the current JDK.
#
# For Java 1.7, we require OpenJDK on linux and Oracle JDK on Mac OS.
# For Java 1.6, we require Oracle for all host OSes.
requires_openjdk := false
ifeq ($(LEGACY_USE_JAVA6),)
ifeq ($(HOST_OS), linux)
requires_openjdk := true
endif
endif


# Check for the current jdk
ifeq ($(requires_openjdk), true)
# The user asked for java7 openjdk, so check that the host
# java version is really openjdk
ifeq ($(shell echo '$(java_version_str)' | grep -i openjdk),)
$(info ************************************************************)
$(info You asked for an OpenJDK 7 build but your version is)
$(info $(java_version_str).)
$(info ************************************************************)
$(error stop)
           

從腳本build/core/main.mk觀察,需要open jdk1.7,這和版權協定有關系,設定requires_openjdk := false;

下載下傳jdk1.7

ubuntu沒辦法直接下載下傳open-jdk1.7,我到甲骨文公司下載下傳jdk

http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

解壓jdk

tar -xvf jdk-7u79-linux-x64.tar.gz -C env/jdk1.7
           

設定jdk環境變量,在.bashrc添加jdk路徑

export JAVA_HOME=/home/oo/env/jdk1.7/jdk1.7.0_79
export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
           

驗證jdk版本

[email protected]:~/nanopi2$ source ~/.bashrc 
[email protected]:~/nanopi2$ java -version
java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)
           

3、編譯Android源碼

更新Android環境變量,選擇版本,2線程編譯,根據自己電腦實際CPU核的數量

source build/envsetup.sh
lunch aosp_nanopi2-userdebug
make -j2
           

編譯可能會遇到缺庫

ia32-libs

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install iceweasel:i386
也可以
sudo apt-get install libgl1-mesa-dri:i386
新版本的ubuntu可以直接,前提是你的source.list配置對了
sudo apt-get install lib32z1
           

其他庫

sudo apt-get install bison
sudo apt-get install flex
sudo apt-get install gperf
sudo apt-get install libxml2-utils
sudo apt-get install curl
           

編譯的時候,檢查一下Android版本資訊是否正确

============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=5.1.1
TARGET_PRODUCT=aosp_nanopi2
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
TARGET_2ND_ARCH=
TARGET_2ND_ARCH_VARIANT=
TARGET_2ND_CPU_VARIANT=
HOST_ARCH=x86_64
HOST_OS=linux
HOST_OS_EXTRA=Linux-3.13.0-32-generic-x86_64-with-Ubuntu-12.04-precise
HOST_BUILD_TYPE=release
BUILD_ID=LMY48G
OUT_DIR=out
============================================
           

4、編譯Linux核心

加入交叉編譯路徑

export PATH=/home/oo/env/arm-linux-compile/bin:$PATH
           

如果配置正确後依然提示錯誤,原因是缺少32位庫,參考文章上面的ia32-libs庫安裝,即可解決這個問題。

ncurses庫,menuconfig配置時候使用

sudo apt-get install libncurses5-dev
           

mkimage工具

sudo apt-get install uboot-mkimage
16.10版本可以能棄用,需要更換安裝包
sudo apt-get install u-boot-tools
           

編譯:

make nanopi2_android_defconfig
make uImage
           

生成核心鏡像檔案:arch/arm/boot/uImage

5:調試

Android調試工具

sudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt-get update
sudo apt-get install android-tools-adb
           

繼續閱讀