AndroidStudio JNI
2128 ワード
1、インタフェースファイルの作成
2、build工程はclassファイルを生成し、classファイルディレクトリにナビゲートする
コマンドライン:
javah -jni com.test.ndk.JniInterface
comを生成する.test.ndk.JniInterface.hヘッダファイル、src/main/jniディレクトリにコピー
3、コピーhヘッダファイル、名前を変更します.c
4、build/make projectでsoファイルを生成できる
ps:生成されたsoファイル名を変更する
build.gradleで
5、使用
PS:
ndk-buildコマンド
ロゴを印刷
build.gradleで
参照先:
http://ph0b.com/android-studio-gradle-and-ndk-integration/
public class JniInterface {
native public String getStringFromJni();
}
2、build工程はclassファイルを生成し、classファイルディレクトリにナビゲートする
コマンドライン:
javah -jni com.test.ndk.JniInterface
comを生成する.test.ndk.JniInterface.hヘッダファイル、src/main/jniディレクトリにコピー
3、コピーhヘッダファイル、名前を変更します.c
/* DO NOT EDIT THIS FILE - it is machine generated */
#include "com_test_ndk_JniInterface.h"
/*
* Class: com_test_ndk_JniInterface
* Method: getStringFromJni
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_com_test_ndk_JniInterface_getStringFromJni
(JNIEnv * env,jobject obj)
{
return (*env)->NewStringUTF(env,"Hello From JNI22");
}
4、build/make projectでsoファイルを生成できる
ps:生成されたsoファイル名を変更する
build.gradleで
defaultConfig {
applicationId "com.test.ndk"
minSdkVersion 14
targetSdkVersion 23
versionCode 1
versionName "1.0"
ndk{
moduleName "myLib"
}
}
5、使用
static {
System.loadLibrary("myLib");
}
PS:
ndk-buildコマンド
cd /Users/user/AndroidStudioProjects/TestNDK/app/src/main/jni
jni user$ ndk-build
[armeabi] Compile thumb : myLib <= com_test_ndk_JniInterface.c
[armeabi] SharedLibrary : libmyLib.so
[armeabi] Install : libmyLib.so => libs/armeabi/libmyLib.so
ロゴを印刷
build.gradleで
ndk{
moduleName "myLib"
ldLibs "log","z","m"
abiFilters "armeabi","armeabi-v7a","x86"
}
.cファイル中#include <android/log.h>
#define LOG_TAG "TestNDK"
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)
LOGD("%s","hahah");
参照先:
http://ph0b.com/android-studio-gradle-and-ndk-integration/