一 、Android.mk 簡介
Android.mk 是Android 提供的一種makefile 文件,注意用來編譯生成(exe,so,a,jar,apk)等文件。
Android.mk生成文件
二、Android.mk 的基本格式
Android.mk 基本格式如下
# 定義模塊當前路徑LOCAL_PATH := $(call my-dir) #清空當前環(huán)境變量include $(CLEAR_VARS) ................ # 引入頭文件等LOCAL_xxx := xxx#編譯生成的文件名 LOCAL_MODULE := hello #編譯該模塊所需的源碼LOCAL_SRC_FILES := hello.c #引入jar包等LOCAL_xxx := xxx ................ #編譯生成文件的類型 #LOCAL_MODULE_CLASS 、JAVA_LIBRARIES#APPS 、 SHARED_LIBRARIES#EXECUTABLES 、 ETCinclude $(BUILD_EXECUTABLE)
三、Android.mk 深入學習一
使用Android.mk 可以編譯多個目標文件:
Android.mk 編譯多個目標文件
編譯動態(tài)庫
C/C++ 文件編譯生成靜態(tài)庫.so文件參考如下
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) # 生成libhell.soLOCAL_MODULE = libhello LOCAL_CFLAGS = $(L_CFLAGS) LOCAL_SRC_FILES = hello.c LOCAL_C_INCLUDES = $(INCLUDES) LOCAL_SHARED_LIBRARIES := libcutils LOCAL_COPY_HEADERS_TO := libhello LOCAL_COPY_HEADERS := hello.h #編譯動態(tài)庫 BUILD_SHARED_LIBRARYinclude $(BUILD_SHARED_LIBRARY)
編譯靜態(tài)庫
C/C++ 文件編譯生成靜態(tài)庫.a文件參考如下
#編譯靜態(tài)庫 LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) # 生成libhell.aLOCAL_MODULE = libhello LOCAL_CFLAGS = $(L_CFLAGS) LOCAL_SRC_FILES = hello.c LOCAL_C_INCLUDES = $(INCLUDES) LOCAL_SHARED_LIBRARIES := libcutils LOCAL_COPY_HEADERS_TO := libhello LOCAL_COPY_HEADERS := hellos.h # 編譯 靜態(tài)庫 BUILD_STATIC_LIBRARYinclude $(BUILD_STATIC_LIBRARY)
四、 Android.mk 深入學習二
Android.mk 引用資源
引用靜態(tài)庫
LOCAL_STATIC_LIBRARIES += libxxxxx
LOCAL_STATIC_LIBRARIES := ... libxxx2 libxxx
引用動態(tài)庫
LOCAL_SHARED_LIBRARIES += libxxxxx
LOCAL_SHARED_LIBRARIES := liblog libnativehelper libGLESv2
引用第三方庫文件
LOCAL_LDFLAGS:=-L/PATH -Lxxx
LOCAL_LDFLAGS := $(LOCAL_PATH)/lib/libtest.a
引用第三方頭文件
LOCAL_C_INCLUDES :=path
eg:
LOCAL_C_INCLUDES = $(INCLUDES)
五、 Android.mk 深入學習三
Android.mk 深入學習三
編譯apk
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES := $(call all-subdir-java-files) # 生成hello apk LOCAL_PACKAGE_NAME := hello include $(BUILD_PACKAGE)
編譯jar包
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES := $(call all-subdir-java-files) # 生成 hello LOCAL_MODULE := hello # 編譯生成靜態(tài)jar包 include $(BUILD_STATIC_JAVA_LIBRARY) #編譯生成共享jar include $(BUILD_JAVA_LIBRARY)
靜態(tài)jar包:
include $(BUILD_STATIC_JAVA_LIBRARY)
使用.class文件打包而成的JAR文件,可以在任何java虛擬機運行
動態(tài)jar包:
include $(BUILD_JAVA_LIBRARY)
在靜態(tài)jar包基礎(chǔ)之上使用.dex打包而成的jar文件,.dex是android系統(tǒng)使用的文件格式。
APK 依賴jar
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)# 靜態(tài)jar包LOCAL_STATIC_JAVA_LIBRARIES := static-library#動態(tài)jar包LOCAL_JAVA_LIBRARIES := share-library LOCAL_SRC_FILES := $(call all-subdir-java-files) LOCAL_PACKAGE_NAME := helloinclude $(BUILD_PACKAGE)
預編譯jar包
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)#指定編譯生成的文件類型LOCAL_MODULE_CLASS := JAVA_LIBRARIES LOCAL_MODULE := hello LOCAL_SRC_FILES := $(call all-subdir-java-files)# 預編譯include $(BUILD_PREBUILT)
預編譯文件類型如下:
1.LOCAL_MODULE_CLASS:
編譯文件類型
2.JAVA_LIBRARIES:
dex歸檔文件
3.APPS:
APK文件
4.SHARED_LIBRARIES:
動態(tài)庫文件
5.EXECUTABLES:
二進制文件
6.ETC:
其他文件格式
六、 Android.mk 判斷語句
Android.mk 中的判斷語句
ifeq($(VALUE), x) #ifneq do_yeselse do_noendif
ifeq/ifneq:根據(jù)判斷條件執(zhí)行相關(guān)編譯
審核編輯:劉清
-
Android
+關(guān)注
關(guān)注
12文章
3935瀏覽量
127339 -
JAVA語言
+關(guān)注
關(guān)注
0文章
138瀏覽量
20090 -
C++語言
+關(guān)注
關(guān)注
0文章
147瀏覽量
6987
原文標題:六、 Android.mk 判斷語句
文章出處:【微信號:哆啦安全,微信公眾號:哆啦安全】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論