




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、An droid系統(tǒng)開發(fā)編譯環(huán)境配置主機系統(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初始化過程中會顯示相關的版本的TAG信息,同時會提示你輸入用戶名和郵箱地址,以上面的方式初始化的是android2.2 froyo的最新版本,android2.2本身也會有很多個版本,這可以從TAG信息中看出來,當前 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這樣每次下載的都是最新的版本,當然我們也可以根據(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服務實現(xiàn)局域網(wǎng)內(nèi)文件共享Ubuntu下安裝Simba服務器將linux電腦上的內(nèi)容共享,同一局域網(wǎng)內(nèi)的另外一臺Windo
6、ws PC即可訪問其共享內(nèi)容,從而實現(xiàn) Windows電腦向訪問本地文件一樣訪問Linux文件系統(tǒng)的內(nèi)容。(1) 安裝Simaba服務器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)建。如圖,先點擊“解鎖”,然后“添加新用戶”然后輸入新用戶名字(如Simba)和密碼(如111111),然后在“高級”里面,選擇“主組”為sambashare后點擊”確定”即可一句話來概括,就是創(chuàng)建一個主組為sambas
7、hare的用戶配置samba共享從“系統(tǒng)”一“系統(tǒng)管理一” samba ,運行配置界面然后”首選項“一”服務器設置“。點擊:安全性在最后的”來賓帳號“里面, 選擇我們新建立的那個用戶simba后點擊確定修改samba配置文件打開 /etc/samba/smb.conf,修改 valid users = XXXX 為 valid users = simba重啟samba服務sudo /etc/i nit.d/samba restart(7)添加共享文件從“系統(tǒng)”一“系統(tǒng)管理一” samba ,運行配置界面點擊添加來添加共享文件夾,點擊瀏覽來選擇需要共享的文件夾,選擇可擦寫”和顯示”,點擊訪問可以
8、設置訪問權限,最好設置成允許所有用戶訪問”Ubuntu下tftp服務器的創(chuàng)建實驗平臺:Ubu ntu9.04(1) 安裝tftp服務sudo apt-get in stall t ope nbsd-i netd(2) 在根目錄下創(chuàng)建文件夾 t 文件夾并修改權限 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 服務sudo /etc/init.d/openbsd-inetd
9、 reloadsudo in.tftpd -l /t(5) 重啟電腦,然后將測試文件放入 /t 目錄下即可開始測試,出現(xiàn)問題可能一般都是權限問題 /t 目錄下的文件訪問權限改成 0777創(chuàng)建一個新的 Android 產(chǎn)品項目從 google 網(wǎng)站上下載的 android 源代碼編譯時默認是編譯 google 設定的產(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ī)則,詳細情況見此文后面的補充內(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補充內(nèi)容:(1) 上 面 的 新 建 的 幾 個 文 件 的 編 寫 可 以 參 考 build/target/board/generic 目 錄 下 的 AndroidBoard.
16、mk , BoardConfig.mk 和 p(2) 產(chǎn)品 makefile 的編寫規(guī)則,變量定義解釋如下:PRODUCT_NAME終端用戶可見的產(chǎn)品名稱,對應到“Settings “中的“ About the phone”信息PRODUCT_MODELEnd-user-visible name for the end productPRODUCT_LOCALES 1 個以空格分隔開的兩個字母的語言碼加上 2字節(jié)的國家碼的列表, 影響到 Settings 中的語言,時間,日期和貨幣格式設置,舉例: en_GB de_DE es_ES fr_CAPRODUCT_PACKAGE
17、S 需要安裝的 APK 應用程序列表PRODUCT_DEVICE工作設計名稱,即主板名稱PRODUCT_MANUFACTURER生產(chǎn)廠家PRODUCT_BRAND軟件設計針對的客戶品牌PRODUCT_PROPERTY_OVERRIDES以key=value為格式的屬性列表PRODUCT_COPY_FILES 文件復制列表,格式為“原文件路徑:目的文件路徑” ,編譯過程中會按照此規(guī) 則復制文件PRODUCT_OTA_PUBLIC_KEYS 產(chǎn)品的 OTA 公共密匙列表PRODUCT_POLICY聲明此產(chǎn)品使用的政策PRODUCT_PACKAGE_OVERLAYS 指示是否使用默認資源或添加任何產(chǎn)
18、品特定的資源, 例如: vendor/acme/overlayPRODUCT_CONTRIBUTORS_ 文件中包含項目的貢獻者PRODUCT_TAGS 以空格分隔開的指定產(chǎn)品關鍵詞列表本文來自 CSDN 博客,轉(zhuǎn)載請標明出處: ttp://jiajie961/archive/2010/11/07/5993126.aspx制作 ubifs 文件系統(tǒng)1, 安裝相關的軟件包apt-get install liblzo2-dev2, 獲取相關的工具 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 工具和相關參數(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(頁大?。﹑ages_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將當前目錄下的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) 編譯一個應用程序 (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)的應用程序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 簽名的應用程序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 前面的應用程序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) 添加一個預編譯應用程序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 的編譯模塊中間可以定義相關的編譯內(nèi)容,也就是指定
48、相關的變量如下: LOCAL_AAPT_FLAGSLOCAL_ACP_UNA VAILABLELOCAL_ADDITIONAL_JA VA_DIRLOCAL_AIDL_INCLUDESLOCAL_ALLOW_UNDEFINED_SYMBOLSLOCAL_ARM_MODELOCAL_ASFLAGSLOCAL_ASSET_DIRLOCAL_ASSET_FILES 在 Android.mk 文件中編譯應用程序 (BUILD_PACKAGE) 時設置此變量,表示資源 文件,通常會定義成 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 簽名認證LOCAL_CFLAGS 為 C/C+ 編 譯 器 定 義 額 外 的 標 志 ( 如 宏 定 義 ) , 舉 例 : LOCAL_CFLAGS += -DLIBUTILS_NA TIVE=1LOCAL_CLASSPATH
50、LOCAL_COMPRESS_MODULE_SYMBOLSLOCAL_COPY_HEADERS install 應 用 程 序 時 需 要 復 制 的 頭 文 件 , 必 須 同 時 定 義 LOCAL_COPY_HEADERS_TOLOCAL_COPY_HEADERS_TO install 應用程序時復制頭文件的目的路徑LOCAL_CPP_EXTENSION 如 果 你 的 C+ 文 件 不 是 以 cpp 為 文 件 后 綴 , 你 可 以 通 過 LOCAL_CPP_EXTENSION 指定 C+ 文件后綴名如: LOCAL_CPP_EXTENSION := .cc 注意統(tǒng)一模塊中 C+
51、 文件后綴必須保持一致。LOCAL_CPPFLAGS 傳遞額外的標志給 C+ 編譯器,如:LOCAL_CPPFLAGS += -ffrie nd-injectio nLOCAL_CXX 指定 C+ 編譯器LOCAL_DX_FLAGSLOCAL_EXPORT_PACKAGE_RESOURCESLOCAL_FORCE_STATIC_EXECUTABLE 如果編譯的可執(zhí)行程序要進行靜態(tài)鏈接 (執(zhí)行時不依賴于任何動 態(tài)庫 ),則設置 LOCAL_FORCE_STA TIC_EXECUTABLE:=true目前只有 libc 有靜態(tài)庫形式, 這個只有文件系統(tǒng)中 /sbin 目錄下的應用程 序會用到,這個
52、目錄下的應用程序在運行時通常文件系統(tǒng)的其它部分還沒有加載,所以必須進行靜態(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 應用程序和庫的時候指定包含的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ù)給連接器 (務必注意參數(shù)的順序 )LOCAL_LDLIBS 為可執(zhí)行程序或者庫的編譯指定額外的庫,指定庫以 -lxxx 格式,舉例: LOCAL_LDLIBS += -lc
54、urses -lpthreadLOCAL_LDLIBS += -Wl,-z,originLOCAL_MODULE 生成的 模塊的名稱 (注 意應用 程序名 稱用 LOCAL_PACKAGE_NAME 而不是 LOCAL_MODULE)LOCAL_MODULE_PATH 生成模塊的路徑LOCAL_MODULE_STEMLOCAL_MODULE_TAGS 生成模塊的標記LOCAL_NO_DEFAULT_COMPILER_FLAGSLOCAL_NO_EMMA_COMPILELOCAL_NO_EMMA_INSTRUMENTLOCAL_NO_STANDARD_LIBRARIESLOCAL_OVERRID
55、ES_PACKAGESLOCAL_PACKAGE_NAME APK 應用程序的名稱LOCAL_POST_PROCESS_COMMANDLOCAL_PREBUILT_EXECUTABLES 預 編 譯 including $(BUILD_PREBUILT) 或 者 $(BUILD_HOST_PREBUILT) 時所用 ,指定需要復制的可執(zhí)行文件LOCAL_PREBUILT_JA VA_LIBRARIESLOCAL_PREBUILT_LIBS 預編譯 including $(BUILD_PREBUILT)或者 $(BUILD_HOST_PREBUILT)時所用, 指定需要復制的庫LOCAL_PREBUILT_OBJ_FILESLOCAL_PREBUILT_STATIC_JA VA_LIBRARIESLOCAL_PRELINK_MODULE是否需要預連接處理(默認需要,用來做動態(tài)庫優(yōu)化)LOCAL_REQUIRED_MODULES指定模塊運行所依賴的模塊(模塊安裝時將會同步安裝它所依賴的模塊)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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鄉(xiāng)村道路承包維修合同范例
- 農(nóng)村買賣房屋合同范例
- 晚期肺癌患者預期性悲傷影響因素及干預方案構建研究
- 公司ceo合同范例
- 個體股轉(zhuǎn)讓協(xié)議合同范例
- 減少農(nóng)藥保證合同范例
- 制作地產(chǎn)廣告合同范例
- 中鐵電氣化局員工合同范本
- 農(nóng)村建房拆除合同范例
- c創(chuàng)意合同范例
- 模具費支付合同模板
- 餐飲部總監(jiān)述職報告
- 遼寧省沈陽市第七中學2024-2025學年九年級上學期期中英語試題
- 小學金融普及
- 2024電力建設工程綠色建造評價規(guī)范
- 安寧療護課件
- 中小學-珍愛生命拒絕毒品-課件
- 價值觀考核評定表
- 振動篩施工技術方案
- 急救藥品課件教學課件
- 學術英語智慧樹知到答案2024年南開大學
評論
0/150
提交評論