欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

android.mk,androidmk99

android.mk文件怎么寫

 一個(gè)Android.mk file用來向編譯系統(tǒng)描述你的源代碼。具體來說:該文件是GNU Makefile的一小部分,會(huì)被編譯系統(tǒng)解析一次或多次。你可以在每一個(gè)Android.mk file中定義一個(gè)或多個(gè)模塊,你也可以在幾個(gè)模塊中使用同一個(gè)源代碼文件。編譯系統(tǒng)為你處理許多細(xì)節(jié)問題。例如,你不需要在你的Android.mk中列出頭文件和依賴文件。NDK編譯系統(tǒng)將會(huì)為你自動(dòng)處理這些問題。這也意味著,在升級(jí)NDK后,你應(yīng)該得到新的toolchain/platform支持,而且不需要改變你的Android.mk文件。

我們提供的服務(wù)有:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、寧陵ssl等。為上千多家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的寧陵網(wǎng)站制作公司

先看一個(gè)簡(jiǎn)單的例子:一個(gè)簡(jiǎn)單的"hello world",比如下面的文件:

sources/helloworld/helloworld.c

sources/helloworld/Android.mk

相應(yīng)的Android.mk文件會(huì)象下面這樣:

---------- cut here ------------------

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE

:= helloworld

LOCAL_SRC_FILES := helloworld.c

include $(BUILD_SHARED_LIBRARY)

---------- cut here ------------------

我們來解釋一下這幾行代碼:

LOCAL_PATH := $(call my-dir)

一個(gè)Android.mk file首先必須定義好LOCAL_PATH變量。它用于在開發(fā)樹中查找源文件。在這個(gè)例子中,宏函數(shù)’my-dir’, 由編譯系統(tǒng)提供,用于返回當(dāng)前路徑(即包含Android.mk file文件的目錄)。

include $( CLEAR_VARS)

CLEAR_VARS由編譯系統(tǒng)提供,指定讓GNU MAKEFILE為你清除許多LOCAL_XXX變量(例如 LOCAL_MODULE, LOCAL_SRC_FILES, LOCAL_STATIC_LIBRARIES, 等等...),除LOCAL_PATH 。這是必要的,因?yàn)樗械木幾g控制文件都在同一個(gè)GNU MAKE執(zhí)行環(huán)境中,所有的變量都是全局的。

LOCAL_MODULE := helloworld

LOCAL_MODULE變量必須定義,以標(biāo)識(shí)你在Android.mk文件中描述的每個(gè)模塊。名稱必須是唯一的,而且不包含任何空格。注意編譯系統(tǒng)會(huì)自動(dòng)產(chǎn)生合適的前綴和后綴,換句話說,一個(gè)被命名為'foo'的共享庫模塊,將會(huì)生成'libfoo.so'文件。

LOCAL_SRC_FILES := helloworld.c

LOCAL_SRC_FILES變量必須包含將要編譯打包進(jìn)模塊中的C或C++源代碼文件。注意,你不用在這里列出頭文件和包含文件,因?yàn)榫幾g系統(tǒng)將會(huì)自動(dòng)為你找出依賴型的文件;僅僅列出直接傳遞給編譯器的源代碼文件就好。

在Android中增加本地程序或者庫,這些程序和庫與其所載路徑?jīng)]有任何關(guān)系,只和它們的Android.mk文件有關(guān)系。Android.mk和普通的Makefile有所不同,它具有統(tǒng)一的寫法,主要包含一些系統(tǒng)公共的宏。

在一個(gè)Android.mk中可以生成多個(gè)可執(zhí)行程序、動(dòng)態(tài)庫和靜態(tài)庫。

1,編譯應(yīng)用程序的模板:

#Test Exe

LOCAL_PATH := $(call my-dir)

#include $(CLEAR_VARS)

LOCAL_SRC_FILES:= main.c

LOCAL_MODULE:= test_exe

#LOCAL_C_INCLUDES :=

#LOCAL_STATIC_LIBRARIES :=

#LOCAL_SHARED_LIBRARIES :=

include $(BUILD_EXECUTABLE)

(菜鳥級(jí)別解釋::=是賦值的意思,$是引用某變量的值)LOCAL_SRC_FILES中加入源文件路徑,LOCAL_C_INCLUDES 中加入所需要包含的頭文件路徑,LOCAL_STATIC_LIBRARIES加入所需要鏈接的靜態(tài)庫(*.a)的名稱,LOCAL_SHARED_LIBRARIES中加入所需要鏈接的動(dòng)態(tài)庫(*.so)的名稱,LOCAL_MODULE表示模塊最終的名稱,BUILD_EXECUTABLE表示以一個(gè)可執(zhí)行程序的方式進(jìn)行編譯。

2,編譯靜態(tài)庫的模板:

#Test Static Lib

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_SRC_FILES:= /

helloworld.c

LOCAL_MODULE:= libtest_static

#LOCAL_C_INCLUDES :=

#LOCAL_STATIC_LIBRARIES :=

#LOCAL_SHARED_LIBRARIES :=

include $(BUILD_STATIC_LIBRARY)

一般的和上面相似,BUILD_STATIC_LIBRARY表示編譯一個(gè)靜態(tài)庫。

3,編譯動(dòng)態(tài)庫的模板:

#Test Shared Lib

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_SRC_FILES:= /

helloworld.c

LOCAL_MODULE:= libtest_shared

TARGET_PRELINK_MODULES := false

#LOCAL_C_INCLUDES :=

#LOCAL_STATIC_LIBRARIES :=

#LOCAL_SHARED_LIBRARIES :=

include $(BUILD_SHARED_LIBRARY)

一般的和上面相似,BUILD_SHARED_LIBRARY表示編譯一個(gè)靜態(tài)庫。

以上三者的生成結(jié)果分別在如下,generic依具體target會(huì)變:

out/target/product/generic/obj/EXECUTABLE

out/target/product/generic/obj/STATIC_LIBRARY

out/target/product/generic/obj/SHARED_LIBRARY

每個(gè)模塊的目標(biāo)文件夾分別為:

可執(zhí)行程序:XXX_intermediates

靜態(tài)庫: XXX_static_intermediates

動(dòng)態(tài)庫: XXX_shared_intermediates

另外,在Android.mk文件中,還可以指定最后的目標(biāo)安裝路徑,用LOCAL_MODULE_PATH和LOCAL_UNSTRIPPED_PATH來指定。不同的文件系統(tǒng)路徑用以下的宏進(jìn)行選擇:

TARGET_ROOT_OUT:表示根文件系統(tǒng)。

TARGET_OUT:表示system文件系統(tǒng)。

TARGET_OUT_DATA:表示data文件系統(tǒng)。

用法如:

CAL_MODULE_PATH:=$(TARGET_ROOT_OUT)

Z9002022款如何調(diào)節(jié)大燈開關(guān)

方向盤左下方有一個(gè)可調(diào)節(jié)的旋轉(zhuǎn)開關(guān),就是大燈高度調(diào)節(jié)開關(guān)。現(xiàn)在,又有一款內(nèi)置安卓系統(tǒng)的USB便攜電腦Android 4.0 mini PC面世,即Zero Devices Z900。

MK802另一個(gè)型號(hào)名是Z802,而Zero Devices這次推出的Z900就是MK802的升級(jí)版,其他方面,Zero Devices Z900采用獨(dú)特的外殼設(shè)計(jì),內(nèi)置512MB內(nèi)存和4GB存儲(chǔ)空間。

提供microSD卡插槽和HDMI、USB、mini USB接口尺寸為89×32×18毫米,重量為38克。

Zero Devices Z900將運(yùn)行Android 4.0冰淇淋三明治系統(tǒng),如果你需要,還可以刷Android 2.3甚至是Linux系統(tǒng),和MK802一樣,用戶可以通過HDMI接口連接外置顯示器,再通過USB接口連接鼠標(biāo)或鍵盤。

至于Z900的上市時(shí)間和價(jià)格,暫時(shí)還沒有消息,不過將有黑白兩色選擇。

Z9002022款大燈高度調(diào)節(jié)

前照燈高度調(diào)節(jié)旋鈕通常位于儀表板的左側(cè)和燈光控制開關(guān)的一側(cè)旋鈕上一般有0到3的數(shù)字,數(shù)字越高,高度越低大多數(shù)情況下,0的位置就可以了。

0為初始位置和水平高度,適用于前排有人,行李空裝載的情況1-3檔適用于車滿行李滿的情況。

大燈高度可調(diào)一般車內(nèi)有一個(gè)手動(dòng)調(diào)節(jié)旋鈕,可以隨意調(diào)節(jié)大燈的照明高度,但有些高端豪華車的大燈是自動(dòng)水平調(diào)節(jié)的。

對(duì)于大燈高度自動(dòng)調(diào)節(jié)的車輛,車身會(huì)配備多個(gè)傳感器,可以檢測(cè)車輛的動(dòng)態(tài)平衡,并根據(jù)預(yù)設(shè)程序調(diào)節(jié)光束角度,但同時(shí)也有一定的局限性,不能根據(jù)實(shí)際需要改變,需要人工干預(yù)。

如何調(diào)用android.mk 中的變量

變量

1

LOCAL_PATH := $(call my-dir)

1、解釋 LOCAL_PATH:

英文:如下圖

中文:Android.mk 開始必須定義變量 LOCAL_PATH,它用來指定源文件的位置

2、解釋 my-dir:

英文:如下圖

中文:編譯系統(tǒng)提供的'my-dir'宏函數(shù),被用來獲取當(dāng)前的目錄。

2

include $(CLEAR_VARS)

1、解釋 CLEAR_VARS:

英文:如下圖

中文:編譯系統(tǒng)提供CLEAR_VARS變量,它指向了一個(gè)用來清除 LOCAL_ 開頭的變量(LOCAL_PATH除外)的makefile文件,需要它的原因是整個(gè)的編譯上下文中,所有的變量都是全局的,這樣就可以保證這些變量只在局部范圍內(nèi)起作用;

3

LOCAL_MODULE := hello-jni

1、解釋 LOCAL_MODULE:

英文:如下圖

中文:每一個(gè)android.mk文件中都必須定義一個(gè)模塊標(biāo)示 LOCAL_MODULE , 這個(gè)名字必須是唯一的并且不包含任何的空格,編譯系統(tǒng)將自動(dòng)的修改生成文件的前綴和后綴,如一個(gè)模塊為'foo'共享庫將被改為'libfoo.so';

重要提示,如果你的模塊名為'libfoo',編譯系統(tǒng)生成的文件為 'libfoo.so', 而不會(huì)去再增加前綴,當(dāng)你使用的時(shí)候,android平臺(tái)會(huì)自動(dòng)識(shí)別;

4

LOCAL_SRC_FILES := hello-jni.c

1、解釋 LOCAL_SRC_FILES

英文:如下圖

中文:LOCAL_SRC_FILES必須包含一系列的C/C++源文件,他們將會(huì)被建立和裝載到模塊中,注意你不應(yīng)該把需要包含的頭文件列在這里,因?yàn)榻⑾到y(tǒng)將自動(dòng)計(jì)算依賴項(xiàng),只有源文件才能夠被編譯器識(shí)別;

2、解釋 LOCAL_CPP_EXTENSION

英文:如下圖

中文:注意默認(rèn)的c++文件擴(kuò)展名是'.cpp', LOCAL_CPP_EXTENSION可以用來指定不同類型的擴(kuò)展名,不要忘了前面的點(diǎn)(如:'.cxx' 將起作用, 但是 'cxx'不會(huì)起作用).

如:LOCAL_CPP_EXTENSION := .cc .cpp

5

include $(BUILD_SHARED_LIBRARY)

1、解釋 BUILD_SHARED_LIBRARY

英文:如下圖

中文:‘建立系統(tǒng)’提供個(gè)變量 BUILD_SHARED_LIBRARY, 將根據(jù)在‘include’之前定義的所有的信息和LOCAL_前綴的變量,決定將建立什么,如何正確的生成共享庫;

2、解釋 BUILD_STATIC_LIBRARY

英文: 如下圖

中文: 同上,只不過它生成的是靜態(tài)庫

6

LOCAL_C_INCLUDES := $(NDK_ROOT)/sources/third_party/freetype

1、解釋 NDK_ROOT

中文:NDK_ROOT 代表的是ndk的根目錄,如我的是“D:\Android\android-ndk-r10”,這個(gè)例子是用來加載ndk根目錄下的freetype的頭文件路徑;

7

LOCAL_LDFLAGS := \

$(LOCAL_PATH)/libs/$(TARGET_ARCH_ABI)/libfreetype.a

1、解釋 LOCAL_LDFLAGS

中文:用來加載用戶自己的靜態(tài)庫(.a文件)

2、解釋 TARGET_ARCH_ABI

中文:當(dāng)前的cpu/abi的類型,在鏈接不同類型的CPU_ABI時(shí)非常有用,如下圖

8

$(call import-add-path,$(LOCAL_PATH)/libsrc)

1、解釋:import-add-path

中文:增加自己的路徑到 NDK_MODULE_PATH 環(huán)境變量中,再非ndk根目錄/sources下編譯時(shí)會(huì)用到

9

LOCAL_SRC_FILES := hello-jni.c HelloJni.cpp

$(error $(LOCAL_SRC_FILES))

1、解釋:$

中文:變量前面加上"$"用來返回變量的值

2、解釋:$(error string)

中文:用來將string所對(duì)應(yīng)的內(nèi)容打印到控制臺(tái),并且android.mk文件停止繼續(xù)進(jìn)行編譯,如下圖

10

LOCAL_SRC_FILES := hello-jni.c HelloJni.cpp

$(warning $(LOCAL_SRC_FILES))

1、解釋:$(warning string)

中文:用來將string所對(duì)應(yīng)的內(nèi)容打印到控制臺(tái),并且android.mk文件將繼續(xù)進(jìn)行編譯,如下圖

11

LOCAL_PRELINK_MODULE := false

1、解釋 LOCAL_PRELINK_MODULE:

中文:關(guān)閉編譯器鏈接前進(jìn)行代碼優(yōu)化,防止將沒有用到的代碼不添加到生成的庫中

12

LOCAL_EXPORT_CFLAGS := -DFOO=1

1、解釋 LOCAL_EXPORT_CFLAGS

定義這個(gè)變量來記錄一些列的 c/c++編譯標(biāo)志,他們將會(huì)增加到其他的使用這個(gè)模塊的LOCAL_CFLAGS中,LOCAL_CFLAGS的功能相當(dāng)于:LOCAL_STATIC_LIBRARIES 和 LOCAL_SHARED_LIBRARIES 這兩個(gè)變量;

13

LOCAL_STATIC_LIBRARIES := foo

1、解釋 LOCAL_STATIC_LIBRARIES

鏈接進(jìn)來一個(gè)靜態(tài)庫的模塊,這里是靜態(tài)庫的模塊的名稱,而不是靜態(tài)庫的名稱

14

LOCAL_SHARED_LIBRARIES

鏈接進(jìn)來一個(gè)動(dòng)態(tài)庫的模塊,這里是動(dòng)態(tài)庫的模塊的名稱,而不是靜態(tài)庫的名稱

15

LOCAL_EXPORT_CPPFLAGS

跟 LOCAL_EXPORT_CFLAGS 的功能一樣,但是它只能夠在c++中使用

16

LOCAL_EXPORT_C_INCLUDES

跟 LOCAL_EXPORT_CFLAGS,但是對(duì)于c的 include路徑,被調(diào)用模塊申明后,使用模塊可以很方便的使用包含的路徑

17

LOCAL_EXPORT_LDFLAGS

跟LOCAL_EXPORT_CFLAGS的作用一樣,但是僅僅是鏈接選項(xiàng)

18

LOCAL_EXPORT_LDLIBS

跟LOCAL_EXPORT_CFLAGS的作用類似,但是這個(gè)變量說明的系統(tǒng)庫,需要帶上 '-l' 前綴,他們將導(dǎo)入鏈接器選項(xiàng),并追加到你的模塊的 LOCAL_LDLIBS

19

LOCAL_ALLOW_UNDEFINED_SYMBOLS := true

允許未定義的符號(hào)

20

LOCAL_CFLAGS

.c文件對(duì)應(yīng)的編譯標(biāo)記變量

21

LOCAL_LDLIBS

用來鏈接共享庫(so)或者執(zhí)行文件,使用系統(tǒng)的庫文件的時(shí)候,需要加上前綴 '-l',例如下面的例子,將告訴連接器生成的模塊的時(shí)候同時(shí)鏈接 /system/lib/libz.so

LOCAL_LDLIBS := -lz

注意:如果你在一個(gè)模塊中鏈接一個(gè)靜態(tài)庫,這個(gè)靜態(tài)庫是不會(huì)起作用的,同時(shí)ndk-build 會(huì)打印出一條警告消息

22

LOCAL_CFLAGS := -fvisibility=hidden

隱藏庫函數(shù)名

23

LOCAL_PROGUARD_ENABLED默認(rèn)是打開的,不特別指定的話,就是起作用的,就可能做優(yōu)化。

LOCAL_PROGUARD_ENABLED:= disabled

Android.mk介紹(一)

在Linux下,可以通過Makefile來對(duì)源碼工程進(jìn)行管理,Android.mk文件是Makefile的一小部分,它用來對(duì)Android程序進(jìn)行編譯。Android.mk文件中描述了哪些C文件將被編譯且指明了如何編譯。Android.mk文件用來告知NDK Build 系統(tǒng)關(guān)于Source的信息。

1、編譯可執(zhí)行程序

2、編譯動(dòng)態(tài)庫或靜態(tài)庫

3、預(yù)編譯文件(APK或Java庫)

以上三種是Android.mk的主要用法,我們寫mk文件時(shí)也就是以上三種目的。

首先看一個(gè)最簡(jiǎn)單的Android.mk的例子:

講解:

每個(gè)Android.mk文件必須以定義 LOCAL_PATH 為開始。它用于在開發(fā)tree中查找源文件。

宏 my-dir 由Build System提供。返回包含Android.mk的目錄路徑。

CLEAR_VARS 變量由Build System提供。并指向一個(gè)指定的GNU Makefile,由它負(fù)責(zé)清理很多LOCAL_xxx.

例如:LOCAL_MODULE, LOCAL_SRC_FILES, LOCAL_STATIC_LIBRARIES等等。但不清理 LOCAL_PATH .

這個(gè)清理動(dòng)作是必須的,因?yàn)樗械木幾g控制文件由同一個(gè)GNU Make解析和執(zhí)行,其變量是全局的。所以清理后才能避免相互影響。

LOCAL_MODULE 模塊必須定義,以表示Android.mk中的每一個(gè)模塊。名字必須唯一且不包含空格。

Build System會(huì)自動(dòng)添加適當(dāng)?shù)那熬Y和后綴。例如,foo,要產(chǎn)生動(dòng)態(tài)庫,則生成libfoo.so.

但請(qǐng)注意:如果模塊名被定為:libfoo.則生成libfoo.so. 不再加前綴。

LOCAL_SRC_FILES變量必須包含將要打包如模塊的C/C++ 源碼。

不必列出頭文件,build System 會(huì)自動(dòng)幫我們找出依賴文件。

缺省的C++源碼的擴(kuò)展名為.cpp. 也可以修改,通過LOCAL_CPP_EXTENSION。

BUILD_SHARED_LIBRARY:是Build System提供的一個(gè)變量,指向一個(gè)GNU Makefile Script。

它負(fù)責(zé)收集自從上次調(diào)用include $(CLEAR_VARS) 后的所有LOCAL_XXX信息。并決定編譯為什么。

BUILD_STATIC_LIBRARY:編譯為靜態(tài)庫。

BUILD_SHARED_LIBRARY :編譯為動(dòng)態(tài)庫

BUILD_EXECUTABLE:編譯為Native C可執(zhí)行程序

BUILD_PACKAGE(既可以編apk,也可以編資源包文件,但是需要指定LOCAL_EXPORT_PACKAGE_RESOURCES:=true)

BUILD_JAVA_LIBRARY(Java共享庫)

BUILD_STATIC_JAVA_LIBRARY(java靜態(tài)庫)

Android源碼中有大量的mk文件,Android系統(tǒng)的編譯就是靠著這些mk文件的,所以學(xué)好是非常有必要的哦!

android.mk是在什么情況下生成的

當(dāng)你需要使用JNI的時(shí)候,你需要?jiǎng)?chuàng)建一個(gè)native工程。Android.mk就是一個(gè)makefile配置文件,幫你把C/C++的代碼編譯成動(dòng)態(tài)庫so的。

創(chuàng)建的方式有兩種:

在工程根目錄里手動(dòng)創(chuàng)建一個(gè)目錄叫jni,在里面新建一個(gè)Android.mk,然后創(chuàng)建c,cpp文件,把他們配置到Android.mk里。

右鍵工程,選擇Android Tools-Add Native Support自動(dòng)生成。

擴(kuò)展資料:

創(chuàng)建Android庫

Android 庫在結(jié)構(gòu)上與 Android 應(yīng)用模塊相同。可以提供構(gòu)建應(yīng)用所需的一切內(nèi)容,包括源代碼、資源文件和 Android 清單。

不過,Android 庫將編譯到可以用作 Android 應(yīng)用模塊依賴項(xiàng)的 Android 歸檔 (AAR:Android Archive Resource) 文件,而不是在設(shè)備上運(yùn)行的 APK。

與 JAR 文件不同,AAR 文件可以包含 Android 資源和一個(gè)清單文件,這樣,除了 Java 類與方法外,還可以捆綁布局和可繪制對(duì)象等共享資源。

庫模塊在以下情況下非常有用:

構(gòu)建使用某些相同組件(例如 Activity、服務(wù)或 UI 布局)的多個(gè)應(yīng)用。

構(gòu)建存在多個(gè) APK 變體(例如免費(fèi)版本和付費(fèi)版本)的應(yīng)用并且需要在兩種版本中使用相同的核心組件。

參考資料來源:百度百科-Android

分享文章:android.mk,androidmk99
標(biāo)題來源:http://chinadenli.net/article47/dseicej.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站網(wǎng)站排名App開發(fā)品牌網(wǎng)站制作網(wǎng)站設(shè)計(jì)搜索引擎優(yōu)化

廣告

聲明:本網(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í)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)