RM新时代网站-首页

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

完善資料讓更多小伙伴認識你,還能領(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 基本格式如下

# 定義模塊當前路徑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 可以編譯多個目標文件:

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

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 深入學習二

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 深入學習三

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

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





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(liá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)載請注明出處。

收藏 人收藏

    評論

    相關(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ā)學習經(jīng)驗第四期

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

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

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

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

    www.sinlinx.com這一期我們繼續(xù)探索Android.mk主要講的是如何編譯jar包,如何編譯APK,APK中如何導入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有賦值??!
    發(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判斷語句的詳細說明

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

    Android.mk語法簡介

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

    條件判斷語句(if語句

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

    技術(shù)干貨驛站 ▏深入理解C語言:掌握C語言條件判斷,從if到switch的應(yīng)用

    在編程中,條件判斷語句是控制程序流程的核心元素之一。它們使得程序能夠根據(jù)不同的輸入和狀態(tài),做出相應(yīng)的決策。特別是在C語言中,條件判斷語句的使用極為廣泛,涵蓋了從簡單的if語句到更復雜的switch
    的頭像 發(fā)表于 11-09 01:10 ?295次閱讀
    技術(shù)干貨驛站 ▏深入理解C語言:掌握C語言條件<b class='flag-5'>判斷</b>,從if到switch的應(yīng)用
    RM新时代网站-首页