1. 程式人生 > >Linux(ubuntu14.04)上編譯Android4.4原始碼的環境搭建及編譯

Linux(ubuntu14.04)上編譯Android4.4原始碼的環境搭建及編譯

1.下載並安裝jdk6
  注意,版本一定要是jdk6,其他版本都會有問題。
  網上流傳的方法大都是apt-get install來安裝jdk,實際操作證明這樣是不行的,下面給出個下載jdk6的地址
  https://jdk6.java.net/download.html  在這裡根據自己機器配置情況選擇自解壓檔案(self-extracting)就好了
  上面下載得到jdk-6u38-linux-x64.bin檔案,改變屬性使其擁有可執行許可權。
  ./jdk-6u38-ea-bin-b04-linux-i586-31_oct_2012.bin即可安裝

2.Linux配置jdk的環境變數

# set jdk environment  
export JAVA_HOME=/usr/local/java/jdk1.6.0_38
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH  
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH  
3.更新環境變數使其生效
   (1) 配置JAVA_HOME和PATH環境變數 $ sudo vi /etc/profile 在該檔案的末尾加上如下部分: JAVA_HOME=/usr/local/java/jdk1.6.0_45
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
export JAVA_HOME
export PATH (2) 配置ubuntu的JDK和JRE的位置 $ sudo update-alternatives --install "/usr/bin/java" "java" "/usr/local/java/jdk1.6.0_45/bin/java" 1 $ sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/local/java/jdk1.6.0_45/bin/javac" 1 $ sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/local/java/jdk1.6.0_45/bin/javaws" 1 (3) 配置Oracle為系統預設JDK/JRE $ sudo update-alternatives --set java /usr/local/java/jdk1.6.0_45/bin/java $ sudo update-alternatives --set javac /usr/local/java/jdk1.6.0_45/bin/javac
$ sudo update-alternatives --set javaws /usr/local/java/jdk1.6.0_45/bin/javaws 配置完成後,執行如下命令使其立即生效。 $ . /etc/profile

  java -version
  若能看到自己安裝的jdk6的版本號則說明jdk環境變數已經配置成功

6.預先要安裝的其他軟體

  說明下,為保證編譯過程中不老是缺少某些軟體而中斷,所以我們一定要做好準備工作,不打任何一場無準備的仗。
  網上很多前輩都已經給出來了不少要提前安裝好的軟體,下面我把它們集中整理出來。
  sudo apt-get install build-essential
  sudo apt-get install make
  sudo apt-get install gcc
  sudo apt-get install g++
  sudo apt-get install libc6-dev
  sudo apt-get install patch
  sudo apt-get install texinfo
  sudo apt-get install libncurses-dev
  sudo apt-get install git-core gnupg
  sudo apt-get install flex
  sudo apt-get install bison
  sudo apt-get install gperf
  sudo apt-get install libsdl-dev
  sudo apt-get install libesd0-dev
  sudo apt-get install libwxgtk2.6-dev
  sudo apt-get install build-essential
  sudo apt-get install zip
  sudo apt-get install curl
  sudo apt-get install ncurses-dev
  sudo apt-get install zlib1g-dev
  sudo apt-get install valgrind
  sudo apt-get install python2.5(該軟體我沒有安裝成功,最後也沒出什麼問題)
  sudo apt-get install libgtk2.0-0:i386
  sudo apt-get install libpangox-1.0-0:i386
  sudo apt-get install libpangoxft-1.0-0:i386
  sudo apt-get install libidn11:i386
  sudo apt-get install gstreamer0.10-pulseaudio:i386
  sudo apt-get install gstreamer0.10-plugins-base:i386
  sudo apt-get install gstreamer0.10-plugins-good:i386
  sudo apt-get install gstreamer0.10-ffmpeg:i386(該軟體我沒有安裝成功,最後也沒出什麼問題)
 
  再加個說明:上面的軟體中最後幾個以i386是因為一個錯誤(具體什麼錯誤現在實在記不起來了),錯誤原因就是需要安裝ia32-libs的軟體包64位Linux(Ubuntu)上編譯Android原始碼時還需要一個32位Linux的包,所以需要這個ia32-libs的支援包,但這個ia32-libs的軟體包在網上根本沒有找到,也沒發現實際可用的解決方案,但從Ubuntu官網上來看,這個ia32-libs其實就是若干軟體包的合集,所以下載安裝其中的那麼幾個軟體包就可以達到我們的目的。
 
7.正式編譯Android原始碼

  做了那麼多的準備工作,現在終於可以做正事了。根據Android官網的說法,編譯Android原始碼執行下面三個命令即可

  ①source build/envsetup.sh

including device/asus/tilapia/vendorsetup.sh
including device/asus/flo/vendorsetup.sh
including device/asus/grouper/vendorsetup.sh
including device/asus/deb/vendorsetup.sh
including device/generic/armv7-a-neon/vendorsetup.sh
including device/generic/mips/vendorsetup.sh
including device/generic/x86/vendorsetup.sh
including device/samsung/manta/vendorsetup.sh
including device/lge/hammerhead/vendorsetup.sh
including device/lge/mako/vendorsetup.sh
including sdk/bash_completion/adb.bash
[email protected]:~/AOSP$ lunch full-eng

============================================


  ②lunch full-eng

    此時要選擇一個編譯平臺

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.19.0-25-generic-x86_64-with-Ubuntu-14.04-trusty
HOST_BUILD_TYPE=release
BUILD_ID=KRT16M
OUT_DIR=out
============================================


  ③make -j4
    這裡的n注意取值,網上一般說法是CPU核數的兩倍,還有一說是CPU核數加1。到底哪個更準確我也沒有驗證。
    但要值得提醒的是,雖然n用一個大的值會使編譯速度加快,但如果n取值過大,編譯是會報錯的。
    如果實在不確定n應該用什麼值,那就直接用make命令吧。
   
    從編譯開始到編譯結束,中間仍有可能有錯哦,所有不要掉以輕心,隨時看著點,以便及時解決掉。注意:解決掉錯誤以後,重複上面的3小步,會接著編譯。我是在Window7下安裝的Ubuntu14.04,分配空間是100G,直接用的make -j4命令,編譯2個多小時吧

編譯結果如下:

Processing target/product/generic/obj/APPS/Email_intermediates/package.apk
Done!
Install: out/target/product/generic/system/app/Email.odex
Install: out/target/product/generic/system/app/Email.apk
target Symbolic: libwebviewchromium (out/target/product/generic/symbols/system/lib/libwebviewchromium.so)
target Strip: libwebviewchromium (out/target/product/generic/obj/lib/libwebviewchromium.so)
Install: out/target/product/generic/system/lib/libwebviewchromium.so
Install: out/target/product/generic/system/framework/webviewchromium.jar
Install: out/target/product/generic/fake_packages/webview-timestamp
build/tools/generate-notice-files.py  out/target/product/generic/obj/NOTICE.txt  out/target/product/generic/obj/NOTICE.html "Notices for files contained in the filesystem images in this directory:" out/target/product/generic/obj/NOTICE_FILES/src
Combining NOTICE files into HTML
Combining NOTICE files into text
Installed file list: out/target/product/generic/installed-files.txt
Target system fs image: out/target/product/generic/obj/PACKAGING/systemimage_intermediates/system.img
Running:  mkuserimg.sh out/target/product/generic/system out/target/product/generic/obj/PACKAGING/systemimage_intermediates/system.img ext4 system 576716800 out/target/product/generic/root/file_contexts
+ echo 'in mkuserimg.sh PATH=out/host/linux-x86/bin/:/usr/local/java/jdk1.6.0_38/bin:/home/yetmare/ASOP/out/host/linux-x86/bin:/home/yetmare/ASOP/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.7/bin:/home/yetmare/ASOP/prebuilts/gcc/linux-x86/arm/arm-eabi-4.7/bin:/home/yetmare/ASOP/prebuilts/gcc/linux-x86/mips/mipsel-linux-android-4.7/bin:/home/yetmare/ASOP/development/emulator/qtools:/home/yetmare/ASOP/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.7/bin:/home/yetmare/ASOP/prebuilts/gcc/linux-x86/arm/arm-eabi-4.7/bin:/home/yetmare/ASOP/development/scripts:/home/yetmare/ASOP/prebuilts/devtools/tools:/usr/local/java/jdk1.6.0_38/bin:/usr/local/java/jdk1.6.0_38/jre/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games'
in mkuserimg.sh PATH=out/host/linux-x86/bin/:/usr/local/java/jdk1.6.0_38/bin:/home/yetmare/ASOP/out/host/linux-x86/bin:/home/yetmare/ASOP/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.7/bin:/home/yetmare/ASOP/prebuilts/gcc/linux-x86/arm/arm-eabi-4.7/bin:/home/yetmare/ASOP/prebuilts/gcc/linux-x86/mips/mipsel-linux-android-4.7/bin:/home/yetmare/ASOP/development/emulator/qtools:/home/yetmare/ASOP/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.7/bin:/home/yetmare/ASOP/prebuilts/gcc/linux-x86/arm/arm-eabi-4.7/bin:/home/yetmare/ASOP/development/scripts:/home/yetmare/ASOP/prebuilts/devtools/tools:/usr/local/java/jdk1.6.0_38/bin:/usr/local/java/jdk1.6.0_38/jre/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
+ ENABLE_SPARSE_IMAGE=
+ '[' out/target/product/generic/system = -s ']'
+ '[' 6 -ne 5 -a 6 -ne 6 ']'
+ SRC_DIR=out/target/product/generic/system
+ '[' '!' -d out/target/product/generic/system ']'
+ OUTPUT_FILE=out/target/product/generic/obj/PACKAGING/systemimage_intermediates/system.img
+ EXT_VARIANT=ext4
+ MOUNT_POINT=system
+ SIZE=576716800
+ FC=out/target/product/generic/root/file_contexts
+ case $EXT_VARIANT in
+ '[' -z system ']'
+ '[' -z 576716800 ']'
+ '[' -n out/target/product/generic/root/file_contexts ']'
+ FCOPT='-S out/target/product/generic/root/file_contexts'
+ MAKE_EXT4FS_CMD='make_ext4fs  -S out/target/product/generic/root/file_contexts -l 576716800 -a system out/target/product/generic/obj/PACKAGING/systemimage_intermediates/system.img out/target/product/generic/system'
+ echo make_ext4fs -S out/target/product/generic/root/file_contexts -l 576716800 -a system out/target/product/generic/obj/PACKAGING/systemimage_intermediates/system.img out/target/product/generic/system
make_ext4fs -S out/target/product/generic/root/file_contexts -l 576716800 -a system out/target/product/generic/obj/PACKAGING/systemimage_intermediates/system.img out/target/product/generic/system
+ make_ext4fs -S out/target/product/generic/root/file_contexts -l 576716800 -a system out/target/product/generic/obj/PACKAGING/systemimage_intermediates/system.img out/target/product/generic/system
Creating filesystem with parameters:
    Size: 576716800
    Block size: 4096
    Blocks per group: 32768
    Inodes per group: 7040
    Inode size: 256
    Journal blocks: 2200
    Label: 
    Blocks: 140800
    Block groups: 5
    Reserved block group size: 39
Created filesystem with 1263/35200 inodes and 81851/140800 blocks
+ '[' 0 -ne 0 ']'
Install system fs image: out/target/product/generic/system.img
out/target/product/generic/system.img+ maxsize=588791808 blocksize=2112 total=576716800 reserve=5947392
    

至此,Linux(ubuntu14.04)上編譯Android原始碼的環境搭建及編譯全過程已經結束了。

8.在模擬器中執行

在模擬器中執行的步驟就比較簡單了,只需在終端中執行如下命令即可:

emulator
執行成功後的介面如下:


最後在贈送一個Ubuntu上安裝7z軟體包的命令及使用方法

安裝7z:apt-get install p7zip-full
使用7z:7z x file file是要解壓的檔名
轉自:jileniao.net/linux-android-building.html

相關推薦

Android 原始碼環境搭建編譯

假設原始碼根目錄為~/Android 1 環境搭建 1.1 安裝openjdk-7-jdk Android 5.1 用到的jdk不再是Oracle 的 jdk ,而是開源的 openjdk,在ubuntu安裝好後,使用如下命令安裝jdk:

Linux(ubuntu14.04)編譯Android4.4原始碼環境搭建編譯全過程

關於Linux(ubuntu14.04)上編譯Android原始碼的環境搭建詳細過程都是在sublime text中編輯好的,無奈,這次的資料丟失讓我不得不重新來回想手打一次了。可能很多細節問題,這次重新編輯文章時不會記得那麼清晰了,還請有問題的朋友在下面留言給我就好了。

Linux(ubuntu14.04)編譯Android4.4原始碼環境搭建編譯

1.下載並安裝jdk6   注意,版本一定要是jdk6,其他版本都會有問題。   網上流傳的方法大都是apt-get install來安裝jdk,實際操作證明這樣是不行的,下面給出個下載jdk6的地址   https://jdk6.java.net/download.htm

Linux鞏固記錄(1) J2EE開發環境搭建網絡配置

version 環境 com sco 由於 lin spa node 開發環境 由於要近期使用hadoop等進行相關任務執行,操作linux時候就多了 以前只在linux上配置J2EE項目執行環境,無非配置下jdk,部署tomcat,再通過docker或者jenkins自動

彙編執行環境搭建編譯環境搭建

宿主機:ThinkPad E431  Windows10專業版 作者:不笑貓喲   參考資料: https://blog.csdn.net/doniexun/article/details/45438457 https://blog.csdn.net/xiang_sha

cordova環境搭建編譯

配置Cordova 開發環境 下載安裝node.js 安裝下載 下載安裝android Studio,進入介面後進入管理SDK,下載26 下載gardle3.3(可以先不下,一般構建的時候自動下載) 下載cordova:通過命令列輸入npm install -g

Msm8937+android7.1.1編譯環境搭建編譯

Msm8937+android7.1.1編譯環境搭建及編譯1. 硬體配置建議如下:記憶體>=16GBCPU>=i7 四核2. 軟體配置如下:系統:Ubuntu16.04JDK:open jdk 1.83.環境安裝:更換預設shell,使用下面命令:sudo rm

[1] ubuntu 16.04下ffmpeg+sdl的開發環境搭建測試

日期:2016.09.28 作者:isshe github:https://github.com/isshe 郵箱:[email protected] 安裝ffmpeg:

scala + intellij idea 環境搭建編譯、打包

大資料生態圈中風頭正旺的Spark專案完全是採用Scala語言開發的,不懂Scala的話,基本上就沒法玩下去了。Scala與Java編譯後的class均可以運行於JVM之上,就好象.NET中F#與C#的關係。下面進入正題: 1、下載scala sdk (後面在int

基於Ubuntu 14.04 LTS編譯Android4.4.2原始碼

轉自:http://blog.csdn.net/gobitan/article/details/24367439 基於Ubuntu 14.04 LTS編譯Android4.4.2原始碼         Dennis Hu 2014-4-21 環境準備: 基

ubuntu14.04原始碼編譯安裝Mplayer

step1,準備好所有的檔案,如下所示: MPlayer原始檔:MPlayer-1.0rc4.tar.bz2 MPlayer 面板檔案:Abyss-1.7.tar.bz2 MPlayer通用解碼器:essential-20071007.tar.bz2以上檔案都可以在http

webrtc在ubuntu14.04編譯過程(12.04亦可)

使用 設置 arch clean lean 文件拷貝 ubun script name 轉自:http://blog.csdn.net/xiangjai/article/details/44409751 一、虛擬機環境搭建 1、安裝ubuntu 14.04虛擬機:

linux(ubuntu14.04)+cuda7.5+caffe+openCV2.4.9+matlab+cudnn新手配置

ubuntu14.04的安裝 *********************************************************************************

(2018/4/7更新資源連結)Ubuntu14.04配置caffe經驗總結(含GPU)

-----------------2016/10/27更新-----------------------------參考連結,感謝原作者!http://blog.csdn.net/enjoyyl/article/details/47397505http://blog.sina

[轉][linux(ubuntu14.04)+GPU+cuda6.5+caffe+openCV2.4.9+matlab2013b+python2.7的新手配置轉]

./deviceQuery Starting...  CUDA Device Query (Runtime API) version (CUDART static linking) Detected 1 CUDA Capable device(s) Device 0: "GeForce GTX 750 Ti"

ubuntu14.04VLC編譯問題

最近將VLC-2.1.6在ubuntu上編譯,由於gstreamer版本是0.10,因此不能用vlc 2.0之後的版本. 編譯時報錯,錯誤資訊如下: /usr/bin/ld: /usr/local/lib/libavformat.a(allformats.o): reloc

編譯Android4.4.2原始碼 error while loading shared libraries: libstdc++.so.6

Yacc: aidl <= frameworks/base/tools/aidl/aidl_language_y.y prebuilts/misc/linux-x86/bison/bison -d  -o out/host/linux-x86/obj/EXECUTAB

gsoap在ubuntu14.04編譯

1.我使用的是gsoap-2.8.27這個版本,編譯時依賴的庫比較多,提前把這些庫安裝好,命令如下: apt-get install g++ apt-get install flex apt-get

用NDK在Ubuntu14.04安裝arm交叉編譯環境

之前沒有接觸過交叉編譯,後來因為在實驗室要在機器人上跑arm程式,所以就嘗試著用Ubuntu來編譯arm的程式,自己上網查方法並諮詢了很多同學同事,最終搭建成功了這個交叉編譯環境。 由於NDK中帶有一整套arm的gcc和g++編譯器,庫和檔案,所以用NDK安裝

基於Ubuntu 14.04 LTS編譯Android4.4.2源碼

.html emd sse url ice 下載源 rime class onf 版權聲明:本文為博主原創文章,未經博主