亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問板塊 發(fā)新帖
查看: 1155 | 回復(fù): 0
打印 上一主題 下一主題

Android 編譯大全 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2011-12-22 08:51 |只看該作者 |倒序?yàn)g覽
Android編譯大全(二)
2.  編譯源代碼

v  執(zhí)行l(wèi)s -la /bin/sh命令,如果輸出如下:

rwxrwxrwx 1 root root 4 2010-02-10 17:14 /bin/sh -> dash

請(qǐng)執(zhí)行$sudo dpkg-reconfigure dash命令修改sh版本,并選擇“否”;

此處如果不改好的話,編譯時(shí)會(huì)出現(xiàn)錯(cuò)誤。

 

v  執(zhí)行source build/envsetup.sh命令

v  執(zhí)行choosecombo命令,出現(xiàn)選擇對(duì)話框

u  Build for the simulator or the device?

u       1. Device

u       2. Simulator

u  

u  Which would you like? [1]   

u   

u  Build type choices are:

u       1. release

u       2. debug

u  

u  Which would you like? [2]

u  

u  Product choices are:

u       1. core

u       2. full_dream

u       3. full

u       4. full_passion

u       5. full_sapphire

u       6. generic_dream

u       7. generic

u       8. generic_passion

u       9. generic_sapphire

u       10. msm7625_qrd

u       11. msm7627_ffa

u       12. msm7627_surf

u       13. msm7630_surf

u       14. qsd8250_ffa

u       15. qsd8250_surf

u       16. sample_addon

u       17. sdk

u       18. sim

u  You can also type the name of a product if you know it.

u  Which product would you like? [generic] 3

u  

u  Variant choices are:

u       1. user

u       2. userdebug

u       3. eng

u  Which would you like? [eng]

 

如果執(zhí)行這個(gè)命令的時(shí)候,報(bào)錯(cuò):/bin/sh: Syntax error: "(" unexpected

#請(qǐng)執(zhí)行$sudo dpkg-reconfigure dash命令,并選擇“否”;

 

v  配置環(huán)境變量

export JAVA_HOME=/usr/lib/jvm/java-5-sun

export CLASSPATH=$JAVA_HOME/lib

export JRE_HOME=$JAVA_HOME/jre

export JAVA_PATH=$JAVA_HOME/bin:$JRE_HOME/bin

export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:

$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export ANDROID_JAVA_HOME=$JAVA_HOME

export PATH=$JAVA_PATH:$PATH

 

v  執(zhí)行make命令

如果安裝的是java1.6,將報(bào)錯(cuò),如下:

Your version is: java version "1.6.0_15".

The correct version is: 1.5.

 

解決java編譯錯(cuò)誤,如下:

1)     下載jdk1.5(ftp://202.112.80.252/java/jdk-1_5_0_21-linux-i586.bin);

2)     將jdk-1_5_0_21-linux-i586.bin變?yōu)榭蓤?zhí)行權(quán)限

$sudo chmod a+x jdk-1_5_0_21-linux-i586.bin

3)     在命令行下執(zhí)行./jdk-1_5_0_21-linux-i586.bin安裝sdk

4)     建立一個(gè)軟連接到j(luò)dk目錄

$sudo ln jdk1.5.0_21/ java-5-sun -s

5)     然后配置環(huán)境變量:sudo gedit/etc/enviroment在其中添加兩行:

CLASSPATH=/usr/lib/jvm/java-5-sun/lib

JAVA_HOME=/usr/lib/jvm/java-5-sun

 

如果在出現(xiàn)類似使用了舊版api的錯(cuò)誤,請(qǐng)先按照提示執(zhí)行make update-api命令。該命令執(zhí)行結(jié)束之后,再繼續(xù)執(zhí)行make命令就可以編譯成功了。

 

在配置好shell命令類型之后,也可以新建一個(gè)shell腳本如下,進(jìn)行自動(dòng)編譯:

export JAVA_HOME=/usr/lib/jvm/java-5-sun

export CLASSPATH=$JAVA_HOME/lib

export JRE_HOME=$JAVA_HOME/jre

export JAVA_PATH=$JAVA_HOME/bin:$JRE_HOME/bin

export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export ANDROID_JAVA_HOME=$JAVA_HOME

export PATH=$JAVA_PATH:$PATH

source build/envsetup.sh

choosecombo 1 1 7 3

make

 

 build之后的log如下:

… …

creating boot.img...

creating recovery.img...

creating system.img...

creating userdata.img...

cleaning up...

Done.
Android編譯大全(三)
3.  驗(yàn)證編譯之后的模塊

$export ANDROID_PRODUCT_OUT=<SrcDir>/out/target/product/generic

$cd ./out/host/linux-x86/bin

$./emulator

 

 
4.  編譯完成之后的代碼結(jié)構(gòu)

Android編譯完成后,將在根目錄中生成一個(gè)out文件夾,所有生成的內(nèi)容均放置在這個(gè)文件夾中。out文件夾如下所示:
  out/
  |-- CaseCheck.txt
  |-- casecheck.txt
  |-- host
  |   |-- common
  |   `-- linux-x86
  `-- target
      |-- common
      `-- product

    主要的兩個(gè)目錄為host和target,前者表示在主機(jī)(x86)生成的工具,后者表示目標(biāo)機(jī)(模認(rèn)為ARMv5)運(yùn)行的內(nèi)容。

host目錄的結(jié)構(gòu)如下所示:
  out/host/
  |-- common
  |   `-- obj              (JAVA庫(kù))
  `-- linux-x86
      |-- bin              (二進(jìn)制程序)
      |-- framework        (JAVA庫(kù),*.jar文件)
      |-- lib              (共享庫(kù)*.so)
      `-- obj              (中間生成的目標(biāo)文件)
  host目錄是一些在主機(jī)上用的工具,有一些是二進(jìn)制程序,有一些是JAVA的程序。

  target目錄的結(jié)構(gòu)如下所示:
  out/target/
  |-- common
  |   |-- R           (資源文件)
  |   |-- docs
  |   `-- obj         (目標(biāo)文件)
  `-- product
      `-- generic
  其中common目錄表示通用的內(nèi)容,product中則是針對(duì)產(chǎn)品的內(nèi)容。
  在common目錄的obj中,包含兩個(gè)重要的目錄:
  APPS  中包含了JAVA應(yīng)用程序生成的目標(biāo),每個(gè)應(yīng)用程序?qū)?yīng)其中一個(gè)子目錄,將結(jié)合每個(gè)應(yīng)用程序的原始文件生成Android應(yīng)用程序的APK包。
  JAVA_LIBRARIES  中包含了JAVA的庫(kù),每個(gè)庫(kù)對(duì)應(yīng)其中一個(gè)子目錄。

  在默認(rèn)的情況下,Android編譯將生成generic目錄,如果選定產(chǎn)品還可以生成其他的目錄。generic包含了以下內(nèi)容:
  out/target/product/generic/
  |-- android-info.txt
  |-- clean_steps.mk
  |-- data
  |-- obj
  |-- ramdisk.img
  |-- root
  |-- symbols
  |-- system
  |-- system.img
  |-- userdata-qemu.img
  `-- userdata.img

  在generic/obj/APPS目錄中包含了各種JAVA應(yīng)用,與common/APPS相對(duì)應(yīng),但是已經(jīng)打成了APK包。
  system目錄是主要的文件系統(tǒng),data目錄是存放數(shù)據(jù)的文件系統(tǒng)。
  obj/SHARED_LIBRARIES中存放所有動(dòng)態(tài)庫(kù)。
  obj/STATIC_LIBRARIES中存放所有靜態(tài)庫(kù)。
  幾個(gè)以img為結(jié)尾的文件是幾個(gè)目標(biāo)映像文件,其中ramdisk是作為內(nèi)存盤的根文件系統(tǒng)映像,system.img是主要文件系統(tǒng)的映像,這是一個(gè)比較大的文件,data.img是數(shù)據(jù)內(nèi)容映像。這幾個(gè)image文件是運(yùn)行時(shí)真正需要的文件。
5.  make SDK
5.1. sdk編譯

在編譯完整個(gè)系統(tǒng)之后,再運(yùn)行make sdk,就可以進(jìn)行sdk的編譯了。make sdk將各種工具和image打包,供開發(fā)和調(diào)試使用。

export JAVA_HOME=/usr/lib/jvm/java-5-sun

export CLASSPATH=$JAVA_HOME/lib

export JRE_HOME=$JAVA_HOME/jre

export JAVA_PATH=$JAVA_HOME/bin:$JRE_HOME/bin

export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export ANDROID_JAVA_HOME=$JAVA_HOME

export PATH=$JAVA_PATH:$PATH

 

source build/envsetup.sh

make sdk

 

 

 

……

Package SDK Stubs: out/target/common/obj/PACKAGING/android_jar_intermediates/android.jar

Package SDK: out/host/linux-x86/sdk/android-sdk_eng.huangjx_linux-x86.zip

build之后的log如下:

 
5.2. 驗(yàn)證編譯之后的模塊

將out/host/linux-x86/sdk/android-sdk_eng.huangjx_linux-x86.zip解壓到本地目錄。進(jìn)入tools目錄,輸入下面的命令創(chuàng)建AVD:

$./android create avd -t 1 -c 128M -n froyo -s HVGA

Android 2.2 is a basic Android platform.

Do you wish to create a custom hardware profile [no]

Created AVD 'froyo' based on Android 2.2, with the following hardware config:

hw.lcd.density=160

輸入下面的命令,啟動(dòng)模擬器:

$ ./emulator -avd froyo -partition-size 160 &
Android編譯大全(四)
6.  編譯詳細(xì)分解
6.1. build系統(tǒng)簡(jiǎn)介
6.1.1.build系統(tǒng)文件結(jié)構(gòu)

./build

|-- CleanSpec.mk

|-- buildspec.mk.default

|-- core

|   |-- Makefile

|   |-- apicheck_msg_current.txt

|   |-- apicheck_msg_last.txt

|   |-- armelf.x

|   |-- armelf.xsc

|   |-- armelflib.x

|   |-- base_rules.mk

|   |-- binary.mk

|   |-- build-system.html

|   |-- build_id.mk

|   |-- checktree

|   |-- cleanbuild.mk

|   |-- cleanspec.mk

|   |-- clear_vars.mk

|   |-- combo

|   |   |-- HOST_darwin-x86.mk

|   |   |-- HOST_linux-x86.mk

|   |   |-- HOST_windows-x86.mk

|   |   |-- TARGET_linux-arm.mk

|   |   |-- TARGET_linux-sh.mk

|   |   |-- TARGET_linux-x86.mk

|   |   |-- arch

|   |   |   `-- arm

|   |   |       |-- armv4t.mk

|   |   |       |-- armv5te-vfp.mk

|   |   |       |-- armv5te.mk

|   |   |       |-- armv7-a-neon.mk

|   |   |       `-- armv7-a.mk

|   |   |-- javac.mk

|   |   `-- select.mk

|   |-- config.mk

|   |-- copy_headers.mk

|   |-- definitions.mk

|   |-- device.mk

|   |-- distdir.mk

|   |-- droiddoc.mk

|   |-- dynamic_binary.mk

|   |-- envsetup.mk

|   |-- executable.mk

|   |-- filter_symbols.sh

|   |-- find-jdk-tools-jar.sh

|   |-- host_executable.mk

|   |-- host_java_library.mk

|   |-- host_prebuilt.mk

|   |-- host_shared_library.mk

|   |-- host_static_library.mk

|   |-- java.mk

|   |-- java_library.mk

|   |-- key_char_map.mk

|   |-- main.mk

|   |-- multi_prebuilt.mk

|   |-- node_fns.mk

|   |-- notice_files.mk

|   |-- package.mk

|   |-- pathmap.mk

|   |-- prebuilt.mk

|   |-- prelink-linux-arm-2G.map

|   |-- prelink-linux-arm.map

|   |-- process_wrapper.sh

|   |-- process_wrapper_gdb.cmds

|   |-- process_wrapper_gdb.sh

|   |-- product.mk

|   |-- product_config.mk

|   |-- proguard.flags

|   |-- proguard_tests.flags

|   |-- raw_executable.mk

|   |-- raw_static_library.mk

|   |-- root.mk

|   |-- shared_library.mk

|   |-- static_java_library.mk

|   |-- static_library.mk

|   |-- tasks

|   |   |-- apicheck.mk

|   |   |-- cts.mk

|   |   |-- product-graph.mk

|   |   `-- sdk-addon.mk

|   `-- version_defaults.mk

|-- envsetup.sh

|-- libs

|   `-- host

|       |-- Android.mk

|       |-- CopyFile.c

|       |-- include

|       |   `-- host

|       |       |-- CopyFile.h

|       |       |-- Directories.h

|       |       `-- pseudolocalize.h

|       |-- list.java

|       `-- pseudolocalize.cpp

|-- target

|   |-- board

|   |   |-- Android.mk

|   |   |-- emulator

|   |   |   |-- AndroidBoard.mk

|   |   |   |-- BoardConfig.mk

|   |   |   |-- README.txt

|   |   |   |-- tuttle2.kcm

|   |   |   `-- tuttle2.kl

|   |   |-- generic

|   |   |   |-- AndroidBoard.mk

|   |   |   |-- BoardConfig.mk

|   |   |   |-- README.txt

|   |   |   |-- system.prop

|   |   |   |-- tuttle2.kcm

|   |   |   `-- tuttle2.kl

|   |   `-- sim

|   |       |-- AndroidBoard.mk

|   |       `-- BoardConfig.mk

|   `-- product

|       |-- AndroidProducts.mk

|       |-- core.mk

|       |-- full.mk

|       |-- generic.mk

|       |-- languages_full.mk

|       |-- languages_small.mk

|       |-- sdk.mk

|       |-- security

|       |   |-- README

|       |   |-- media.pk8

|       |   |-- media.x509.pem

|       |   |-- platform.pk8

|       |   |-- platform.x509.pem

|       |   |-- shared.pk8

|       |   |-- shared.x509.pem

|       |   |-- testkey.pk8

|       |   `-- testkey.x509.pem

|       `-- sim.mk
Android編譯大全(五)
6.1.2.make文件分類

²  配置類

主要用來配置product、board,以及根據(jù)你的Host和Target選擇相應(yīng)的工具以及設(shè)定相應(yīng)的通用編譯選項(xiàng):

config文件
   

說明

build/core/config.mk
   

Config文件的概括性配置

build/core/envsetup.mk
   

generate目錄構(gòu)成等配置

build/target/product
   

產(chǎn)品相關(guān)的配置

build/target/board
   

硬件相關(guān)的配置

build/core/combo
   

編譯選項(xiàng)配置

 

這里解釋下這里的board和product。board主要是設(shè)計(jì)到硬件芯片的配置,比如是否提供硬件的某些功能,比如說GPU等等,或者芯片支持浮點(diǎn) 運(yùn)算等等。product是指針對(duì)當(dāng)前的芯片配置定義你將要生產(chǎn)產(chǎn)品的個(gè)性配置,主要是指APK方面的配置,哪些APK會(huì)包含在哪個(gè)product中,哪 些APK在當(dāng)前product中是不提供的。

 

config.mk是一個(gè)總括性的東西,它里面定義了各種module編譯所需要使用的HOST工具以及如何來編譯各種模塊,比如說 BUILT_PREBUILT就定義了如何來編譯預(yù)編譯模塊。envsetup.mk主要會(huì)讀取由envsetup.sh寫入環(huán)境變量中的一些變量來配置 編譯過程中的輸出目錄,combo里面主要定義了各種Host和Target結(jié)合的編譯器和編譯選項(xiàng)。

 

²  模塊組織類

這類文件主要定義了如何來處理Module的Android.mk,以及采用何種方式來生成目標(biāo)模塊,這些模塊生成規(guī)則都定義在config.mk里面。我們可以看看:

CLEAR_VARS:= $(BUILD_SYSTEM)/clear_vars.mk

BUILD_HOST_STATIC_LIBRARY:=$(BUILD_SYSTEM)/host_static_library.mk

BUILD_HOST_SHARED_LIBRARY:=$(BUILD_SYSTEM)/host_shared_library.mk

      BUILD_STATIC_LIBRARY:=$(BUILD_SYSTEM)/static_library.mk

      BUILD_RAW_STATIC_LIBRARY :=$(BUILD_SYSTEM)/raw_static_library.mk

      BUILD_SHARED_LIBRARY:=$(BUILD_SYSTEM)/shared_library.mk

      BUILD_EXECUTABLE:= $(BUILD_SYSTEM)/executable.mk

      BUILD_RAW_EXECUTABLE:=$(BUILD_SYSTEM)/raw_executable.mk

      BUILD_HOST_EXECUTABLE:=$(BUILD_SYSTEM)/host_executable.mk

      BUILD_PACKAGE:= $(BUILD_SYSTEM)/package.mk

      BUILD_HOST_PREBUILT:=$(BUILD_SYSTEM)/host_prebuilt.mk

      BUILD_PREBUILT:= $(BUILD_SYSTEM)/prebuilt.mk

      BUILD_MULTI_PREBUILT:=$(BUILD_SYSTEM)/multi_prebuilt.mk

      BUILD_JAVA_LIBRARY:= $(BUILD_SYSTEM)/java_library.mk

      BUILD_STATIC_JAVA_LIBRARY:=$(BUILD_SYSTEM)/static_java_library.mk

      BUILD_HOST_JAVA_LIBRARY:=$(BUILD_SYSTEM)/host_java_library.mk

      BUILD_DROIDDOC:= $(BUILD_SYSTEM)/droiddoc.mk

      BUILD_COPY_HEADERS := $(BUILD_SYSTEM)/copy_headers.mk

      BUILD_KEY_CHAR_MAP :=$(BUILD_SYSTEM)/key_char_map.mk    

除了CLEAR_VARS是清楚本地變量之外,其他所有的都對(duì)應(yīng)了一種模塊的生成規(guī)則,每一個(gè)本地模塊最后都會(huì)include其中的一種來生成目標(biāo)模塊。 大部分上面的.mk都會(huì)包含base_rules.mk,這是對(duì)模塊進(jìn)行處理的基礎(chǔ)文件,建議要寫本地模塊的都去看看,看明白了為什么 Android.mk要這么寫就會(huì)大致明白了。

²  單個(gè)模塊編譯類

本地模塊的Makefile文件就是我們?cè)贏ndroid里面幾乎上隨處可見的Android.mk。Android進(jìn)行編譯的時(shí)候會(huì)通過下面的函數(shù)來遍 歷所有子目錄中的Android.mk,一旦找到就不會(huì)再往層子目錄繼續(xù)尋找(所有你的模塊定義的頂層Android.mk必須包含自己定義的子目錄中的 Android.mk)。

  subdir_makefiles += \

         $(shellbuild/tools/findleaves.sh --prune="./out" $(subdirs) Android.mk)

不同類型的本地模塊具有不同的語(yǔ)法,但基本上是相通的,只有個(gè)別變量的不同,如何添加模塊在前面的帖子已經(jīng)說過了,大家可以參考。

 

Android通過LOCAL_MODULE_TAGS來決定哪些本地模塊會(huì)不會(huì)編譯進(jìn)系統(tǒng),通過PRODUCT和LOCAL_MODULE_TAGS來 決定哪些應(yīng)用包會(huì)編譯進(jìn)系統(tǒng),如果用戶不指定LOCAL_MODULE_TAGS,默認(rèn)它的值是user。此外用戶可以通過buildspec.mk來指 定你需要編譯進(jìn)系統(tǒng)的模塊。用戶也可以通過mm來編譯指定模塊,或者通過make clean-module_name來刪除指定模塊。

 

²  系統(tǒng)生成類

這主要指的是build/core/Makefile這個(gè)文件,它定義了生成各種img的方式,包括ramdisk.img   userdata.img system.img  update.zip  recover.img等。我們可以看看這些img都是如何生成的,對(duì)應(yīng)著我們常用的幾個(gè)make goals。

 

在實(shí)際的過程中,我們也可以自己編輯out目錄下的生成文件,然后手工打包相應(yīng)生成

相應(yīng)的img,最常用的是加入一些需要集成進(jìn)的prebuilt file。所有的Makefile都通過build/core/main.mk這個(gè)文件組織在一起,它定義了一個(gè)默認(rèn)goals:droid,當(dāng)我們?cè)? TOP目錄下敲Make實(shí)際上就等同于我們執(zhí)行make droid。當(dāng)Make include所有的文件,完成對(duì)所有make文件的解析以后就會(huì)尋找生成droid的規(guī)則,依次生成它的依賴,直到所有滿足的模塊被編譯好,然后使用相 應(yīng)的工具打包成相應(yīng)的img。
Android編譯大全(六)
6.2. makefile文件

控制整個(gè)android系統(tǒng)編譯的make文件。其內(nèi)容如下:

### DO NOT EDIT THIS FILE ###

include build/core/main.mk

### DO NOT EDIT THIS FILE ###

 

可以看出,實(shí)際上控制編譯的文件是:build/core/main.mk
6.3. Make命令

²  make droid:等同于make命令。droid是默認(rèn)的目標(biāo)名稱。

²  make all:  make all將make所有make droid會(huì)編譯的項(xiàng)目。同時(shí),將編譯LOCAL_MODULE_TAGS定義的不包括android tag的模塊。這將確保所有的在代碼樹里面同時(shí)有Android.mk文件的模塊。

²  clean-$(LOCAL_MODULE)和clean-$(LOCAL_PACKAGE_NAME):

刪除某個(gè)模塊的目標(biāo)文件。例如:clean-libutils將刪除所有的libutils.so以及和它相關(guān)的中間文件;clean-Home將刪除Home應(yīng)用。

²  make clean:刪除本次配置所編譯輸出的結(jié)果文件。類似于:rm –rf ./out/ <configuration>

²  make clobber:刪除所有配置所編譯輸出的結(jié)果文件。類似于:rm –rf ./out/

²  make dataclean:make dataclean deletes contents of the data directory inside the current combo directory. This is especially useful on the simulator and emulator, where the persistent data remains present between builds.

²  make showcommands:在編譯的時(shí)候顯示腳本的命令,而不是顯示編譯的簡(jiǎn)報(bào)。用于調(diào)試腳本。

²  make LOCAL_MODULE:編譯一個(gè)單獨(dú)得模塊(需要有Android.mk文件存在)。

²  make targets:將輸出所有擬可以編譯的模塊名稱列表。

 

注:還有一些命令,從make文件里面應(yīng)該可以找到。本文不做探討。
6.4. build/core/config.mk

config.mk文件的主要內(nèi)容如下:

Ø  頭文件的定義;(各種include文件夾的設(shè)定)

在定義頭文件的部分,還include了pathmap.mk,如下:

include $(BUILD_SYSTEM)/pathmap.mk

該文件設(shè)置include目錄和frameworks/base下子目錄等的信息。

Ø  編譯系統(tǒng)內(nèi)部mk文件的定義; <Build system internal files>

Ø  設(shè)定通用的名稱;<Set common values>

Ø  Include必要的子配置文件;<Include sub-configuration files>

n  buildspec.mk

n  envsetup.mk

n  BoardConfig.mk

n  /combo/select.mk

n  /combo/javac.mk

Ø  檢查BUILD_ENV_SEQUENCE_NUMBER版本號(hào);

In order to make easier for people when the build system changes, when it is necessary to make changes to buildspec.mk or to rerun the environment setup scripts, they contain a version number in the variable BUILD_ENV_SEQUENCE_NUMBER. If this variable does not match what the build system expects, it fails printing an error message explaining what happened. If you make a change that requires an update, you need to update two places so this message will be printed.

·         In config/envsetup.make, increment the CORRECT_BUILD_ENV_SEQUENCE_NUMBER definition.

·         In buildspec.mk.default, update the BUILD_ENV_SEQUENCE_DUMBER definition to match the one in config/envsetup.make

The scripts automatically get the value from the build system, so they will trigger the warning as well.

Ø  設(shè)置常用工具的常量;< Generic tools.>

Ø  設(shè)置目標(biāo)選項(xiàng);< Set up final options.>

Ø  遍歷并設(shè)置SDK版本;
Android編譯大全(七)
6.5. buildspec.mk

默認(rèn)情況下,buildspec.mk文件是不存在的,表示使用的多少默認(rèn)選項(xiàng)。Android只提供了buildspec.mk文件的模板文件 build/buildspec.mk.default。如果需要使用buildspec.mk文件,請(qǐng)將該文件拷貝到<srcDir>根目 錄下面,并命名為buildspec.mk。同時(shí),需要將模板文件里面的一些必要的配置項(xiàng)啟用或者修改為你所需要的目標(biāo)選項(xiàng)。

 

buildspec.mk文件主要配置下面的選項(xiàng):

Ø  TARGET_PRODUCT:設(shè)置編譯之后的目標(biāo)(產(chǎn)品)類型;

可以設(shè)置的值在:build/target/product/中定義。比如,product目錄下有下面幾個(gè)mk文件:

²  AndroidProducts.mk

²  core.mk

²  full.mk

²  generic.mk

²  languages_full.mk

²  languages_small.mk

²  sdk.mk

²  sim.mk

那么,在這里可以設(shè)置的值就為上面幾個(gè)mk文件的前綴名稱(generic等)。

Ø  TARGET_BUILD_VARIANT:設(shè)置image的類型;

包括三個(gè)選項(xiàng):user、userdebug、eng。

usr:                     出廠時(shí)候面向用戶的image;

userdebug:      打開了一些debug選項(xiàng)的image;

eng:                  為了開發(fā)而包含了很多工具的image

Ø  CUSTOM_MODULES:設(shè)置額外的總是會(huì)被安裝到系統(tǒng)的模塊;

這里設(shè)置的模塊名稱采用的是簡(jiǎn)單目標(biāo)名,比如:Browser或者M(jìn)yApp等。這些名字在LOCAL_MODULE或者在LOCAL_PACKAGE_NAME里面定義的。

LOCAL_MODULE is the name of what's supposed to be generated from your Android.mk. For exmample, for libkjs, the LOCAL_MODULE is "libkjs" (the build system adds the appropriate suffix -- .so .dylib .dll). For app modules, use LOCAL_PACKAGE_NAME instead of LOCAL_MODULE. We're planning on switching to ant for the apps, so this might become moot.

Ø  TARGET_SIMULATOR:設(shè)置是否要編譯成simulator <true or false>;

Ø  TARGET_BUILD_TYPE:設(shè)置是debug還是release版本 <release or debug>;

Set this to debug or release if you care.  Otherwise, it defaults to release for arm and debug for the simulator.

Ø  HOST_BUILD_TYPE:設(shè)置Host目標(biāo)是debug版還是release版;

<release or debug, default is debug>

Ø  DEBUG_MODULE_ModuleName:配置單個(gè)模塊的版本是debug還是release;<ture or false>

Ø  TARGET_TOOLS_PREFIX:工具名前綴,默認(rèn)為NULL

Ø  HOST_CUSTOM_DEBUG_CFLAGS/ TARGET_CUSTOM_DEBUG_CFLAGS:增加額外的編譯選項(xiàng)LOCAL_CFLAGS。

LOCAL_CFLAGS:If you have additional flags to pass into the C or C++ compiler, add them here. For example: LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1

Ø  CUSTOM_LOCALES:增加額外的LOCALES到最總的image;

Any locales that appear in CUSTOM_LOCALES but not in the locale list for the selected product will be added to the end of PRODUCT_LOCALES.

Ø  OUT_DIR:編譯之后文件保存路徑。默認(rèn)為<build-root>/out目錄;

Ø  ADDITIONAL_BUILD_PROPERTIES:指定(增加)額外的屬性文件;

Ø  NO_FALLBACK_FONT:設(shè)置是否只支持英文(這將減少image的大。。<true, false>

Ø  WEBCORE_INSTRUMENTATION:webcore支持;

Ø  ENABLE_SVG:SVG支持;

Ø  BUILD_ENV_SEQUENCE_NUMBER:編譯系列號(hào);


轉(zhuǎn)自:http://quanminchaoren.iteye.com/blog/840917
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP