建立Linux編譯環(huán)境:

十年的下冶網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都全網(wǎng)營(yíng)銷(xiāo)的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整下冶建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)從事“下冶網(wǎng)站設(shè)計(jì)”,“下冶網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
按照慣例,我們?cè)赨buntu的最新版本上測(cè)試編譯過(guò)程,但是,大多數(shù)的Linux發(fā)行版都是可以像Ubuntu一樣提供編譯所需要的環(huán)境的。如果您在哪個(gè)Linux發(fā)行版上編譯成功或編譯失敗,我們很歡迎您能將信息反饋給我們。
注意:也可以在虛擬機(jī)上編譯Android源代碼。如果是在虛擬機(jī)中運(yùn)行Linux,為了能夠構(gòu)建Android項(xiàng)目樹(shù),至少需要8GB的RAM/swap和另外12GB的硬盤(pán)空間。
總的來(lái)說(shuō),你需要一下工具:
1. Python2.4 ~ 2.7 python.org .
2. JDK 6(編譯Gingerbread),JDK5(編譯Froyo),java.sun.com .
3. Git1.5.4或更新版本git-scm.com .
4.(可選)Valgirnd,一個(gè)可以幫助你發(fā)現(xiàn)內(nèi)存泄漏、棧溢出和數(shù)組越界等問(wèn)題的工具valgrind.org .
下面,以Ubuntu 10.04為例來(lái)說(shuō)明具體的搭建過(guò)程:
下載JDK
Sun JDK已經(jīng)被從Ubuntu的主安裝包倉(cāng)庫(kù)中移除。為了下載JDK,需要為系統(tǒng)指定JDK安裝包地址
Java 6:編譯Gingerbread或更新版本
$ sudo add-apt-repository "deb lucid partner"
$ sudo add-apt-repository "deb-src lucid partner"
$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk
Java 5:編譯Froyo和更老版本
$ sudo add-apt-repository "deb dapper main multiverse"
$ sudo add-apt-repository "deb dapper-updates main multiverse"
$ sudo apt-get update
$ sudo apt-get install sun-java5-jdk
輸入如下命令
之后就進(jìn)入了容器shell命令界面
git clone
進(jìn)入EmptyProject文件夾,輸入如下命令
輸入如下命令
等待命令執(zhí)行完成(第一次會(huì)比較慢),最終apk地址 app/build/outputs/apk/release/app-release.apk
至此我們完成了在docker上搭建了android打包編譯環(huán)境,并成功編譯出了apk文件。
android源碼目錄下的build/envsetup.sh文件,描述編譯的命令
- m:?????? Makes from the top of the tree.
- mm:????? Builds all of the modules in the current directory.
- mmm:???? Builds all of the modules in the supplied directories.
要想使用這些命令,首先需要設(shè)置android腳本編譯環(huán)境,在源碼根目錄執(zhí)行 source build/envsetup.sh
m:編譯所有的模塊
mm:編譯當(dāng)前目錄下的模塊,當(dāng)前目錄下要有Android.mk文件
mmm:編譯指定路徑下的模塊,指定路徑下要有Android.mk文件
下面舉個(gè)例子說(shuō)明,假設(shè)我要編譯android下的\framework\av\cmds\screenrecord模塊,
當(dāng)前目錄為源碼根目錄,方法如下:
1、source build/envsetup.sh
2、mmm framework/av/cmds/screenrecord
或者 :
1、source build/envsetup.sh
2、cd framework/av/cmds/screenrecord
3、mm
我們通過(guò)走一下編譯步驟,看一下,這些參數(shù)的來(lái)源吧!
上面這句命令,是編譯前準(zhǔn)備環(huán)境的。
/ build / envsetup.sh
可以看到到引進(jìn)了一堆的函數(shù),有mm,mmm等常用指令
看看跑了啥邏輯,
1.首先判斷了下shell的環(huán)境,最好使用/bin/bash。
參考:
2.包含廠商vendor目錄的vendorsetup.sh
包含后,echo打印出來(lái),像下面這樣子~
lunch就是選擇一些編譯參數(shù),估計(jì)就是在這里準(zhǔn)備好這些全局的參數(shù)的。
lunch函數(shù)在envsetup.sh里面定義
set_stuff_for_environment
會(huì)進(jìn)入set_stuff_for_environment,主要是設(shè)置title,java環(huán)境,paths還有序列號(hào)。貌似沒(méi)多大用處~
printconfig
最后會(huì)進(jìn)入printconfig,就是打印配置信息給我們看啦!
打印一些配置,可以看到TARGET_PRODUCT,TARGET_BUILD_VARIANT和TARGET_BUILD_TYPE。
printconfig包含get_build_var函數(shù),函數(shù)執(zhí)行了一句make指令,make --no-print-directory -C "$T" -f build/core/config.mk dumpvar-$1
(1)make -C "$T" 就是跳轉(zhuǎn)到top目錄。
(2)make -f 來(lái)指定makefile文件build/core/config.mk,我去config.mk還是個(gè)makefile文件。
(3)dumpvary用來(lái)打印用的,就是打印第一個(gè)參數(shù)$1啦,呵呵呵
所以,主要get_build_var主要是執(zhí)行makefile config.mk。
看看/ build / core / config.mk ,可以看到他進(jìn)一步包含了envsetup.mk
envsetup.mk就是最后設(shè)置一些常用編譯環(huán)境參數(shù)的文件了!!
/ build / core / envsetup.mk
看下面的圖,可以看到他定義了很多編譯常量了!!
1.通過(guò)source envsetup.sh可以引進(jìn)很多函數(shù),包含vendorsetup.sh
2.通過(guò)lunch,選擇類型后,會(huì)編譯build/core/config.mk文件,進(jìn)而再編譯envsetup.mk文件,而這個(gè)文件就是定義編譯常量的地方!
1.androidERROR:unknownvirtualdevicename解決法打開(kāi)系統(tǒng)屬性--環(huán)境變量—在“系統(tǒng)變量”那一個(gè)GroupBox下面選擇“新建”--變量名為"ANDROID_SDK_HOME”(注意,這個(gè)變量名不能改變,只能是這個(gè)名字!),然后把變量值改為你想把AVD所在的".android”文件夾放置的位置,比如:"F:\AndroidEmulator”,在這里我把它放在AndroidSDK包中,值為:"D:\SDK\Android\android-sdk-windows-1.5_r3”,如下圖所示。設(shè)定成功的話,在eclipse里preferneces-Android-BulidSetting里為如下結(jié)果:Defaultdebugkeystore:F:\Android_Emulator\\.android\debug.keystore然后這樣就可以一勞永逸了!!!2.emulator-5554disconnected!Cancelling'oms.Hello.HelloOpone'launch!在eclipse里面改變一下你run的時(shí)候的設(shè)置就好了.右點(diǎn)你的工程后run里面有一個(gè)runconfigrations,在里面有一個(gè)選項(xiàng)每次運(yùn)行都察掉記錄wipe.的,選上就好了.
當(dāng)前文章:android編譯環(huán)境,安卓系統(tǒng)編譯環(huán)境
文章起源:http://chinadenli.net/article47/dsedcej.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷(xiāo)推廣、搜索引擎優(yōu)化、定制開(kāi)發(fā)、靜態(tài)網(wǎng)站、商城網(wǎng)站、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)