android调用jni方法生成的so库函数的过程
以及发生的异常解决方法
总步骤1、安装NDK
总步骤2、安装cygdrive
总步骤3、写好java文件中本地函数的声明以及调用so文件的文件名
3.1由于so库名写错导致异常
can't load transform_config.xml
Exception Ljava/lang/UnsatisfiedLinkerror; thrown while initializing Lom/example/sqlite_test/JniCall;
遇到这个异常,很可能是因为你的
static
{
System.loadLibrary("SQLite_test");
}
代码中的so文件名字写错了。因为在ndk-build命令执行之后会生成一个<lib+项目命+.so>的文件,之前误以为这里需要写全名而吃了亏,折腾了一个小时才发现,需要去掉lib和后缀。否则会找不到库中函数,导致无法链接。
总步骤4、使用javah.exe生成头文件
总步骤5、用C编写对应的.c文件和mk文件
总步骤6、在cygdrive下使用ndk-build命令生成so文件
总步骤7、运行android程序