成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

NDK構(gòu)建

G9YH / 2158人閱讀

摘要:注意,一個(gè)文件可能被構(gòu)建系統(tǒng)分析多遍,所以不要假設(shè)某個(gè)變量沒有被定義。有個(gè)函數(shù)可以做到這個(gè)功能這將會包含當(dāng)前構(gòu)建路徑的所有子路徑下的文件們。組件它是個(gè)很小的腳本在目錄下,用于構(gòu)建庫。

Android.mk

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

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

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

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

$PROJECT/jni/Android.mk

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

include$(call all-subdir-makefiles)

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

Application.mk

這個(gè)文件主要包含:

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

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

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

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

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

Application.mk

它描述哪個(gè)原聲模塊是我的應(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è)備的軟件浮點(diǎn)單元指令
APP_STL := system            # 默認(rèn)的C++運(yùn)行時(shí)庫
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組件

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

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

它將中間文件生成到obj/下,目標(biāo)文件生成到libs/下。

ndk-build              # 編譯
ndk-build clean        # 清掉二進(jìn)制文件
ndk-build NDK_DEBUG=1  # 編譯為可調(diào)試版的二進(jìn)制文件
ndk-build NDK_DEBUG=0  # 編譯為release版
ndk-build V=1          # 執(zhí)行ndk-build且打印出它所執(zhí)行的詳細(xì)編譯命令。
ndk-build -B           # 強(qiáng)制重新編譯
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   # 先cd進(jìn)入,然后執(zhí)行ndk-build
ndk-gdb組件

使用NDK/ndk-gdb啟用native調(diào)試(ndk-build時(shí)要家參數(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)建項(xiàng)目

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

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

android create project --target  --name MyFirstApp --path /MyFirstApp --activity MyActivity --package com.example.myfirstapp
# 為第一步里展示的。
使用ant命令行打包

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

android update project --name  --target  --path 
# 這樣就會產(chǎn)生build.xml, local.properties兩文件。
# 如果添加了第三方包,需要添加--subprojects參數(shù)

ant debug # 打包一個(gè)測試apk  默認(rèn)使用debug key簽名
ant release # 生成一個(gè)未簽名和未aligned的apk(工程添加簽名規(guī)則后會生成已簽名apk)

adb install -r ./bin/XXX.apk  # adb 安裝

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/65424.html

相關(guān)文章

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<