摘要:注意,一個文件可能被構建系統分析多遍,所以不要假設某個變量沒有被定義。有個函數可以做到這個功能這將會包含當前構建路徑的所有子路徑下的文件們。組件它是個很小的腳本在目錄下,用于構建庫。
Android.mk
Android.mk把你的源碼組織成“模塊”(靜態庫/動態庫)。默認情況會讀取project/jni/Android.mk,并會讀取project/jni/Application.mk作為可選選項。
你可以在單個Android.mk文件中定義多個模塊,或者你可以書寫多個Android.mk文件,每個文件定義一個單一模塊。
如果你想在子目錄中定義Android.mk文件 include $(call all-subdir-makefiles)。
注意,一個Android.mk文件可能被構建系統分析多遍,所以不要假設某個變量沒有被定義。默認下,NDK將尋找下面的構建腳本:
$PROJECT/jni/Android.mk
如果你想在子路徑下定義Android.mk文件,你應該在頂層的Android.mk中包含它們。有個函數可以做到這個功能:
include$(call all-subdir-makefiles)
這將會包含當前構建路徑的所有子路徑下的Android.mk文件們。
Application.mk這個文件主要包含:
你的應用所需要模塊的準確列表。
產生的機器碼所對應的CPU架構。
可選的信息,像你要構建release還是debug,特殊的C或 C++編譯參數以及其它需要應用到所有模塊的構建選項。
這個文件是可選的:默認情況下,NDK將構建在Android.mk中列出的所有模塊的并且默認面向CPUABI (armeabi).
將它放在$PROJECT/jni/Application.mk位置,那么它會被’ndk-build’腳本自動使用。
Application.mk它描述哪個原聲模塊是我的應用程序所需要的。例如描述添加STL的支持APP_STL := stlport_static。
它部分的變量:
APP_PROJECT_PATH # 應用程序工程根目錄的絕對路徑 APP_MODULES # 應用程序工程用到的模塊 APP_OPTIM # 優化級別release或者debug APP_CFLAGS # C編譯器開關集合 APP_CPPFLAGS # C++編譯器開關集合 APP_BUILD_SCRIPT # NDK構建系統腳本即Android.mk位置 APP_ABI := armeabi armeabi-v7a # 為了支持基于ARMv5TE和ARMv7設備的軟件浮點單元指令 APP_STL := system # 默認的C++運行時庫 APP_STL := stlport_shared # 動態STLport庫 APP_STL := stlport_static # 靜態STLport庫
這里的APP_OPTIM := debug和ndk-build NDK_DEBUG=1是等效的,
APP_OPTIM := release和NDK_DEBUG=0是等效的。
它是個很小的腳本在目錄NDK_ROOT/ndk-build下,用于構建NDK庫。用法很簡單
cd/ndk-build # 如果將ndk_root配置到環境變量就直接使用ndk-build
它將中間文件生成到obj/下,目標文件生成到libs/下。
ndk-build # 編譯 ndk-build clean # 清掉二進制文件 ndk-build NDK_DEBUG=1 # 編譯為可調試版的二進制文件 ndk-build NDK_DEBUG=0 # 編譯為release版 ndk-build V=1 # 執行ndk-build且打印出它所執行的詳細編譯命令。 ndk-build -B # 強制重新編譯 ndk-build -B V=1 # -B 和 V=1 的組合 ndk-build NDK_LOG=1 # 打印出內部的NDK日志信息(用于調試NDK自己) ndk-build NDK_APP_APPLICATION_MK=<文件路徑> # 用這里指定的路徑尋找Application.mk文件 ndk-build -Cndk-gdb組件# 先cd進入 ,然后執行ndk-build
使用NDK/ndk-gdb啟用native調試(ndk-build時要家參數NDK_DEBUG=1)
ndk-build NDK_DEBUG=1 # 帶調試信息編譯 ant debug && adb install -r bin/xxx.apk # 打包和安裝 ndk-gdb --start # 啟動調試信息附: 使用命令行創建項目
SDK根目錄下執行 tools/android list targets
執行創建命令:
android create project --target使用ant命令行打包--name MyFirstApp --path /MyFirstApp --activity MyActivity --package com.example.myfirstapp # 為第一步里展示的。
首先確保安裝了ANT到環境,加入ANT_ROOT/bin到環境變量
android update project --name--target --path # 這樣就會產生build.xml, local.properties兩文件。 # 如果添加了第三方包,需要添加--subprojects參數 ant debug # 打包一個測試apk 默認使用debug key簽名 ant release # 生成一個未簽名和未aligned的apk(工程添加簽名規則后會生成已簽名apk) adb install -r ./bin/XXX.apk # adb 安裝
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/65424.html
閱讀 1887·2021-09-27 13:35
閱讀 3434·2019-08-30 14:16
閱讀 2489·2019-08-30 10:52
閱讀 869·2019-08-29 16:35
閱讀 1422·2019-08-29 15:22
閱讀 3649·2019-08-23 18:21
閱讀 3140·2019-08-23 18:00
閱讀 3128·2019-08-23 16:50