美文网首页
Andorid Studio NDK快捷编译配置

Andorid Studio NDK快捷编译配置

作者: ningso | 来源:发表于2017-09-16 12:38 被阅读20次

    接触Jni的时候,最繁琐的就是去生成.h头文件,以前很笨的方法就是通过javah工具生成.h头文件,还要各种指定路径等繁琐操作,写着写着就有点烦人。现在介绍一种更快捷的方式,通过配置快捷键的形式一劳永逸。


    快捷配置效果预览

    enter image description here
    enter image description hereenter image description here

    javah

    ndk javahndk javah
    javah
    Program:$JDKPath$/bin/javah
    Parameters:-encoding UTF-8 -d ../jni -jni $FileClass$
    Working directory:$ModuleFileDir$/src/main/java
    

    ndk-build

    enter image description hereenter image description here
    ndk-build
    Program:/Users/Liam/Library/Android/sdk/ndk-bundle/build/ndk-build
    Parameters:
    Working directory:$ModuleFileDir$/src/main
    

    ndk-build clean

    ndk build cleanndk build clean
    ndk-build clean
    Program:/Users/Liam/Library/Android/sdk/ndk-bundle/build/ndk-build
    Parameters:clean
    Working directory:$ModuleFileDir$/src/main
    

    NDK开发常见的一些错误:

    Error 1

    UnsatisfiedLinkError: No implementation found for int com.liam.nativeplugin.nativeutils.SymLink.createSymLinkJNI(java.lang.String, java.lang.String) 
    (tried Java_com_liam_nativeplugin_nativeutils_SymLink_createSymLinkJNI and Java_com_liam_nativeplugin_nativeutils_SymLink_createSymLinkJNI__Ljava_lang_String_2Ljava_lang_String_2)
    

    这是刚接触的时候最会遇到的错误类型了,意思就是会所,.c文件定义的JNI接口类型是Java_com_liam_nativeplugin_nativeutils_SymLink_createSymLinkJNI 即包名必须为com.liam.nativeplugin.nativeutils,类名为必须为SymLink
    也就是说,我们.so中函数声明涉及到的package name和class name与调用它的package name和class name不符。因此我们要改变我们工程中的package name和class name。使其与.so文件中函数签名提示的一致,在这个类中加入native方法的声明。
    知道了这个规则,那么错误解决方案自然也就懂了。修改正确的package name和class name重新编译一下就好了。

    原文链接

    相关文章

      网友评论

          本文标题:Andorid Studio NDK快捷编译配置

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