您的位置:首页 > 移动开发 > Android开发

mac下 JNI-Hello world

2016-05-05 00:38 363 查看

新建android工程

文件目录如下



native接口和System.loadLibrary()

package cn.laura.laurajni;

/**
* JNI文件
* User: ZhiyaZhao(zhiyazhao@126.com)
* Date: 2016-05-04
* parma: 23:20
* FIXME
*/
public class NdkJniUtils {
public native String getCLanguageString();

static {
System.loadLibrary("LauraJNI");   //defaultConfig.ndk.moduleName
}
}


Activity中调运JNI

package cn.laura.laurajni;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends Activity {

private TextView mTextView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

mTextView = (TextView) findViewById(R.id.tv_helloworld);

NdkJniUtils jni = new NdkJniUtils();

mTextView.setText(jni.getCLanguageString());

}
}


生成对应的 .h头文件

后build project得到其中中间文件,我们关注的是.class文件。
编译OK以后生成的class文件在AS工程的如下目录
 app_path/build/intermediates/classes/debug






创建名为jni的目录并复制.h文件



在工程的main目录下新建一个名字为jni的目录,然后将刚才的 .h文件剪切过来。在jni目录下新建一个c文件,随意取名,我的叫jnitest.c 。然后编辑代码如下

#include "cn_laura_laurajni_NdkJniUtils.h"

JNIEXPORT jstring JNICALL Java_cn_laura_laurajni_NdkJniUtils_getCLanguageString
(JNIEnv *env, jobject obj){

return (*env)->NewStringUTF(env,"Hello world! Laura~");
}


配置build.gradle

接下来在app module目录下的build.gradle中设置库文件名(生成的so文件名)。找到gradle文件的defaultConfig这项,在里面添加如下内容:

apply plugin: 'com.android.application'

android {
compileSdkVersion 23
buildToolsVersion "23.0.3"

defaultConfig {
applicationId "cn.laura.laurajni"
minSdkVersion 14
targetSdkVersion 23
versionCode 1
versionName "1.0"

ndk{
moduleName "LauraJNI"         //生成的so名字
abiFilters "armeabi", "armeabi-v7a", "x86"  //输出指定三种abi体系结构下的so库。目前可有可无。
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.3.0'
}

运行效果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  JNI android studio MAC