0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Android.mk判斷語句簡介

哆啦安全 ? 來源:程序員Android ? 2023-04-15 09:29 ? 次閱讀

一 、Android.mk 簡介

Android.mk 是Android 提供的一種makefile 文件,注意用來編譯生成(exe,so,a,jar,apk)等文件。

d8b00726-db15-11ed-bfe3-dac502259ad0.jpg

Android.mk生成文件

二、Android.mk 的基本格式

Android.mk 基本格式如下

# 定義模塊當(dāng)前路徑LOCAL_PATH := $(call my-dir) #清空當(dāng)前環(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 深入學(xué)習(xí)一

使用Android.mk 可以編譯多個目標(biāo)文件:

d8ba735a-db15-11ed-bfe3-dac502259ad0.jpg

Android.mk 編譯多個目標(biāo)文件

編譯動態(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 深入學(xué)習(xí)二

d8d7278e-db15-11ed-bfe3-dac502259ad0.jpg

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 深入學(xué)習(xí)三

d8e211a8-db15-11ed-bfe3-dac502259ad0.jpg

Android.mk 深入學(xué)習(xí)三

編譯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)

預(yù)編譯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)# 預(yù)編譯include $(BUILD_PREBUILT)

預(yù)編譯文件類型如下:

1.LOCAL_MODULE_CLASS:
編譯文件類型

2.JAVA_LIBRARIES:
dex歸檔文件

3.APPS:
APK文件

4.SHARED_LIBRARIES:
動態(tài)庫文件

5.EXECUTABLES:
二進(jìn)制文件

6.ETC:
其他文件格式

六、 Android.mk 判斷語句

Android.mk 中的判斷語句

ifeq($(VALUE), x)  #ifneq
 do_yeselse
 do_noendif

ifeq/ifneq:根據(jù)判斷條件執(zhí)行相關(guān)編譯





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Android
    +關(guān)注

    關(guān)注

    12

    文章

    3908

    瀏覽量

    126910
  • JAVA語言
    +關(guān)注

    關(guān)注

    0

    文章

    138

    瀏覽量

    20055
  • C++語言
    +關(guān)注

    關(guān)注

    0

    文章

    147

    瀏覽量

    6944

原文標(biāo)題:六、 Android.mk 判斷語句

文章出處:【微信號:哆啦安全,微信公眾號:哆啦安全】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    AM335X開發(fā)板Android 應(yīng)用程序獲得system權(quán)限的方法

    在app工程添加Android.mk文件,其中的LOCAL_CERTIFICATE要賦值為platform,即用系統(tǒng)的簽名,通過這種方式只能使應(yīng)用程序的權(quán)限升級到system級別。參考例程如下
    發(fā)表于 05-20 17:55

    芯靈思開發(fā)板安卓底層開發(fā)學(xué)習(xí)經(jīng)驗第四期

    MAKEFILE_LIST是在我們做編譯的時候,當(dāng)前目錄下的Android.mk會被加載到這個里邊,而lastWord是取最后一個makefile第二行,會首先判斷這個環(huán)境變量中是否包含這個文件,如果有,我們會
    發(fā)表于 08-18 09:11

    芯靈思開發(fā)板安卓底層開發(fā)學(xué)習(xí)經(jīng)驗第七期

    這一期我們繼續(xù)探索Android.mk ,主要講的是如何編譯jar包,如何編譯APK,APK中如何導(dǎo)入jar包和庫文件,如何在Android.mk中添加判斷語句首先我們看一下如何編譯生成APK,下面
    發(fā)表于 08-28 16:32

    芯靈思開發(fā)板安卓底層開發(fā)資料七

    www.sinlinx.com這一期我們繼續(xù)探索Android.mk主要講的是如何編譯jar包,如何編譯APK,APK中如何導(dǎo)入jar包和庫文件,如何在Android.mk中添加判斷語句首先我們
    發(fā)表于 10-12 10:22

    為什么執(zhí)行不了if判斷語句?

    ; } else if(y2==0x06) {tmp=0x20; LCD_WrDat(0x20);P1=0x20; } else if(y2==0x07) {tmp=0x40; LCD_WrDat(0x40);P1=0x40; }為什么執(zhí)行不了if判斷語句??P1=y2是接小燈,亮的結(jié)果表明y2有賦值?。?/div>
    發(fā)表于 12-10 09:30

    if(DlyCrcEn & (|DlyCrcCnt[3:0])) 請問這個判斷語句是不是合法的 ?

    if(DlyCrcEn & (|DlyCrcCnt[3:0]))這個判斷語句是不是合法的
    發(fā)表于 03-29 20:29

    請問一下怎么去解決編譯錯誤_config.mk的問題

    ;frameworks/av/media/libcedarc/library/Android.mk:28: "lib_32 is: "notdef"_32"frameworks
    發(fā)表于 01-04 07:55

    編譯錯誤_config.mk: No such file or directory怎么解決?

    ;frameworks/av/media/libcedarc/library/Android.mk:28: "lib_32 is: "notdef"_32"
    發(fā)表于 01-13 07:14

    python判斷語句

    python判斷語句:if1. 簡單小例子如果滿足條件 A,則執(zhí)行代碼塊 a,否則執(zhí)行代碼塊 b。類似這樣的控制流程語句,稱之為條件語句。它的基本形式是if 判斷條件: 執(zhí)行
    發(fā)表于 02-25 16:22

    如何去解決RK3568 Android系統(tǒng)二次編譯失敗的問題

    BUILD_BROKEN_DUP_RULES := true,但又會出其他問題。 ?。?46% 128/277] including hardware/rockchip/libhwjpeg/Android.mk 。.. ?。?48
    發(fā)表于 09-08 16:20

    C++語言基礎(chǔ)講解視頻Switch分支條件判斷語句

    C++語言基礎(chǔ)講解視頻Switch分支條件判斷語句
    發(fā)表于 01-14 08:00 ?7次下載

    python判斷語句的詳細(xì)說明

    python判斷語句:if 1. 簡單小例子 如果滿足條件 A,則執(zhí)行代碼塊 a,否則執(zhí)行代碼塊 b。類似這樣的控制流程語句,稱之為條件語句。 它的基本形式是 if 判斷條件: 執(zhí)行
    的頭像 發(fā)表于 02-25 16:22 ?2290次閱讀

    Android.mk語法簡介

    Android.mk文件用來告知NDK Build系統(tǒng)關(guān)于Source的信息。Android.mk將是GNU Makefile的一部分,且將被Build System解析一次或多次。
    的頭像 發(fā)表于 09-13 15:33 ?1051次閱讀

    Python-流程控制與循環(huán)

    if判斷語句
    的頭像 發(fā)表于 02-16 14:52 ?529次閱讀
    Python-流程控制與循環(huán)

    條件判斷語句(if語句

    條件判斷語句,作為任何編程語言都不可缺少的內(nèi)容,在C語言中也不例外。條件判斷語句可以讓程序的功能更加復(fù)雜,從而實現(xiàn)各種各樣的功能。
    的頭像 發(fā)表于 02-21 15:24 ?3187次閱讀
    條件<b class='flag-5'>判斷語句</b>(if<b class='flag-5'>語句</b>)