Android系統(tǒng)開發(fā)編譯及系統(tǒng)移植_第1頁
Android系統(tǒng)開發(fā)編譯及系統(tǒng)移植_第2頁
Android系統(tǒng)開發(fā)編譯及系統(tǒng)移植_第3頁
Android系統(tǒng)開發(fā)編譯及系統(tǒng)移植_第4頁
Android系統(tǒng)開發(fā)編譯及系統(tǒng)移植_第5頁
已閱讀5頁,還剩69頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、An droid系統(tǒng)開發(fā)編譯環(huán)境配置主機(jī)系統(tǒng):Ubu ntu9.04(1) 安裝如下軟件包sudo apt-get in stall git-coresudo apt-get in stall gn upgsudo apt-get in stall sun -java5-jdksudo apt-get in stall flexsudo apt-get in stall bis onsudo apt-get in stall gperfsudo apt-get in stall libsdl-devsudo apt-get in stall libesd0-devsudo apt-get in

2、 stall build-esse ntialsudo apt-get in stall zipsudo apt-get in stall curlsudo apt-get in stall lib ncurses5-devsudo apt-get in stall zlib1g-devan droid 編譯對java的需求只支持jdk5.0 低版本,jdk5.0 update 12 版本和java 6 不支持。 下載repo工具curl/b in/repochmod a+x /bin/repo(3) 創(chuàng)建源代碼下載目錄:mkdir /work/a ndroid-froyo-r2用repo工具

3、初始化一個版本(以android2.2r2 為例)cd /work/a ndroid-froyo-r2repo in it -u git:/a /platform/ma nifest.git -b froyo初始化過程中會顯示相關(guān)的版本的TAG信息,同時會提示你輸入用戶名和郵箱地址,以上面的方式初始化的是android2.2 froyo的最新版本,android2.2本身也會有很多個版本,這可以從TAG信息中看出來,當(dāng)前 froyo的所有版本如下:* new tagan droid-2.2.1 r1 - an droid-2.2.1 r1* new t

4、agan droid-2.2_r1 - an droid-2.2_r1* new tagan droid-2.2 r1.1 - an droid-2.2 r1.1* new tagan droid-2.2 r1.2 - an droid-2.2 r1.2* new tagan droid-2.2_r1.3 - an droid-2.2_r1.3* new tagan droid-cts-2.2 r1- an droid-cts-2.2 r1* new tagan droid-cts-2.2 r2- an droid-cts-2.2 r2* new tagandroid-cts-2.2_r3-

5、android-cts-2.2_r3這樣每次下載的都是最新的版本,當(dāng)然我們也可以根據(jù)TAG信息下載某一特定的版本如下:repo in it -u git:/a /platform/ma nifest.git -b an droid-cts-2.2_r3(5)下載代碼repo syncfroyo版本的代碼大小超過2G ,漫長的下載過程。(6)編譯代碼cd /work/a ndroid-froyo-r2makeUbuntu下使用Simba服務(wù)實現(xiàn)局域網(wǎng)內(nèi)文件共享Ubuntu下安裝Simba服務(wù)器將linux電腦上的內(nèi)容共享,同一局域網(wǎng)內(nèi)的另外一臺Windo

6、ws PC即可訪問其共享內(nèi)容,從而實現(xiàn) Windows電腦向訪問本地文件一樣訪問Linux文件系統(tǒng)的內(nèi)容。(1) 安裝Simaba服務(wù)器sudo apt-get in stall samba安裝samba圖形化配置軟件sudo apt-get in stall system-c on fig-samba(3)創(chuàng)建一個Simba專用用戶從“系統(tǒng)”一“系統(tǒng)管理”一“用戶和組”,來創(chuàng)建。如圖,先點(diǎn)擊“解鎖”,然后“添加新用戶”然后輸入新用戶名字(如Simba)和密碼(如111111),然后在“高級”里面,選擇“主組”為sambashare后點(diǎn)擊”確定”即可一句話來概括,就是創(chuàng)建一個主組為sambas

7、hare的用戶配置samba共享從“系統(tǒng)”一“系統(tǒng)管理一” samba ,運(yùn)行配置界面然后”首選項“一”服務(wù)器設(shè)置“。點(diǎn)擊:安全性在最后的”來賓帳號“里面, 選擇我們新建立的那個用戶simba后點(diǎn)擊確定修改samba配置文件打開 /etc/samba/smb.conf,修改 valid users = XXXX 為 valid users = simba重啟samba服務(wù)sudo /etc/i nit.d/samba restart(7)添加共享文件從“系統(tǒng)”一“系統(tǒng)管理一” samba ,運(yùn)行配置界面點(diǎn)擊添加來添加共享文件夾,點(diǎn)擊瀏覽來選擇需要共享的文件夾,選擇可擦寫”和顯示”,點(diǎn)擊訪問可以

8、設(shè)置訪問權(quán)限,最好設(shè)置成允許所有用戶訪問”Ubuntu下tftp服務(wù)器的創(chuàng)建實驗平臺:Ubu ntu9.04(1) 安裝tftp服務(wù)sudo apt-get in stall t ope nbsd-i netd(2) 在根目錄下創(chuàng)建文件夾 t 文件夾并修改權(quán)限 cd / sudo mkdir t sudo chmod 777 t(3) 修改 /etc/inetd.conf 文件如下:tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /t(4) 開啟 tftp 服務(wù)sudo /etc/init.d/openbsd-inetd

9、 reloadsudo in.tftpd -l /t(5) 重啟電腦,然后將測試文件放入 /t 目錄下即可開始測試,出現(xiàn)問題可能一般都是權(quán)限問題 /t 目錄下的文件訪問權(quán)限改成 0777創(chuàng)建一個新的 Android 產(chǎn)品項目從 google 網(wǎng)站上下載的 android 源代碼編譯時默認(rèn)是編譯 google 設(shè)定的產(chǎn)品,如果要開發(fā)自己的產(chǎn)品, 則需要重新定義一個產(chǎn)品項目,過程如下: 首先我們定義產(chǎn)品的規(guī)格,舉例如下:公司名稱 ardent產(chǎn)品名稱 MTP主板名稱 merlin 然后安裝下面的步驟新建產(chǎn)品項目:(1)在源代碼目錄下創(chuàng)建一個用戶目錄 mkdir vendor(2) 在用戶目錄下創(chuàng)建

10、一個公司目錄mkdir vendor/merlin(3) 在公司目錄下創(chuàng)建一個 products 目錄mkdir vendor/merlin/products(4) 在上面創(chuàng)建的 products 下創(chuàng)建一個產(chǎn)品 makefile 文件 MTP.mk ,內(nèi)容如下: PRODUCT_PACKAGES := AlarmClock Email Fallback Launcher2 Music Camera Settings LatinIME NotePad SoundRecorder Bluetooth CertInstaller DeskClock$(call inherit-product, $

11、(SRC_TARGET_DIR)/product/core.mk)# OverridesPRODUCT_MANUFACTURER := ardentPRODUCT_BRAND := ardentPRODUCT_NAME := MTPPRODUCT_MODEL := MultiMedia Touch PhonePRODUCT_DEVICE := merlinPRODUCT_LOCALES := zh_CN 產(chǎn)品 makefile 文件的編寫有一套規(guī)則,詳細(xì)情況見此文后面的補(bǔ)充內(nèi)容。(5) 在 vendor/merlin/products 目錄下創(chuàng)建一個 AndroidProducts.mk 文件

12、,定義 Android 產(chǎn)品配置文件的路徑, 具體如下:PRODUCT_MAKEFILES := $(LOCAL_DIR)/MTP.mk(6) 在公司目錄下創(chuàng)建一個主板目錄 mkdir vendor/ardent/merlin(7) 在主板目錄下新建一個主板配置文件 BoardConfig.mk ,內(nèi)容如下:TARGET_NO_BOOTLOADER := true TARGET_NO_KERNEL := true TARGET_CPU_ABI := armeabi BOARD_USES_GENERIC_AUDIO := trueUSE_CAMERA_STUB := true(8) 如果你希望修

13、改系統(tǒng)屬性,則可以在主板目錄下新建一個 p 文件,該文件中可以修改系統(tǒng)屬 性,舉例如下:# p for# This overrides settings in the products/generic/p file# rild.libpath=/system/lib/libreference-ril.so# rild.libargs=-d /dev/ttyS0(9) 在主板目錄下建議一個 Android 的主板配置文件 AndroidBoard.mk ,此文件是編譯系統(tǒng)接口文件,內(nèi)容 如下:# make new hardware fr

14、om#LOCAL_PATH := $(call my-dir)# this is here to use the pre-built kernelifeq ($(TARGET_PREBUILT_KERNEL),)TARGET_PREBUILT_KERNEL := $(LOCAL_PATH)/kernelendif$(INSTALLED_KERNEL_TARGET)ALL_PREBUILT += $(file)$(file): $(TARGET_PREBUILT_KERNEL) | $(ACP) $(transform-prebuilt-to-target)# no boot loader, s

15、o we dont need any of that stuff.#LOCAL_PATH := vendor/ardent/merlininclude $(CLEAR_V ARS)# include more board specific stuff here? Such as Audio parameters.#(10) 編譯新的項目. build/envsetup.shmake PRODUCT-MTP-user補(bǔ)充內(nèi)容:(1) 上 面 的 新 建 的 幾 個 文 件 的 編 寫 可 以 參 考 build/target/board/generic 目 錄 下 的 AndroidBoard.

16、mk , BoardConfig.mk 和 p(2) 產(chǎn)品 makefile 的編寫規(guī)則,變量定義解釋如下:PRODUCT_NAME終端用戶可見的產(chǎn)品名稱,對應(yīng)到“Settings “中的“ About the phone”信息PRODUCT_MODELEnd-user-visible name for the end productPRODUCT_LOCALES 1 個以空格分隔開的兩個字母的語言碼加上 2字節(jié)的國家碼的列表, 影響到 Settings 中的語言,時間,日期和貨幣格式設(shè)置,舉例: en_GB de_DE es_ES fr_CAPRODUCT_PACKAGE

17、S 需要安裝的 APK 應(yīng)用程序列表PRODUCT_DEVICE工作設(shè)計名稱,即主板名稱PRODUCT_MANUFACTURER生產(chǎn)廠家PRODUCT_BRAND軟件設(shè)計針對的客戶品牌PRODUCT_PROPERTY_OVERRIDES以key=value為格式的屬性列表PRODUCT_COPY_FILES 文件復(fù)制列表,格式為“原文件路徑:目的文件路徑” ,編譯過程中會按照此規(guī) 則復(fù)制文件PRODUCT_OTA_PUBLIC_KEYS 產(chǎn)品的 OTA 公共密匙列表PRODUCT_POLICY聲明此產(chǎn)品使用的政策PRODUCT_PACKAGE_OVERLAYS 指示是否使用默認(rèn)資源或添加任何產(chǎn)

18、品特定的資源, 例如: vendor/acme/overlayPRODUCT_CONTRIBUTORS_ 文件中包含項目的貢獻(xiàn)者PRODUCT_TAGS 以空格分隔開的指定產(chǎn)品關(guān)鍵詞列表本文來自 CSDN 博客,轉(zhuǎn)載請標(biāo)明出處: ttp://jiajie961/archive/2010/11/07/5993126.aspx制作 ubifs 文件系統(tǒng)1, 安裝相關(guān)的軟件包apt-get install liblzo2-dev2, 獲取相關(guān)的工具 mkfs.ubifs 和 ubinize這兩個工具是制作 ubifs 文件系統(tǒng)的時候用到,它們是 mtd-utils 工具包中

19、的內(nèi)容, mtd-utils 工具包你可以 從下面的網(wǎng)站下載和編譯出來:官方網(wǎng)站: 資源下載網(wǎng)站:3, 創(chuàng)建一個 create-ubifs.sh 腳本,主要是調(diào)用 mkfs.ubifs 和 ubinize 工具和相關(guān)參數(shù)來制作 ubifs 文件系統(tǒng), 內(nèi)容如下:#!/bin/bashII II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II

20、 II II II II IIa a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a# Script to generate ubifs image. #a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a

21、 a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a# ubinize configuration# Function to check result of the commandcheck_result() if $? -ne 0 thenecho FAILEDelseecho SUCCESSFULfi# Function to check whether an application exists check_program() for cmd in

22、$dowhich $cmd /dev/null 2&1 if $? -ne 0 thenechoecho Cannot find command $cmdechoexit 1fidoneif $# -ne 5 thenechoecho Usage: create-ubifs.sh page_size_in_bytes pages_per_block partition_size_in_bytes blocks_per_device path_to_rootfsechoexitpage_size_in_bytes=$1 echo Page size pages_per_block=$2 echo

23、 Pages per block partition_size_in_bytes= echo partition size blocks_per_device=$4 echo Blocks per device path_to_rootfs=$5fi$page_size_in_bytesbytes.$pages_per_block$partition_size_in_bytesbytes.$blocks_per_device$wear_level_reserved_blocks# wear_level_reserved_blocks is 1% of total blcoks per devi

24、ce wear_level_reserved_blocks=expr $blocks_per_device / 100 echo Reserved blocks for wear level#logical_erase_block_size is physical erase block size minus 2 pages for UBI logical_pages_per_block=expr $pages_per_block - 2 logical_erase_block_size=expr $page_size_in_bytes * $logical_pages_per_block e

25、cho Logical erase block size$logical_erase_block_sizebytes.#Block size = page_size * pages_per_block block_size=expr $page_size_in_bytes * $pages_per_block echo Block size$block_sizebytes.#physical blocks on a partition = partition size / block size partition_physical_blocks=expr $partition_size_in_

26、bytes / $block_size echo Physical blocks in a partition$partition_physical_blocks#Logical blocks on a partition = physical blocks on a partitiion - reserved for wear level patition_logical_blocks=expr $partition_physical_blocks - $wear_level_reserved_blocks echo Logical blocks in a partition$patitio

27、n_logical_blocks# volume = Logical blocks in a partition * Logical erase block sizefs_vol_size=expr $patiti on _logical_blocks * $logical_erase_block_sizeecho volume$fs_vol_sizebytes.echoecho Generating configuration file.echo rootfs-volume $config_ mode=ubi $config_ image=rootfs_ubifs.img $config_

28、vol_id=0 $config_ vol_size=$fs_vol_size $config_ vol_type=dynamic $config_ vol_name=system $config_# Note: Check necessary program for installation#echo -n Checking necessary program for installation#check_program mkfs.ubifs ubinize#echo Done#Generate ubifs imageecho -n Generating ubifs./mkfs.ubifs

29、-x lzo -m $page_size_in_bytes -e $logical_erase_block_size -c $patition_logical_blocks -o rootfs_ubifs.img -d $path_to_rootfscheck_resultecho -n Generating ubi image out of the ubifs./ubinize -o ubi.img -m $page_size_in_bytes -p $block_size -s $page_size_in_bytes $config_check_resultrm -f rootfs_ubi

30、fs.imgrm -f $config_file(4)將 mkfs.ubifs 和 ubinize 以及 create-ubifs.sh 放置在同一目錄下,然后調(diào)用 create-ubifs.sh 即可創(chuàng)建 ubifs 文件系統(tǒng), create-ubifs.sh 用法如下:create-ubifs.sh page_size_in_bytes(頁大小)pages_per_block(每個扇區(qū)的頁數(shù)量 )partition_size_in_bytes(分 區(qū)大小 ) blocks_per_device( 扇區(qū)數(shù)量 ) path_to_rootfs( 文件系統(tǒng)路徑 )舉例如下:./create-ub

31、ifs.sh 2048 64 83886080 4096 ./rootfs上面命令的意思是調(diào)用create-ubifs.sh將當(dāng)前目錄下的rootfs文件夾的內(nèi)容制作成ubifs文件系統(tǒng),nand flash的頁大小為2k,每個扇區(qū)有64頁,總共有 4096 個扇區(qū),要制作的文件系統(tǒng)的大小為 83886080 字節(jié)。android 編譯系統(tǒng) make) 寫法android 編譯系統(tǒng)的 makefile 文件 Android.mk 寫法如下(1)Android.mk 文件首先需要指定 LOCAL_PA TH 變量,用于查找源文件。由于一般情況下 Android.mk 和需要編譯的源文件在同一目錄

32、下,所以定義成如下形式:LOCAL_PATH:=$(call my-dir)面的語句的意思是將 LOCAL_PA TH 變量定義成本文件所在目錄路徑。(2)Android.mk 中可以定義多個編譯模塊,每個編譯模塊都是以 include $(CLEAR_V ARS) 開始 以 include $(BUILD_XXX) 結(jié)束。include $(CLEAR_V ARS)CLEAR_V ARS 由編譯系統(tǒng)提供,指定讓 GNU MAKEFILE 為你清除除 LOCAL_PA TH 以外的所有 LOCAL_XXX 變量,如 LOCAL_MODULE , LOCAL_SRC_FILES , LOCAL_

33、SHARED_LIBRARIES LOCAL_STA TIC_LIBRARIES 等。include $(BUILD_STATIC_LIBRARY) 表示編譯成靜態(tài)庫 include $(BUILD_SHARED_LIBRARY) 表示編譯成動態(tài)庫。include $(BUILD_EXECUTABLE) 表示編譯成可執(zhí)行程序(3) 舉例如下 (frameworks/base/libs/audioflinger/Android.mk) :LOCAL_PA TH:= $(call my-dir) include $(CLEAR_V ARS) 模塊一 ifeq ($(AUDIO_POLICY_TES

34、T),true)ENABLE_AUDIO_DUMP := trueendifLOCAL_SRC_ AudioHardwareGeneric.cpp AudioHardwareStub.cpp AudioHardwareInterface.cppifeq ($(ENABLE_AUDIO_DUMP),true)LOCAL_SRC_FILES += AudioDumpInterface.cppLOCAL_CFLAGS += -DENABLE_AUDIO_DUMPendifLOCAL_SHARED_LIBRARIES := libcutils libutils libbinder libmedia l

35、ibhardware_legacyifeq ($(strip $(BOARD_USES_GENERIC_AUDIO),true)LOCAL_CFLAGS += -DGENERIC_AUDIOendifLOCAL_MODULE:= libaudiointerfaceifeq ($(BOARD_HA VE_BLUETOOTH),true)LOCAL_SRC_FILES += A2dpAudioInterface.cppLOCAL_SHARED_LIBRARIES += liba2dpLOCAL_CFLAGS += -DWITH_BLUETOOTH -DWITH_A2DPLOCAL_C_INCLUD

36、ES += $(call include-path-for, bluez)endifinclude $(BUILD_STATIC_LIBRARY)模塊一編譯成靜態(tài)庫include $(CLEAR_V ARS) 模塊二LOCAL_SRC_ AudioPolicyManagerBase.cppLOCAL_SHARED_LIBRARIES := libcutils libutils libmediaifeq ($(TARGET_SIMULATOR),true)LOCAL_LDLIBS += -ldl elseLOCAL_SHARED_LIBRARIES += libdlendifLOCAL_MODU

37、LE:= libaudiopolicybase ifeq ($(BOARD_HA VE_BLUETOOTH),true)LOCAL_CFLAGS += -DWITH_A2DPendififeq ($(AUDIO_POLICY_TEST),true)LOCAL_CFLAGS += -DAUDIO_POLICY_TEST endif include $(BUILD_STATIC_LIBRARY) 模塊二編譯成靜態(tài)庫 include $(CLEAR_V ARS) 模塊三LOCAL_SRC_ AudioFlinger.cppAudioMixer.cpp.armAudioResampler.cpp.ar

38、mAudioResamplerSinc.cpp.arm AudioResamplerCubic.cpp.arm AudioPolicyService.cppLOCAL_SHARED_LIBRARIES := libcutils libutils libbinder libmedia libhardware_legacyifeq ($(strip $(BOARD_USES_GENERIC_AUDIO),true)LOCAL_STATIC_LIBRARIES += libaudiointerface libaudiopolicybase LOCAL_CFLAGS += -DGENERIC_AUDI

39、O elseLOCAL_SHARED_LIBRARIES += libaudio libaudiopolicy endif ifeq ($(TARGET_SIMULATOR),true)LOCAL_LDLIBS += -ldlelseLOCAL_SHARED_LIBRARIES += libdlendifLOCAL_MODULE:= libaudioflinger ifeq ($(BOARD_HA VE_BLUETOOTH),true)LOCAL_CFLAGS += -DWITH_BLUETOOTH -DWITH_A2DPLOCAL_SHARED_LIBRARIES += liba2dpend

40、ififeq ($(AUDIO_POLICY_TEST),true)LOCAL_CFLAGS += -DAUDIO_POLICY_TESTendififeq ($(TARGET_SIMULATOR),true)ifeq ($(HOST_OS),linux)LOCAL_LDLIBS += -lrt -lpthreadendifendififeq ($(BOARD_USE_LVMX),true)LOCAL_CFLAGS += -DLVMXLOCAL_C_INCLUDES += vendor/nxpLOCAL_STATIC_LIBRARIES += liblifevibesLOCAL_SHARED_

41、LIBRARIES += liblvmxservice# LOCAL_SHARED_LIBRARIES += liblvmxipcendifinclude $(BUILD_SHARED_LIBRARY) 模塊三編譯成動態(tài)庫(4) 編譯一個應(yīng)用程序 (APK)LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)# Build all java files in the java subdirectory LOCAL_SRC_FILES := $(call all-subdir-java-files)# Name of the APK to build

42、LOCAL_PACKAGE_NAME := LocalPackage# Tell it to build an APKinclude $(BUILD_PACKAGE)編譯一個依賴于靜態(tài) Java庫(static.jar)的應(yīng)用程序LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)# List of static libraries to include in the packageLOCAL_STATIC_JA VA_LIBRARIES := static-library# Build all java files in the java sub

43、directoryLOCAL_SRC_FILES := $(call all-subdir-java-files)# Name of the APK to buildLOCAL_PACKAGE_NAME := LocalPackage# Tell it to build an APK include $(BUILD_PACKAGE)(6) 編譯一個需要用平臺的 key 簽名的應(yīng)用程序LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS)# Build all java files in the java subdirectory LOCAL_SRC

44、_FILES := $(call all-subdir-java-files)# Name of the APK to buildLOCAL_PACKAGE_NAME := LocalPackageLOCAL_CERTIFICATE := platform# Tell it to build an APK include $(BUILD_PACKAGE)(7) 編譯一個需要用特定 key 前面的應(yīng)用程序LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS)# Build all java files in the java subdirectory

45、 LOCAL_SRC_FILES := $(call all-subdir-java-files)# Name of the APK to buildLOCAL_PACKAGE_NAME := LocalPackageLOCAL_CERTIFICATE := vendor/example/certs/app# Tell it to build an APK include $(BUILD_PACKAGE)(8) 添加一個預(yù)編譯應(yīng)用程序LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS)# Module name should match apk

46、name to be installed. LOCAL_MODULE := LocalModuleNameLOCAL_SRC_FILES := $(LOCAL_MODULE).apk LOCAL_MODULE_CLASS := APPSLOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)include $(BUILD_PREBUILT)(9) 添加一個靜態(tài) JAVA 庫LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)# Build all java files in the java s

47、ubdirectoryLOCAL_SRC_FILES := $(call all-subdir-java-files)# Any libraries that this library depends onLOCAL_JA VA_LIBRARIES := android.test.runner# The name of the jar createLOCAL_MODULE := sample# Build a static jar file.include $(BUILD_STATIC_JA VA_LIBRARY)(10) Android.mk 的編譯模塊中間可以定義相關(guān)的編譯內(nèi)容,也就是指定

48、相關(guān)的變量如下: LOCAL_AAPT_FLAGSLOCAL_ACP_UNA VAILABLELOCAL_ADDITIONAL_JA VA_DIRLOCAL_AIDL_INCLUDESLOCAL_ALLOW_UNDEFINED_SYMBOLSLOCAL_ARM_MODELOCAL_ASFLAGSLOCAL_ASSET_DIRLOCAL_ASSET_FILES 在 Android.mk 文件中編譯應(yīng)用程序 (BUILD_PACKAGE) 時設(shè)置此變量,表示資源 文件,通常會定義成 LOCAL_ASSET_FILES += $(call find-subdir-assets)LOCAL_BUILT

49、_MODULE_STEMLOCAL_C_INCLUDES 額外的 C/C+ 編譯頭文件路徑,用 LOCAL_PATH 表示本文件所在目錄 舉例如下:LOCAL_C_INCLUDES += extlibs/zlib-1.2.3LOCAL_C_INCLUDES += $(LOCAL_PA TH)/srcLOCAL_CC 指定 C 編譯器LOCAL_CERTIFICATE 簽名認(rèn)證LOCAL_CFLAGS 為 C/C+ 編 譯 器 定 義 額 外 的 標(biāo) 志 ( 如 宏 定 義 ) , 舉 例 : LOCAL_CFLAGS += -DLIBUTILS_NA TIVE=1LOCAL_CLASSPATH

50、LOCAL_COMPRESS_MODULE_SYMBOLSLOCAL_COPY_HEADERS install 應(yīng) 用 程 序 時 需 要 復(fù) 制 的 頭 文 件 , 必 須 同 時 定 義 LOCAL_COPY_HEADERS_TOLOCAL_COPY_HEADERS_TO install 應(yīng)用程序時復(fù)制頭文件的目的路徑LOCAL_CPP_EXTENSION 如 果 你 的 C+ 文 件 不 是 以 cpp 為 文 件 后 綴 , 你 可 以 通 過 LOCAL_CPP_EXTENSION 指定 C+ 文件后綴名如: LOCAL_CPP_EXTENSION := .cc 注意統(tǒng)一模塊中 C+

51、 文件后綴必須保持一致。LOCAL_CPPFLAGS 傳遞額外的標(biāo)志給 C+ 編譯器,如:LOCAL_CPPFLAGS += -ffrie nd-injectio nLOCAL_CXX 指定 C+ 編譯器LOCAL_DX_FLAGSLOCAL_EXPORT_PACKAGE_RESOURCESLOCAL_FORCE_STATIC_EXECUTABLE 如果編譯的可執(zhí)行程序要進(jìn)行靜態(tài)鏈接 (執(zhí)行時不依賴于任何動 態(tài)庫 ),則設(shè)置 LOCAL_FORCE_STA TIC_EXECUTABLE:=true目前只有 libc 有靜態(tài)庫形式, 這個只有文件系統(tǒng)中 /sbin 目錄下的應(yīng)用程 序會用到,這個

52、目錄下的應(yīng)用程序在運(yùn)行時通常文件系統(tǒng)的其它部分還沒有加載,所以必須進(jìn)行靜態(tài)鏈接。LOCAL_GENERATED_SOURCESLOCAL_INSTRUMENTATION_FORLOCAL_INSTRUMENTATION_FOR_PACKAGE_NAMELOCAL_INTERMEDIATE_SOURCESLOCAL_INTERMEDIATE_TARGETSLOCAL_IS_HOST_MODULELOCAL_JAR_MANIFESTLOCAL_JARJAR_RULESLOCAL_JA VA_LIBRARIES 編譯 java 應(yīng)用程序和庫的時候指定包含的java 類庫,目前有 core 和 fra

53、mework兩種多數(shù)情況下定義成: LOCAL_JA VA_LIBRARIES := core framework 注意 LOCAL_JA VA_LIBRARIES 不是必須的,而且編譯 APK 時不允許定義 (系統(tǒng) 會自動添加 )LOCAL_JA VA_RESOURCE_DIRSLOCAL_JA VA_RESOURCE_FILESLOCAL_JNI_SHARED_LIBRARIESLOCAL_LDFLAGS 傳遞額外的參數(shù)給連接器 (務(wù)必注意參數(shù)的順序 )LOCAL_LDLIBS 為可執(zhí)行程序或者庫的編譯指定額外的庫,指定庫以 -lxxx 格式,舉例: LOCAL_LDLIBS += -lc

54、urses -lpthreadLOCAL_LDLIBS += -Wl,-z,originLOCAL_MODULE 生成的 模塊的名稱 (注 意應(yīng)用 程序名 稱用 LOCAL_PACKAGE_NAME 而不是 LOCAL_MODULE)LOCAL_MODULE_PATH 生成模塊的路徑LOCAL_MODULE_STEMLOCAL_MODULE_TAGS 生成模塊的標(biāo)記LOCAL_NO_DEFAULT_COMPILER_FLAGSLOCAL_NO_EMMA_COMPILELOCAL_NO_EMMA_INSTRUMENTLOCAL_NO_STANDARD_LIBRARIESLOCAL_OVERRID

55、ES_PACKAGESLOCAL_PACKAGE_NAME APK 應(yīng)用程序的名稱LOCAL_POST_PROCESS_COMMANDLOCAL_PREBUILT_EXECUTABLES 預(yù) 編 譯 including $(BUILD_PREBUILT) 或 者 $(BUILD_HOST_PREBUILT) 時所用 ,指定需要復(fù)制的可執(zhí)行文件LOCAL_PREBUILT_JA VA_LIBRARIESLOCAL_PREBUILT_LIBS 預(yù)編譯 including $(BUILD_PREBUILT)或者 $(BUILD_HOST_PREBUILT)時所用, 指定需要復(fù)制的庫LOCAL_PREBUILT_OBJ_FILESLOCAL_PREBUILT_STATIC_JA VA_LIBRARIESLOCAL_PRELINK_MODULE是否需要預(yù)連接處理(默認(rèn)需要,用來做動態(tài)庫優(yōu)化)LOCAL_REQUIRED_MODULES指定模塊運(yùn)行所依賴的模塊(模塊安裝時將會同步安裝它所依賴的模塊)LOCAL_RESOURCE_DIRLOCAL_SDK_VERSIONLOCAL_SHARED_LIBRARIES可鏈接動態(tài)庫LOCAL_SRC_FILES 編譯源文件L

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論