美文网首页
Android Studio NDK初步开发总结

Android Studio NDK初步开发总结

作者: 聪聪的豆芽 | 来源:发表于2016-08-31 19:44 被阅读77次

    参考:
    http://yanbober.github.io/2015/02/14/android_studio_jni_1/
    http://billhoo.blog.51cto.com/2337751/1125559

    1、在local.properties文件中加入NDK路径,如:

    ndk.dir=E\:\\as_ndk\\android-ndk-r11b
    

    2、在gradle.properties加入:

    android.useDeprecatedNdk=true
    

    3、新建NdkJniUtils:

    public class NdkJniUtils {
        public native String stringIv();
        static {
            System.loadLibrary("MyTest");    //defaultConfig.ndk.moduleName
        }
    }
    

    4、在stringIv这个地方按“ALT+Enter”(eclipse 快捷键),出现

    xx

    后回车,会发现在main下多了jni目录和一个“MyTest.c”(与so文件名相同)文件。
    当然,也可以右键main选择建立jni目录,


    jni目录

    然后在jni下建立建立MyTest.c文件:


    C

    并在C文件中加入“#include <jni.h>”

    5、在app gradle中的defaultConfig节点中加入:

    defaultConfig {
        ...
        ndk {
            moduleName = "MyTest"
            abiFilters "armeabi"
        }
    }
    

    其中JniTest为.so文件的名字,abiFilters "armeabi"指的是在lib下会建立armeabi文件,设置支持的 SO 库构架,加多个的话:

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

    这样的话就会在指定的库架构生成.so文件。
    库结构参考

    6、然后点击


    重构gradle

    完成后发现.c文件中的#include <jni.h>的jni.h为红色即可。

    7、再在NdkJniUtils 中stringIv这个地方按“ALT+Enter”(eclipse 快捷键),出现

    xx

    后回车,然后在.c文件中就出现了这些代码:

    JNIEXPORT jstringJNICALL
    Java_com_ccddy_jnitest_NdkJniUtils_stringIv(JNIEnv
    *env,
    jobject instance
    )
    {
    // TODO
    return (*env)->
    NewStringUTF(env, returnValue
    );
    }
    

    8、把上面的代码改成这样:

    #include <jni.h>
    #include <string.h>
    
    jstring
    Java_com_ccddy_jnitest_NdkJniUtils_stringIv(JNIEnv
    *env,
    jobject instance
    )
    {
    // TODO
    return (*env)->
    NewStringUTF(env, "返回值"
    );
    }
    

    9、运行apk,打印NdkJniUtils的stringIv方法的返回值即为“返回值”。

    注意:如果ALT+ENTER无效,则可以使用gradle Sync Now导致gradle重建即可。

    相关文章

      网友评论

          本文标题:Android Studio NDK初步开发总结

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