Android NDK编程

来源:互联网 发布:c语言打印双层金字塔 编辑:程序博客网 时间:2024/04/29 18:12

Android Studio 下 NDK 编程

参考:http://www.jianshu.com/p/e689d0196a17

第一步
配置 NDK 路径
File->Project Structure->SDK Locationl 里面添加路径

Android NDK location should not contain whitespace, as this can cause problems with the NDK tools.
Android NDK 的位置不应包含空格,因为这可能会导致与 NDK 工具问题。

第二步
gradle.properties 配置

android.useDeprecatedNdk=true

第三步
工程内的 build.gradle 添加 ndk 配置

    defaultConfig {        applicationId "test.com.asproject"        minSdkVersion 16        targetSdkVersion 23        versionCode 1        versionName "1.0"        ndk {            moduleName "JniTest"            ldLibs "log", "z", "m"            abiFilters "armeabi", "armeabi-v7a", "x86"        }    }

第四步
新建一个JNI调用类

package com.test.jni;public class JNIUse {    static {        System.loadLibrary("JniTest");//与第三步的NDK模块命名要一致    }    public static native String getStringFromNative();}

第五步
main目录下新建一个名为JNI的文件夹(这一步如果没有,不能自动生成.c)

getStringFromNative()会提示
Create function Java_com_test_jni_JNIUse_getStringFromNative
根据系统提示自动创建生成 JniTest.c

#include <jni.h>JNIEXPORT jstring JNICALLJava_com_test_jni_JNIUse_getStringFromNative(JNIEnv *env, jclass type) {    //TODO     return (*env)->NewStringUTF(env, "Seselin Test JNI");}

第六步
Rebuild project
build/intermediates目录下会生成ndk文件夹,里面包含.so

第七步
在主工程里调用你的NDK方法

附录
以上为自己新建 .so 的过程
调用已有 .so 时只要把.so 放在 lib 文件下(具体步骤见: Android下的.so库使用)
同时在工程的 build.gradle 内

android {    。。。    sourceSets {        main {        。。。        jniLibs.srcDirs = ['libs']        }    。。。}
0 0
原创粉丝点击