Android Studio + NDK 之 Hello Word

  1. 新建工程,包名随意,本例为com.test
  2. 在com.test下新建

    package com.test;
    
    /** * Created by Shen on 2015/9/23. */
    public class NDKUtil {
    
        public native String getHelloWord();
    }
    
  3. 点击build生成class文件
    这里写图片描述

  4. 使用cmd进入到app\build\intermediates\classes\debug目录

  5. 输入javah -jni com.test.NDKUtil回车
    Android Studio + NDK 之 Hello Word_第1张图片

  6. 将会在此目录下生成一个.h文件
    这里写图片描述

  7. 在工程的src\main\下新建jni文件夹
    Android Studio + NDK 之 Hello Word_第2张图片

  8. 将刚才生成的com_test_NDKUtil.h文件复制到此目录下

  9. 在此目录新建.c文件,文件名随意,这里取名test.c

    /** * 将刚才生成的文件include进来 */
    
    #include "com_test_NDKUtil.h"
    
    /* * Class: com_test_NDKUtil * Method: getHelloWord * Signature: ()Ljava/lang/String; */
    JNIEXPORT jstring JNICALL Java_com_test_NDKUtil_getHelloWord
            (JNIEnv *env, jobject obj){
        return (*env)->NewStringUTF(env,"Hello Word NDK");
    }
  10. 设置项目ndk路径,在local.properties下添加ndk.dir=D:\android-ndk-r10e

  11. gradle.properties中添加ndroid.useDeprecatedNdk=true
  12. 修改app目录下的build.gradle,添加

    defaultConfig {
            applicationId "com.test"
            minSdkVersion 15
            targetSdkVersion 23
            versionCode 1
            versionName "1.0"
            //在这里添加
            ndk{
                moduleName "test" //希望生成的.so名字,随意填写
                abiFilters "armeabi", "armeabi-v7a", "x86" //如果不写,将会生成所有 mips,x86_64等等
            }
        }
  13. 修改NDKUtil文件,添加如下代码

    package com.example.shen.myapplication;
    
    /** * Created by Shen on 2015/9/23. */
    public class NDKUtil {
    
        public native String getHelloWord();
    
        //加载so
        static {
            System.loadLibrary("test"); //这个名字就是上面那个.so的名字
        }
    }
  14. 完成以上操作,就可以使用了,在MainActivity中

    NDKUtil util = new NDKUtil();
    ((TextView)(findViewById(R.id.hello))).setText(util.getHelloWord());

你可能感兴趣的:(android,android,NDK,Studio)