android開發(fā)實踐之ndk編譯命令簡單示例
前言
Android提供了NDK工具,用來編譯native代碼(c/c++),該工具配置好了相關(guān)的交叉編譯環(huán)境和工具鏈,只需要你簡單地編寫幾個.mk文件即可將你的c/c++代碼編譯為Android的java工程/Android手機可以識別、加載和運行的庫或者應(yīng)用程序。
默認情況下,使用NDK編譯c/c++代碼,需要將該代碼放置到任一個Android應(yīng)用工程的jni目錄下,然后編寫相應(yīng)的Android.mk文件,并執(zhí)行ndk-build
命令完成編譯。其實你也是可以在任意目錄下去編譯native代碼的,只需要在ndk-build
命令后面添加相應(yīng)的命令行參數(shù)即可,這里給出一些常用的ndk-build
命令行參數(shù),方便大家靈活地使用NDK編譯自己的native代碼,具體的示例我將會在后續(xù)的文章中給出。
ndk-build命令行參數(shù)
1、ndk-build NDK_LOG=1
用于配置LOG級別,打印ndk編譯時的詳細輸出信息
2、ndk-build NDK_PROJECT_PATH=.
指定NDK編譯的代碼路徑為當前目錄,如果不配置,則必須把工程代碼放到Android工程的jni目錄下
3、ndk-build APP_BUILD_SCRIPT=./Android.mk
指定NDK編譯使用的Android.mk文件
4、ndk-build NDK_APPLICATION_MK=./Application.mk
指定NDK編譯使用的application.mk文件
5、ndk-build clean
清除所有編譯出來的臨時文件和目標文件
6、ndk-build -B
強制重新編譯已經(jīng)編譯完成的代碼
7、ndk-build NDK_DEBUG=1
執(zhí)行 debug build
8、ndk-build NDK_DEBUG=0
執(zhí)行 release build
9、ndk-build NDK_OUT=./mydir
指定編譯生成的文件的存放位置
10、ndk-build -C /opt/myTest/
到指定目錄編譯native代碼
例:
編寫 .c 文件
假設(shè)你在 ~/math 目錄下編寫了一個 math.c 文件,內(nèi)容如下:
#include <stdio.h> int add( int a , int b ) { return a+b; }
編寫 Android.mk 文件,內(nèi)容如下:
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := dmath LOCAL_SRC_FILES := math.c include $(BUILD_SHARED_LIBRARY)
在 ~/math 目錄下,執(zhí)行 ndk-build
命令,參數(shù)如下:
$ ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=./Android.mk
或:
ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=./Android.mk NDK_APPLICATION_MK=./Application.mk
NDK_PROJECT_PATH 指定了需要編譯的代碼的工程目錄,這里給出的是當前目錄,APP_BUILD_SCRIPT給出的是Android makefile文件的路徑,當然,如果你還有 Application.mk 文件的話,則可以添加NDK_APP_APPLICATION_MK=./Application.mk
執(zhí)行完ndk-build
命令后,你會發(fā)現(xiàn)當前目錄下,生成了 obj 和 libs 文件夾,這樣,你的libdmath.so動態(tài)庫就已經(jīng)制作完成了,在 libs/armeabi 目錄下。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
- Linux命令行下編譯Android NDK的示例代碼
- Studio 編譯報錯:compileSdkVersion ''android-24'' requires JDK 1.8 or later to compile.的解決辦法
- Ubantu16.04進行Android 8.0源碼編譯的流程
- Android Studio中通過CMake使用NDK并編譯自定義庫和添加預(yù)編譯庫
- Android反編譯程序整理詳解
- 完美解決Android Studio集成crashlytics后無法編譯的問題
- Android應(yīng)用程序(APK)的編譯打包過程
- 下載、編譯、運行android 7.1系統(tǒng)詳解(ubuntu 16.0.4)
- Gradle編譯打包Android apk詳細介紹
- Android編譯的注意事項
相關(guān)文章
Android pdf viewer在android studio應(yīng)用問題說明詳解
這篇文章主要介紹了Android pdf viewer在android studio應(yīng)用問題說明的相關(guān)資料,本文介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下2016-09-09Android RecyclerView添加頭部和底部的方法
這篇文章主要為大家詳細介紹了Android RecyclerView添加頭部和底部的方法,感興趣的小伙伴們可以參考一下2016-05-05Android開發(fā)服務(wù)Service全面講解
Android的服務(wù)是開發(fā)Android應(yīng)用程序的重要組成部分。不同于活動Activity,服務(wù)是在后臺運行,服務(wù)沒有接口,生命周期也與活動Activity非常不同。通過使用服務(wù)我們可以實現(xiàn)一些后臺操作,比如想從遠程服務(wù)器加載一個網(wǎng)頁等,下面來看看詳細內(nèi)容,需要的朋友可以參考下2023-02-02Android基于hover組件實現(xiàn)監(jiān)控鼠標移動事件的方法
這篇文章主要介紹了Android基于hover組件實現(xiàn)監(jiān)控鼠標移動事件的方法,結(jié)合實例形式分析了hover組件監(jiān)控鼠標光標在view上變化的操作技巧,需要的朋友可以參考下2017-02-02Android使用socket創(chuàng)建簡單TCP連接的方法
這篇文章主要介紹了Android使用socket創(chuàng)建簡單TCP連接的方法,結(jié)合實例形式詳細分析了Android使用socket創(chuàng)建TCP連接的具體步驟與實現(xiàn)技巧,需要的朋友可以參考下2016-04-04Android開發(fā)Input系統(tǒng)觸摸事件分發(fā)
這篇文章主要為大家介紹了Android開發(fā)Input系統(tǒng)觸摸事件分發(fā)示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-03-03