日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NDK构建

發(fā)布時間:2025/5/22 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NDK构建 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Android.mk

Android.mk把你的源碼組織成“模塊”(靜態(tài)庫/動態(tài)庫)。默認情況會讀取project/jni/Android.mk,并會讀取project/jni/Application.mk作為可選選項。

你可以在單個Android.mk文件中定義多個模塊,或者你可以書寫多個Android.mk文件,每個文件定義一個單一模塊。

如果你想在子目錄中定義Android.mk文件 include $(call all-subdir-makefiles)。

注意,一個Android.mk文件可能被構(gòu)建系統(tǒng)分析多遍,所以不要假設(shè)某個變量沒有被定義。默認下,NDK將尋找下面的構(gòu)建腳本:

$PROJECT/jni/Android.mk

如果你想在子路徑下定義Android.mk文件,你應(yīng)該在頂層的Android.mk中包含它們。有個函數(shù)可以做到這個功能:

include$(call all-subdir-makefiles)

這將會包含當前構(gòu)建路徑的所有子路徑下的Android.mk文件們。

Application.mk

這個文件主要包含:

  • 你的應(yīng)用所需要模塊的準確列表。

  • 產(chǎn)生的機器碼所對應(yīng)的CPU架構(gòu)。

  • 可選的信息,像你要構(gòu)建release還是debug,特殊的C或 C++編譯參數(shù)以及其它需要應(yīng)用到所有模塊的構(gòu)建選項。

這個文件是可選的:默認情況下,NDK將構(gòu)建在Android.mk中列出的所有模塊的并且默認面向CPUABI (armeabi).

將它放在$PROJECT/jni/Application.mk位置,那么它會被’ndk-build’腳本自動使用。

Application.mk

它描述哪個原聲模塊是我的應(yīng)用程序所需要的。例如描述添加STL的支持APP_STL := stlport_static。

它部分的變量:

APP_PROJECT_PATH # 應(yīng)用程序工程根目錄的絕對路徑 APP_MODULES # 應(yīng)用程序工程用到的模塊 APP_OPTIM # 優(yōu)化級別release或者debug APP_CFLAGS # C編譯器開關(guān)集合 APP_CPPFLAGS # C++編譯器開關(guān)集合 APP_BUILD_SCRIPT # NDK構(gòu)建系統(tǒng)腳本即Android.mk位置 APP_ABI := armeabi armeabi-v7a # 為了支持基于ARMv5TE和ARMv7設(shè)備的軟件浮點單元指令 APP_STL := system # 默認的C++運行時庫 APP_STL := stlport_shared # 動態(tài)STLport庫 APP_STL := stlport_static # 靜態(tài)STLport庫

這里的APP_OPTIM := debug和ndk-build NDK_DEBUG=1是等效的,
APP_OPTIM := release和NDK_DEBUG=0是等效的。

ndk-build組件

它是個很小的腳本在目錄NDK_ROOT/ndk-build下,用于構(gòu)建NDK庫。用法很簡單

cd <project> <ndk_root>/ndk-build # 如果將ndk_root配置到環(huán)境變量就直接使用ndk-build

它將中間文件生成到obj/下,目標文件生成到libs/下。

ndk-build # 編譯 ndk-build clean # 清掉二進制文件 ndk-build NDK_DEBUG=1 # 編譯為可調(diào)試版的二進制文件 ndk-build NDK_DEBUG=0 # 編譯為release版 ndk-build V=1 # 執(zhí)行ndk-build且打印出它所執(zhí)行的詳細編譯命令。 ndk-build -B # 強制重新編譯 ndk-build -B V=1 # -B 和 V=1 的組合 ndk-build NDK_LOG=1 # 打印出內(nèi)部的NDK日志信息(用于調(diào)試NDK自己) ndk-build NDK_APP_APPLICATION_MK=<文件路徑> # 用這里指定的路徑尋找Application.mk文件 ndk-build -C <project路徑> # 先cd進入<project路徑>,然后執(zhí)行ndk-build

ndk-gdb組件

使用NDK/ndk-gdb啟用native調(diào)試(ndk-build時要家參數(shù)NDK_DEBUG=1)

ndk-build NDK_DEBUG=1 # 帶調(diào)試信息編譯 ant debug && adb install -r bin/xxx.apk # 打包和安裝 ndk-gdb --start # 啟動調(diào)試信息

附:

使用命令行創(chuàng)建項目

  • SDK根目錄下執(zhí)行 tools/android list targets

  • 執(zhí)行創(chuàng)建命令:

  • android create project --target <target-id> --name MyFirstApp --path <path-to-workspace>/MyFirstApp --activity MyActivity --package com.example.myfirstapp # <target-id>為第一步里展示的。

    使用ant命令行打包

    首先確保安裝了ANT到環(huán)境,加入ANT_ROOT/bin到環(huán)境變量

    android update project --name <project name> --target <target_id> --path <path_for_project> # 這樣就會產(chǎn)生build.xml, local.properties兩文件。 # 如果添加了第三方包,需要添加--subprojects參數(shù)ant debug # 打包一個測試apk 默認使用debug key簽名 ant release # 生成一個未簽名和未aligned的apk(工程添加簽名規(guī)則后會生成已簽名apk)adb install -r ./bin/XXX.apk # adb 安裝

    總結(jié)

    以上是生活随笔為你收集整理的NDK构建的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。