小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Android 4.3源碼的下載和編譯環(huán)境的安裝及編譯

 Kinetis 2014-01-10
Google于2013.07.25發(fā)布了Android4.3的源碼及其相關(guān)產(chǎn)品,下面把本人在ubuntu10.04 的64位系統(tǒng)上下載源碼,和編譯源碼做個(gè)記錄備份,也供有需要的人參考,難免有錯(cuò),敬請(qǐng)見諒,還忘勿吝嗇指出。

源代碼下載、編譯環(huán)境安裝、源代碼編譯和運(yùn)行模擬器的過程中可能會(huì)出現(xiàn)的一些錯(cuò)誤在本文最后一章節(jié),若出現(xiàn)類似錯(cuò)誤,可以參考。

1、 源碼的下載

源代碼的下載,首先需要安裝以下工具軟件:curl 和 git-core

1.1安裝curl:

打開終端,可以使用按Ctrl+Alt +T的快捷方式打開終端

在終端中執(zhí)行命令:sudo apt-get install curl

1.2安裝git-core

1.2.1在用戶目錄下新建bin目錄

在終端中執(zhí)行:mkdir ~/bin

1.2.2安裝git-core

在終端中執(zhí)行:curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo

給repo執(zhí)行權(quán)限:chmod a+x ~/bin/repo

注:若是下載repo失敗可以到我百度網(wǎng)盤中去下載,下面給出鏈接:

http://pan.baidu.com/share/link?shareid=3522233410&uk=4278685087

將~/bin添加環(huán)境變量,作用是:git軟件下載安裝在此目錄,在別的目錄運(yùn)行可能提示出錯(cuò):會(huì)找不到此軟件。

在終端中執(zhí)行命令:PATH=~/bin:$PATH

1.3 下載源代碼

1.3.1進(jìn)入要源代碼將要保存的目錄

如我的源代碼保存在:、/opt/android4.3

在終端中執(zhí)行:cd /opt/android4.3 進(jìn)入到android4.3目錄中

1.3.2 下載源代碼

對(duì)于下載不同版本的android,指定一個(gè)manifest分支(即只指明android對(duì)應(yīng)的版本),使用-b參數(shù)(即下載某個(gè)版本的源代碼),目前關(guān)于Android 4.3的源碼有以下分支:我們可以選擇自己需要下載的:

  * [new branch]      android-4.3_r0.9 -> origin/android-4.3_r0.9

 * [new branch]      android-4.3_r0.9.1 -> origin/android-4.3_r0.9.1

 * [new branch]      android-4.3_r1 -> origin/android-4.3_r1

 * [new branch]      android-4.3_r2 -> origin/android-4.3_r2

* [new branch]      android-4.3_r2.1 -> origin/android-4.3_r2.1

我們選擇下載最新的源碼,具體命令:

~/bin/repo init -u https://android./platform/manifest -b android-4.3_r2.1

執(zhí)行此命令會(huì)下載一些文件到我們電腦中,這條命令的主要作用是初始化我們要下載的源碼的的一些配置文件,看到類似下面的提示,表示初始化完成。

repo has been initialized in /opt/android4.3username@user-desktop:/opt/android4.3$ 

初始化完成后,會(huì)在/opt/android4.3目錄中生成一個(gè).repo的目錄(此目錄為隱藏屬性的文件,我們可以在終端中使用ls -la命令,或者在文件瀏覽器中選擇“查看”,然后勾選“顯示隱藏文件”,就可以看到此目錄),此目錄保存了將要下載的源代碼的相關(guān)信息,下面我們開始下載源碼

同步獲取源碼

#~/bin/repo sync

如果中間出現(xiàn)中斷,這個(gè)很正常,你可以再次輸入 ~/bin/repo sync 命令來進(jìn)行下載。

可以寫一個(gè)腳本,當(dāng)中斷后,又自動(dòng)開始下載,可以在我網(wǎng)盤中下載此腳本:reposync

http://pan.baidu.com/share/link?shareid=3522233410&uk=4278685087

把reposync腳本放在你源碼的目錄,執(zhí)行./reposync命令就可以了。

根據(jù)網(wǎng)速的不同,下載時(shí)間也有快慢,最好在睡覺前或下班后下載代碼,由于源文件比較大,一般國內(nèi)都要5小時(shí)左右甚至更久。

若是出現(xiàn)以下信息,表示代碼以下載完成:

Fetching projects: 100% (166/166), done.  

Syncing work tree: 100% (165/165), done.

源代碼下載完成后,/opt/android4.3文件夾的大小為20G左右,其中.repo有10 G+。

運(yùn)行~/bin/repo sync 還可以重新校對(duì)下載的源碼,若是有問題或遺漏了一些文件會(huì)重新下載,并從.repo目錄中導(dǎo)出到實(shí)際源碼中

注:此步可能會(huì)出現(xiàn)下載錯(cuò)誤,請(qǐng)查看本文最后部分的說明

2、編譯環(huán)境的搭建

首先若是沒有修改源,請(qǐng)修改為國內(nèi)的源,從而提高軟件的下載安裝的速度

可以參考下面博客的內(nèi)容添加一些速度快的源,如:臺(tái)灣源、Ubuntu官方上海源、網(wǎng)易、搜狐、

http://hi.baidu.com/houxn22/item/48f0f7d150657c16d80e4468

安裝編譯所需的軟件

1、 安裝jdk

官方推薦安裝jdk1.6的,現(xiàn)在不支持命令安裝了,只有Oracle官網(wǎng)下載,或者可以在本人百度網(wǎng)盤下面的地址中下載:

http://pan.baidu.com/share/link?shareid=2263608836&uk=4278685087

打開后選擇jdk-6u45-linux-x64.bin。

安裝完后修改環(huán)境變量。

2、 安裝其它一些編譯所需軟件

在終端中執(zhí)行:sudo apt-get install git-core gnupg flex bison gperf build-essential \

  zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \

  x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \

  libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \

libxml2-utils xsltproc

基本只要安裝以上軟件即可,官方網(wǎng)站上說的其它一些軟件或者設(shè)置可以不用理會(huì)。

注:此步可能會(huì)出現(xiàn)錯(cuò)誤,請(qǐng)查看本文最后部分的說明

3、編譯源代碼

3.1編譯初始化:

在終端中執(zhí)行:

source build/envsetup.sh

或:

. build/envsetup.sh

執(zhí)行后輸出:

source build/envsetup.sh including device/asus/grouper/vendorsetup.shincluding device/asus/tilapia/vendorsetup.shincluding device/generic/armv7-a-neon/vendorsetup.shincluding device/generic/armv7-a/vendorsetup.shincluding device/generic/mips/vendorsetup.shincluding device/generic/x86/vendorsetup.shincluding device/samsung/maguro/vendorsetup.shincluding device/samsung/manta/vendorsetup.shincluding device/samsung/toroplus/vendorsetup.shincluding device/samsung/toro/vendorsetup.shincluding device/ti/panda/vendorsetup.shincluding sdk/bash_completion/adb.bash

3.2選擇編譯目標(biāo):

在終端中執(zhí)行下面的命令:

lunch

之后選擇你要編譯的設(shè)備,選擇后,會(huì)初始化編譯的項(xiàng)目的相關(guān)文件。

3.3編譯代碼:

在終端中執(zhí)行:make -j4

-j4:表示用四個(gè)線程來編譯

編譯根據(jù)不同機(jī)器的配置不同所需時(shí)間也有很大差異。

出現(xiàn)以下信息表示編譯完成:

target Java: ContactsTests (out/target/common/obj/APPS/ContactsTests_intermediates/classes)

target Dex: Contacts

Done!

Install: out/target/product/generic/system/app/Browser.odex

Install: out/target/product/generic/system/app/Browser.apk

Note: Some input files use or override a deprecated API.

Note: Recompile with -Xlint:deprecation for details.

Copying: out/target/common/obj/APPS/Contacts_intermediates/noproguard.classes.dex

target Package: Contacts (out/target/product/generic/obj/APPS/Contacts_intermediates/package.apk)

 'out/target/common/obj/APPS/Contacts_intermediates/classes.dex' as 'classes.dex'...

Processing target/product/generic/obj/APPS/Contacts_intermediates/package.apk

Done!

Install: out/target/product/generic/system/app/Contacts.odex

Install: out/target/product/generic/system/app/Contacts.apk

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:  mkyaffs2image -f out/target/product/generic/system out/target/product/generic/obj/PACKAGING/systemimage_intermediates/system.img

Install system fs image: out/target/product/generic/system.img

DroidDoc took 5331 sec. to write docs to out/target/common/docs/doc-comment-check

編譯可能出現(xiàn)的錯(cuò)誤,請(qǐng)查看本文最后部分的說明

4、運(yùn)行模擬器

在終端中執(zhí)行:emulator

運(yùn)行模擬器可能出現(xiàn)的錯(cuò)誤,請(qǐng)查看本文最后部分的說明

5、相關(guān)問題的解決辦法

5.1 下載源代碼可能會(huì)提示的錯(cuò)誤

5.1.1error: Exited sync due to fetch errors...

方法一:不理會(huì)他,重新執(zhí)行repo sync命令。

方法二:

關(guān)于這個(gè)問題其實(shí)google是有說明的http://source./source/downloading.html,為了防止連接數(shù)過多,每個(gè)ip都需要認(rèn)證。。。

第一步:從這里 the password generator 獲取用戶名和密碼,前提是你在之前填寫了你的真實(shí)姓名和郵箱

第二步:將上面的頁面上以machine開頭的兩行復(fù)制到  ~/.netrc文件中

第三步:repo init -u https://android./a/platform/manifest  多了個(gè)“/a”

然后就可以repo sync了

特別注意.netrc文件是在用戶的根目錄下,root用戶就是/目錄下,如果沒有的話就自己建一個(gè),把權(quán)限改為 *00

5.1.2若是出現(xiàn)這個(gè)錯(cuò)誤:Exited sync due to gc errors 

表示代碼基本下載完,需要從repo里面導(dǎo)出來,但是git的版本太低,不支持1.72以下版本。

添加這個(gè)源:deb http://ftp.de./debian sid main。

在終端中執(zhí)行:gedit /etc/apt/source.list

在文件的最后添加deb http://ftp.de./debian sid main,并保存退出

回到終端中執(zhí)行:sudo apt-get update

更新完后,安裝高版本的git工具

在終端中執(zhí)行:sudo apt-get install git-core
5.1.3.repo sync中遇到error:......checkout ....接一串hashnumber
解決方法:進(jìn)到它說提示的目錄中,用git status顯示文件,將修改過的文件刪除掉,再重新repo sync
5.1.4.repo sync中遇到:contains uncommitted changes
解決方法:進(jìn)到它說提示的目錄中,使用git reset --hard命令
5.1.5. 怎么對(duì)repo下的所有project執(zhí)行g(shù)it命令
解決方法:repo forall -c git checkout -b    //該條命令會(huì)對(duì)repo下的project執(zhí)行切換branch的命令
5.1.6. 怎么切換到你想要的branch
解決方法:git checkout branchName,比如 git checkout testBranch

5.2安裝編譯環(huán)境的軟件可能會(huì)出現(xiàn)的問題

下列軟件包有未滿足的依賴關(guān)系: libasound2: 破壞: libasound2-plugins (< 1.0.24-0ubuntu3) 但是 1.0.22-0ubuntu6 正要被安裝  libglib2.0-0: 破壞: gnome-control-center (< 1:3) 但是 1:2.30.0-0ubuntu4 正要被安裝  ppp: 破壞: network-manager (<= 0.8.0.999-1) 但是 0.8-0ubuntu3 正要被安裝E: 破損的軟件包

某些源有問題,為高版本 ubuntu的源 ,刪除即可,如安裝高版本的git所用的源就是ubuntu 10.4之后的源,用在10.04上就可以會(huì)有問題,引起此提示。

在終端中執(zhí)行:gedit /etc/apt/source.list

把文件的最后 deb http://ftp.de./debian sid main 刪除,并保存退出

回到終端中執(zhí)行:sudo apt-get update

再次重新安裝編譯環(huán)境的軟件

5.3、編譯可能會(huì)遇到的問題:

5.3.1運(yùn)行make命令后,提示以下錯(cuò)誤:/bin/bash: java: command not found

首先檢查是否確實(shí)安裝了jdk,在終端中輸入:java -version ,若是有安裝jdk,就會(huì)顯示jdk的版本信息,提示出錯(cuò),說明沒有安裝jdk,那么就安裝jdk。

安裝jdk后還是提示上面的錯(cuò)誤信息,則按執(zhí)行以下命令建立鏈接文件來解決問題:

sudo ln -s /jdk1.6.0_21/bin/jar ~/bin/jar

sudo ln -s /jdk1.6.0_21/bin/java ~/bin/java

sudo ln -s /jdk1.6.0_21/bin/javac ~/bin/javac

sudo ln -s /jdk1.6.0_21/bin/javah ~/bin/javah

sudo ln -s /jdk1.6.0_21/bin/javadoc ~/bin/javadoc

重新編譯若還是提示一樣的錯(cuò)誤,再執(zhí)行下面的命令:

sudo ln -s /jdk1.6.0_21/bin/jar /bin/jar

sudo ln -s /jdk1.6.0_21/bin/java /bin/java

sudo ln -s /jdk1.6.0_21/bin/javac /bin/javac

sudo ln -s /jdk1.6.0_21/bin/javah /bin/javah

sudo ln -s /jdk1.6.0_21/bin/javadoc /bin/javadoc

至此java的問題應(yīng)該可以解決

5.3.2 編譯出現(xiàn)以下錯(cuò)誤提示:

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

Checking build tools versions...

************************************************************

You are attempting to build with the incorrect version

of java.

 Your version is: java version "1.6.0_24".

The correct version is: Java SE 1.6.

 Please follow the machine setup instructions at

    https://source./source/download.html

************************************************************

build/core/main.mk:141: *** stop。 停止。

切換從普通用戶登,然后修改源碼目錄的存取權(quán)限:chmod 777 src

之后再運(yùn)行編譯命令再次編譯

5.3.3 No command 'lunch' found, did you mean:

解決方法:

運(yùn)行以下命令:

source build/envsetup.sh

之后再次運(yùn)行編譯命令:lunch full-eng或lunch full-user ……..

5.4運(yùn)行模擬器可能會(huì)出現(xiàn)的問題:

No command 'emulator' found, did you mean:

編譯成功之后,在終端運(yùn)行emulator命令,卻提示: 

No command 'emulator' found, did you mean:

Command 'qemulator' from package 'qemulator' (universe)

emulator: command not found

解決方法:

重新運(yùn)行以下命令:

source build/envsetup.sh

lunch full-eng

之后再次運(yùn)行 emulator  命令

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多