<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Android.mk 使用詳解

          共 3382字,需瀏覽 7分鐘

           ·

          2020-12-27 00:23

          和你一起終身學習,這里是程序員Android

          經典好文推薦,通過閱讀本文,您將收獲以下知識點:

          一、Android.mk 簡介
          二、Android.mk 的基本格式
          三、Android.mk 深入學習一
          四、 Android.mk 深入學習二
          五、 Android.mk 深入學習三
          六、 Android.mk 判斷語句

          一 、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包基礎之上使用.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:根據判斷條件執(zhí)行相關編譯

          至此,本篇已結束。轉載網絡的文章,小編覺得很優(yōu)秀,歡迎點擊閱讀原文,支持原創(chuàng)作者,如有侵權,懇請聯系小編刪除。同時感謝您的閱讀,期待您的關注。

          點個在看,方便您使用時快速查找!

          瀏覽 181
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  狠狠躁日日躁夜夜躁 | 国产精品久久久精品 | 无码高清一区二区 | 逼逼网站 | 日本一级片免费观看 |