安装和简单使用NDK

作者: i冰点 | 来源:发表于2016-07-31 22:08 被阅读73次

    1、什么是NDK?

    JNI是为了方便Java调用C、C++等本地代码而封装的一层接口。NDK是一个工具集合,调用NDK可以很方便的使用JNI。

    2、在Android Studio中配置

        1、下载NDK:https://developer.android.com/ndk/downloads/index.html

        2、配置PATH=F:\li_yi\tools\Android\android-ndk-r12b

        3、在AS中关联NDK,ndk.dir=F:\li_yi\tools\Android\android-ndk-r12b

    3、NDK开发

    1、新建一个类,增加native方法:

        public class NDKTest {

            public native String getTestStr();

        }

    2、得到.h文件

        2.1、执行build---make project,会得到一个class文件

         (在XXX\app\build\intermediates\classes\debug\com\liyi\jnitest目录下)。

        2.2、点开AS的Terminal标签,

            进入到XXX\app\build\intermediates\classes\debug目录下(cd 命令),

            执行javah命令生成h文件:

                javah -jni com.liyi.jnitest.NDKTest

        2.3、在main目录下新建一个jni目录,剪切该文件到改目录下。

        .h文件:

        #include"com_liyi_jnitest_NDKTest.h"

        JNIEXPORT jstring JNICALL Java_com_liyi_jnitest_NDKTest_getTestStr

        (JNIEnv *env,jobject obj){

        return(*env)->NewStringUTF(env,

            "Java_com_liyi_jnitest_NDKTest_getTestStr!");

        }

    3、新建一个c文件,实现在DNKTest中定义的native方法

        #include "com_liyi_jnitest_NDKTest.h"

        JNIEXPORT jstring JNICALL Java_com_liyi_jnitest_NDKTest_getTestStr

        (JNIEnv *env, jobject obj){

        return (*env)->NewStringUTF(env,

            "Java_com_liyi_jnitest_NDKTest_getTestStr!");

        }

    4、在app module目录下的build.gradle中设置库文件名(生成的so文件名)

        defaultConfig {

        ......

        ndk{

        moduleName "NDKTest"        //生成的so名字

        //输出指定三种abi体系结构下的so库。目前可有可无。

        abiFilters "armeabi", "armeabi-v7a", "x86"  

        }

    5、在NDKTest中,静态初始化load代码,

        static {

            System.loadLibrary("NativeExample"); 

        }

    6、打开Project的gradle.properties文件,添加

            android.useDeprecatedNdk=true

    7、同步操作:

        Tools->Android->Sync Project with Gradle Files

    8、生成SO文件:Build->Rebuild Project

        在项目的app\build\intermediates\ndk\debug\lib路径下生成SO文件

    9、使用生成SO文件:

        在jnitest\src\main下新建文件夹jniLibs,并将生成的SO文件拷贝到该文件夹下。

    代码:

    http://download.csdn.net/detail/le_shuo/9591352

    参考:

    http://blog.csdn.net/krubo1/article/details/50547681

    http://blog.csdn.net/yanbober/article/details/45309049/

    相关文章

      网友评论

        本文标题:安装和简单使用NDK

        本文链接:https://www.haomeiwen.com/subject/kukxsttx.html