Android Studio搭建NDK

记录用Android Studio创建NDK工程的步骤

创建APP工程.除了Acticity之外,添加一个NDK class

public class JniLib {

    static {
        System.loadLibrary("JniLib");
    }

    public static native String getNativeText();
}

通过以下命令生成jni的头文件

javah -d jni -classpath ~/Downloads/tool/sdk/platforms/android-19/android.jar:../../build/intermediates/classes/debug com.example.fredwang.jnitest.JniLib

头文件com_example_fredwang_jnitest_JniLib.h内容如下所示

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_example_fredwang_jnitest_JniLib */

#ifndef _Included_com_example_fredwang_jnitest_JniLib
#define _Included_com_example_fredwang_jnitest_JniLib
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_example_fredwang_jnitest_JniLib
 * Method:    getNativeText
 * Signature: ()Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_com_example_fredwang_jnitest_JniLib_getNativeText
  (JNIEnv *, jclass);

#ifdef __cplusplus
}
#endif
#endif

根据头文件创建对应实现的C文件JniLib.c

#include "com_example_fredwang_jnitest_JniLib.h"

//
// Created by fredwang on 16-6-8.
//

JNIEXPORT jstring JNICALL Java_com_example_fredwang_jnitest_JniLib_getNativeText
  (JNIEnv *env, jclass obj)
  {
      return (*env) ->NewStringUTF(env, "This is JNI test!");
  }

配置build.gradle

defaultConfig {
    applicationId "com.example.fredwang.jnitest"
    minSdkVersion 21
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
    ndk {
        moduleName "JniLib"
    }
}

配置local.properties

ndk.dir=/home/fredwang/Downloads/tool/NDK/android-ndk-r11b

最后在Activity中使用JNI

public class MainActivity extends AppCompatActivity {

    TextView textView;

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

        textView = (TextView)findViewById(R.id.textview);

        textView.setText(JniLib.getNativeText());
    }
}

通过build->make moudle编译即可运行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值