android studio配置ndk開發
網上很多資料都比較舊,我查了一些資料,並且試了一下,總結了一個最簡單的配置ndk開發的方法,步驟如下:
1. 在SDK Tools中勾選安裝CMake、LLDB、NDK
2. 配置External Tools,省去了自己敲命令
引數講解
javah 用於生成標頭檔案
Program:$JDKPath$/bin/javah
Parameters:-d ../jni -jni $FileClass$
Working directory:$SourcepathEntry$\..\java
ndk-build 用於構建so包
注意:MAC/Linux用ndk-build,沒有.cmd字尾
Program:D:\adt\sdk\ndk-bundle\ndk-build.cmd
Parameters:什麼都不用填
Working directory:$ModuleFileDir$\src\main
我的javah配置是
Program:/usr/bin/javah
Parameters:-d ../jni -jni $FileClass$
Working directory:$SourcepathEntry$/../java
我的ndk-build配置是
Program:$ANDROID_HOME/ndk-bundle/ndk-build
Working directory:$ModuleFileDir$/src/main
3. 在工程的local.properties檔案中配置NDK的目錄
ndk.dir=/Users/user/Library/Android/sdk/ndk-bundle
sdk.dir=/Users/user/Library/Android/sdk
4. 建立CMakeLists.txt
#定義cmake支援的最小版本號
cmake_minimum_required(VERSION 3.4.1)
add_library( # 設定生成so庫的檔名稱,例如此處生成的so庫檔名稱應該為:native-lib.so
native-lib
# 設定生成的so庫型別,型別只包含兩種:
# STATIC:靜態庫,為目標檔案的歸檔檔案,在連結其他目標的時候使用
# SHARED:動態庫,會被動態連結,在執行時被載入
SHARED
# 設定原始檔的位置,可以是很多個原始檔,都要新增進來,注意相對位置
src/main/jni/hello.cpp )
# 從系統裡查詢依賴庫,可新增多個
find_library( # 例如查詢系統中的log庫liblog.so
log-lib
# liblog.so庫指定的名稱即為log,如同上面指定生成的libnative-lib.so庫名稱為native-lib一樣
log )
# 配置目標庫的連結,即相互依賴關係
target_link_libraries( # 目標庫(最終生成的庫)
native-lib
# 依賴於log庫,一般情況下,如果依賴的是系統中的庫,需要加 ${} 進行引用,
# 如果是第三方庫,可以直接引用庫名,例如:
# 引用第三方庫libthird.a,引用時直接寫成third;注意,引用時,每一行只能引用一個庫
${log-lib} )
檔案中的native-lib
是我生成的so檔案的名字,src/main/jni/hello.cpp
是我實現的native方法所在的類,注意路徑不要寫錯,我的檔案所在路徑是這樣的
5. 在模組的build.gradle檔案中新增
android {
compileSdkVersion 26
buildToolsVersion "26.0.0"
defaultConfig {
externalNativeBuild {
cmake {
cppFlags ""
}
}
}
externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}
}
6. 建立native方法
package com.test;
public class NativeHelper {
static {
System.loadLibrary("native-lib");
}
public native String stringFromJNI();
}
7. 編寫cpp檔案
#include "stdio.h"
#include "jni.h"
#include "string"
extern "C"
JNIEXPORT jstring JNICALL Java_com_test_NativeHelper_stringFromJNI
(JNIEnv *env,
jobject jobject1){
return env->NewStringUTF("hello world from cpp");
}
然後專案就可以執行了
參考連結:https://www.jianshu.com/p/1e14dcc81c3c
參考連結的文章不太詳細,我改了改,寫了上文
相關文章
- Android Studio NDK開發-環境配置Android
- Android Studio3.0 NDK配置與開發Android
- Android Studio中NDK開發Android
- Mac之Android Studio開發NDK入門MacAndroid
- Android Studio NDK開發-JNI呼叫Java方法AndroidJava
- Andorid Studio NDK開發-使用NDK庫
- Andorid Studio NDK 開發 – NDK 開發利器 gradle-experimentalGradle
- Android Studio NDK:三、打包SOAndroid
- Android Studio配置開發環境Android開發環境
- Ndk 初步開發 In AndroidAndroid
- Android NDK開發(二) 使用ndk-build構建工具進行NDK開發AndroidUI
- Android Studio 已有專案新增NDK支援(mac/ndk-build)AndroidMacUI
- android 開發淺談(JDK && NDK)AndroidJDK
- Andorid Studio NDK 開發 – 編譯 OpenSSL 類庫編譯
- Android Studio NDK:二、JNI 返回JAVA 實體AndroidJava
- Android NDK開發之JNI基礎Android
- Android NDK開發Crash錯誤定位Android
- Android Studio配置Android
- android studio 配置Android
- 【Android Studio】Android Studio 搭建開發環境(Linux Ubuntu篇)Android開發環境LinuxUbuntu
- Android NDK 開發之 CMake 必知必會Android
- android studio 2022配置加速Android
- 老師講的真棒!如何在Android-Studio下進行NDK開發,滿滿乾貨指導Android
- android ndk整合Android
- Android之NDK開發錯誤 error: unknown type name 'JNIEXPORT'AndroidErrorExport
- Android NDK開發之引入第三方庫Android
- NDK學習筆記-NDK開發流程筆記
- Flutter 快捷開發 Mac Android Studio 篇FlutterMacAndroid
- Android Studio NDK :一、基礎入門(基於gradle-experimental外掛)AndroidGradle
- Android NDK初識Android
- Android Studio Gradle 常用配置詳解AndroidGradle
- android studio4.0初次gradle配置AndroidGradle
- Android Studio 2023搭建Flutter開發環境AndroidFlutter開發環境
- IntelliJ IDEA/Android Studio外掛開發指南IntelliJIdeaAndroid
- 一定能成功的Android NDK環境配置教程Android
- NDK開發趟坑之旅
- Android NDK祕籍--初識NDK、JNI、Makefile/CMakeAndroid
- android NDK c++ libraryAndroidC++