Andorid Studio NDK快捷编译配置

2017-09-16  本文已影响20人  ningso

接触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重新编译一下就好了。

原文链接

上一篇下一篇

猜你喜欢

热点阅读