国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Android.mk開發(fā)模板

這篇具有很好參考價值的文章主要介紹了Android.mk開發(fā)模板。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

今天簡單寫了一個 Android.mk 的示例模板,供初學(xué)者參考。
本模板主要給大家示例 Android NDK 開發(fā)中的如下幾個問題:

  1. 如何自動添加需要編譯的源文件列表
  2. 如何添加第三方靜態(tài)庫、動態(tài)庫的依賴
  3. 如何構(gòu)造一個完整的NDK工程框架

假設(shè)我們的項(xiàng)目依賴 libmath.a, libjson.a, libffmpeg.so 這幾個第三方庫文件,項(xiàng)目包含如下幾個模塊:algorithm,core,network,utils,tests,每個模塊都有若干個.c/.h文件,我們要把整個工程編譯為動態(tài)庫,并通過 native_sdk.c 中的函數(shù)向Java層提供調(diào)用接口。
那么,我們可以對 Android 工程的 jni 目錄,做如下劃分:

Android.mk開發(fā)模板,android

對應(yīng)的 Android.mk 文件的寫法示例如下:

LOCAL_PATH := $(call my-dir)
3RD_INC_DIR = $(LOCAL_PATH)/3rd/inc
3RD_LIB_DIR = $(LOCAL_PATH)/3rd/libs
 
# Prebuild the 3rd libraries 
 
include $(CLEAR_VARS)
LOCAL_MODULE := math
LOCAL_SRC_FILES := $(3RD_LIB_DIR)/libmath.a
include $(PREBUILT_STATIC_LIBRARY)
 
include $(CLEAR_VARS)
LOCAL_MODULE := json
LOCAL_SRC_FILES := $(3RD_LIB_DIR)/libjson.a
include $(PREBUILT_STATIC_LIBRARY)
 
include $(CLEAR_VARS)
LOCAL_MODULE := ffmpeg
LOCAL_SRC_FILES := $(3RD_LIB_DIR)/libffmpeg.so
include $(PREBUILT_SHARED_LIBRARY)
 
# Build native sdk 
 
include $(CLEAR_VARS)    
 
LOCAL_MODULE := native_sdk
 
LOCAL_SRC_FILES := \
    $(subst $(LOCAL_PATH)/,,$(wildcard $(LOCAL_PATH)/src/algorithm/*.c))  \
    $(subst $(LOCAL_PATH)/,,$(wildcard $(LOCAL_PATH)/src/core/*.c))  \
    $(subst $(LOCAL_PATH)/,,$(wildcard $(LOCAL_PATH)/src/network/*.c)) \
    $(subst $(LOCAL_PATH)/,,$(wildcard $(LOCAL_PATH)/src/utils/*.c)) \
    $(subst $(LOCAL_PATH)/,,$(wildcard $(LOCAL_PATH)/src/*.c))  
    
LOCAL_C_INCLUDES := $(3RD_INC_DIR)
LOCAL_C_INCLUDES := $(LOCAL_PATH)/src 
LOCAL_C_INCLUDES := $(LOCAL_PATH)/src/algorithm
LOCAL_C_INCLUDES += $(LOCAL_PATH)/src/core
LOCAL_C_INCLUDES += $(LOCAL_PATH)/src/network
LOCAL_C_INCLUDES += $(LOCAL_PATH)/src/utils
 
LOCAL_CFLAGS := -DANDROID                                      
LOCAL_LDLIBS := -llog 
 
LOCAL_STATIC_LIBRARIES := math json
LOCAL_SHARED_LIBRARIES := ffmpeg
 
include $(BUILD_SHARED_LIBRARY)
 
 
# Build tests
 
include $(CLEAR_VARS)    
LOCAL_MODULE := test.out
LOCAL_SRC_FILES := $(subst $(LOCAL_PATH)/,,$(wildcard $(LOCAL_PATH)/tests/*.c)) 
LOCAL_CFLAGS := -DANDROID 
LOCAL_C_INCLUDES := $(LOCAL_PATH)/src 
LOCAL_LDLIBS := -llog -fPIE -pie
LOCAL_SHARED_LIBRARIES:= native_sdk
include $(BUILD_EXECUTABLE)

對于 Android.mk 而言,如果要依賴第三方庫文件,則必須添加 PREBUILT_XXXX_LIBRARY 進(jìn)行預(yù)編譯,LOCAL_SRC_FILES 宏給出了需要編譯的源文件列表,這里我通過 subst和wildcard 這兩個函數(shù),實(shí)現(xiàn)了自動掃描指定目錄下的源文件,最后,通過 BUILD_EXECUTABLE 編譯出可以運(yùn)行于adb shell命令行的可執(zhí)行程序,用于做代碼的單元測試。文章來源地址http://www.zghlxwxcb.cn/news/detail-682403.html

到了這里,關(guān)于Android.mk開發(fā)模板的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Android.mk文件解析

    1、LOCAL_PATH 當(dāng)前模塊位置 my_dir 系統(tǒng)提供的宏函數(shù),返回當(dāng)前文件所在的路徑 $(call my_dir) 調(diào)用該函數(shù) 2、include $(CLEAR_VARS) 清除除了 LOCAL_PATH 變量外的LOCAL_XXX變量 所有的編譯控制文件都在同一個GNU MAKE執(zhí)行環(huán)境中,所有的編譯控制文件由同一個GNU Make解析和執(zhí)行,其變量是全局

    2023年04月22日
    瀏覽(31)
  • AOSP——Android.mk解析

    Android.mk是用于控制Android代碼的編譯流程,用shell編寫 除帶#的注釋, Android.mk第一句話都是 即將 my-dir方法的返回值賦值給LOCAL_PATH,讓其等于當(dāng)前目錄 ,其中的my-dir方法在build/core/defintions.mk中定義,源碼如下 接下來是 CLEAR_VARS的值在/build/core/config.mk,源碼如下: BUILD_SYSTEM在

    2024年02月09日
    瀏覽(23)
  • Android.mk 常用模塊類型

    生成的是動態(tài)庫(.so 文件) 生成的是靜態(tài)庫(.a 文件) 用于編譯 Java 代碼并生成可執(zhí)行的 Java 程序(.jar 文件) 用于編譯 C/C++ 代碼并生成可執(zhí)行的 C/C++ 程序

    2024年02月02日
    瀏覽(19)
  • Android.mk 文件使用解析

    Android.mk 文件使用解析

    和你一起終身學(xué) 習(xí),這里是程序員Android 經(jīng)典好文推薦,通過閱讀本文,您將收獲以下知識點(diǎn): 一、Android.mk 簡介 二、Android.mk 的基本格式 三、Android.mk 深入學(xué)習(xí)一 四、 Android.mk 深入學(xué)習(xí)二 五、 Android.mk 深入學(xué)習(xí)三 六、 Android.mk 判斷語句 七、參考文獻(xiàn) Android.mk 是Android 提供的

    2024年02月09日
    瀏覽(20)
  • Android.mk和Android.bp的區(qū)別和轉(zhuǎn)換詳解

    Android.mk和Android.bp的區(qū)別和轉(zhuǎn)換詳解

    簡單的說: Android.mk和Android.bp都是用來編譯出類庫.jar,應(yīng)用文件.apk,動態(tài)庫.so,靜態(tài)庫.a等等作用。 Android.mk就是一個GNU make語法的腳本文件。 Android.bp文件是Android 7.0及更高版本中引入的一種構(gòu)建腳本文件,是使用Starlark語法編寫的,它是一種基于Python的輕量級腳本語言。 他們

    2024年04月28日
    瀏覽(17)
  • 編寫Android.mk / Android.bp 引用三方 jar 包,aar包,so 庫

    編寫Android.mk / Android.bp 引用三方 jar 包,aar包,so 庫

    ? ? ? ? 在Android10之后,所有項(xiàng)目工程中,官方推薦使用Android.bp去編譯構(gòu)建,以前使用Android.mk構(gòu)建的項(xiàng)目隨著版本迭代升級,慢慢需要變更為Android.bp, 兩者的語法都需要去了解并熟練使用。 筆者之前寫過Android.mk的語句介紹,里面有介紹每句代碼的含義編寫Android.mk把Andro

    2024年02月06日
    瀏覽(21)
  • android mk 和 bp 引入三方j(luò)ar ,aar

    android mk 和 bp 引入三方j(luò)ar ,aar

    網(wǎng)上有很多關(guān)于這方面的介紹,我這邊直接上完整的文件,供參考,想用的,直接修改模塊名字,就可以使用了,避免踩坑. 1,LOCAL_PATH := $(call my-dir) ? ? ? ? 這個是固定的一般不需要改.my-dir 返回 Android.mk ?文件本身所在的目錄 2,LOCAL_MODULE_TAGS := user eng tests optional 這四

    2024年02月20日
    瀏覽(21)
  • Android.mk中的LOCAL_OVERRIDES_PACKAGES用法

    Android.mk中的LOCAL_OVERRIDES_PACKAGES用法_mk local_over_覓風(fēng)者的博客-CSDN博客 Android.mk中的LOCAL_OVERRIDES_PACKAGES的用法說明可以參考以下文章: Android.mk覆蓋替換LOCAL_OVERRIDES_PACKAGES 此變量可以使其他的模塊不加入編譯 項(xiàng)目中遇到的問題:修改了devicemstaralmonddevice-common.mk文件,將原生

    2024年02月15日
    瀏覽(31)
  • (NDK編譯)詳解使用Android.mk編譯的C/C++程序過程

    (NDK編譯)詳解使用Android.mk編譯的C/C++程序過程

    想要在 Android設(shè)備 上運(yùn)行 C/C++程序 可執(zhí)行文件,可采用一個方法就是使用 NDK編譯 ,很多時候要比 gcc編譯 更適合,這里我采用的是 imx6q開發(fā)板 上面裝載了自己編寫的Android6.0.1鏡像,在 Ubuntu64位 系統(tǒng)上采用NDK編譯。 目錄 1.準(zhǔn)備文件 2.編寫Android.mk 注意 完整Android.mk代碼 3.NDK編

    2024年02月05日
    瀏覽(32)
  • Android 淺度解析:mk預(yù)置AAR、SO文件、APP包和簽名

    在Android開發(fā)中,經(jīng)常需要使用到第三方庫,這些庫通常以AAR或JAR的形式提供。在本文中,將詳細(xì)介紹如何在Android.mk文件中引用AAR文件。 AAR(Android Archive)文件是Android庫項(xiàng)目的打包格式,它包含了Java類、資源文件、清單文件和可選的本地庫文件。AAR文件是一種方便的方式來

    2024年02月13日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包