1、在本项目中使用本项目生成的so文件
1、小知识:
1)、as库的默认位置:
在app/build/intermediates/ndk/debug/lib
2)、ndk的功能是生成so库,在项目中有底层c代码的时候能够提供jni的环境,使用已经生成的so库已经不需要ndk的环境,此时可以将ndk的相关设置都删掉。
例如:可以删除ndk环境,删除清单文件中的下列ndk配置代码
ndk{
moduleName "hello"
}
2、在本项目中使用so文件必要条件(libs和jniLibs中要有so文件)
1)、jniLibs的设置
在app下面的gradle里面设置以下内容
sourceSets{
main {
jniLibs.srcDirs = ['libs']
}
}
syn 生成了jniLib文件
2)、将上面生成的so文件复制到项目libs(app下的libs)中
复制之后的目录结构如下:
注意查看下jniLibs目录下是否有so文件,没有的情况下需要复制进去
3)、操作基本上就完成了,编译运行吧
下面是运行效果:
demo:http://download.csdn.net/detail/u012391876/9598666
2、在新建项目中使用之前的so库
由于so库生成的时候是以很多固定信息通过ndk编译的,这里需要原项目中的native所在类以及所在包文件夹拷贝下来。
其余的没上面区别,将native所在类导入它原本的包路径下就可以了,之后,只需要配置jniLibs 和libs 就可以了。
对android studio的jni的使用大概先到这里了。
目前仍然存在的问题,在eclipse下面时,能够有下面的使用场景:
在jni 底层代码中使用so
各种百度 google之下,各种配置尝试之后,并没有找到在android studio jni下这种情况的解决。
实在找不到解决方案的条件下的解决方案:
直接使用了eclipse中生成的so库,按照上列方法做native的复制,以及jniLibs与libs的配置,然后就能够正常使用了。