一、eclipse项目迁移到android studio后so文件配置问题

1、

android { ...... task copyNativeLibs(type: Copy) { from fileTree(dir: 'libs' , include: '*/*.so' ) into 'build/native-libs' } tasks.withType(Compile) { compileTask -> compileTask.dependsOn copyNativeLibs } clean.dependsOn 'cleanCopyNativeLibs' tasks.withType(com.android.build.gradle.tasks.PackageApplication) { pkgTask -> pkgTask.jniFolders = new HashSet() pkgTask.jniFolders.add( new File(projectDir, 'build/native-libs' )) println pkgTask.jniFolders } }

1.copyNativeLibs,他的作用就是把dir中的so文件拷贝的主项目(例如app)的build/native-libs目录下;

2.compileTask.dependsOn copyNativeLibs 把1中的task依赖于编译任务,这样每次在编译前,就是把1中的copyNativeLibs方法执行;

3.clean.dependsOn 'cleanCopyNativeLibs'这行脚本容易理解,把clean build/native-libs 依赖于gradlew clean;

4.tasks.withType,在这块脚本中需要注意理解两点:

a.之前我们通过1把我们需要的so文件都拷贝到主项目(app)的build/native-libs中;

b.jniFolders,我的理解是打包时默认的jni文件目录。把默认的jniFolders修改成我们自己指定的目录,即build/native-libs,从而so文件便能够被打入apk中。



有关多module的so文件加载:

多module项目,某个子moudle可能需要jni支持,同样也面临so文件打包问题。

1.直接把所有子module的so文件都拷贝到主项目的libs中;

2.子module中的build.gradle同样包含上述脚本,把build/native-libs修改成主项目的绝对路径;

3.修改copyNativeLibs,这里既然做so文件的拷贝操作,那我直接把子module的dir加入,下面是对应的脚本;

android { ...... task copyNativeLibs(type: Copy) { def libPath = project( ':lib' ).projectDir.absolutePath + '/libs' println libPath from fileTree(dir: 'libs' , include: '*/*.so' ) into 'build/native-libs' from fileTree(dir: libPath, include: '*/*.so' ) into 'build/native-libs' } tasks.withType(Compile) { compileTask -> compileTask.dependsOn copyNativeLibs } clean.dependsOn 'cleanCopyNativeLibs' tasks.withType(com.android.build.gradle.tasks.PackageApplication) { pkgTask -> pkgTask.jniFolders = new HashSet() pkgTask.jniFolders.add( new File(projectDir, 'build/native-libs' )) println pkgTask.jniFolders } }


说明:

a.project(':lib')中的lib是需要jni支持的子module,这里书写子module的具体名称,可以参照setttings.gradle;

b.libPath获取到子moudle下存放so文件的libs绝对目录;

c.多个子module同样方法处理;


二、android studio新建项目so文件配置问题:

1.在“src/main”目录中新建名为“jniLibs”的目录;

2、在“jniLibs”目录中新建名为“armeabi”的目录;

3. 将so文件复制、粘贴到“armeabi”目录内。



更多相关文章

  1. android 文件 修改权限
  2. 使用命令行ls命令的Android文件浏览控件,适合于root过的设备,可以
  3. Android日志服务例子,将日志保存在文件中并每天产生一个日志文件
  4. Android之文件操作
  5. Android SDK目录下的各个文件夹的作用
  6. Android修改文件和文件夹权限
  7. android打开pdf ppt word excel chm html text 文件

随机推荐

  1. Android(安卓)Monkey测试入门-2-ADB安装
  2. Android(安卓)Add外部library工程,总是链
  3. Android(安卓)实现广告欢迎界面(倒计时)
  4. Android线程通信之Handler
  5. android 安全讲座第四层(扩展篇)
  6. Android(安卓)+ HTML开发手机应用 demo
  7. android 仿IOS实现SegmentControl
  8. android中非阻塞socket通信
  9. Android(安卓)Beam 告诉我们未来近距离数
  10. android 下使用GPS 无法获取经纬度的解决