@ZeroGeek
2015-09-16T07:53:52.000000Z
字数 1965
阅读 742
每周主题
android
IDE:Android Studio 1.3
操作系统:Ubuntu 14.04 LTS
public class HelloClass {
static {
System.loadLibrary("app"); // module的名字
}
public native String stringFromJNI(); // 声明本地方法
}
/home/zero/Downloads/NDK/app/build/intermediates/classes/debug/
#include <string.h>
#include <jni.h>
jstring Java_com_zero_ndk_JNIClass_HelloClass_stringFromJNI( JNIEnv* env, jobject thiz )
{
#if defined(__arm__)
#if defined(__ARM_ARCH_7A__)
#if defined(__ARM_NEON__)
#if defined(__ARM_PCS_VFP)
#define ABI "armeabi-v7a/NEON (hard-float)"
#else
#define ABI "armeabi-v7a/NEON"
#endif
#else
#if defined(__ARM_PCS_VFP)
#define ABI "armeabi-v7a (hard-float)"
#else
#define ABI "armeabi-v7a"
#endif
#endif
#else
#define ABI "armeabi"
#endif
#elif defined(__i386__)
#define ABI "x86"
#elif defined(__x86_64__)
#define ABI "x86_64"
#elif defined(__mips64) /* mips64el-* toolchain defines __mips__ too */
#define ABI "mips64"
#elif defined(__mips__)
#define ABI "mips"
#elif defined(__aarch64__)
#define ABI "arm64-v8a"
#else
#define ABI "unknown"
#endif
return (*env)->NewStringUTF(env, "Hello from JNI ! Compiled with ABI " ABI ".");
}
ndk.dir=/home/zero/android_zip/android-ndk-r10e
mJNITv = (TextView) findViewById(R.id.ndk_tv);
HelloClass jniFunc = new HelloClass();
mJNITv.setText(jniFunc.stringFromJNI());
defaultConfig {
applicationId "com.zero.ndk"
minSdkVersion 14
targetSdkVersion 22
versionCode 1
versionName "1.0"
ndk { // 注意添加这个配置,不然方法会显示红色,但运行不会报错
}
}
为了使用JNI,专门定义了一套接口例如jstring替代String