Android Jni开发之Android Studio中使用Android.mk
2016-04-13 20:13
453 查看
最近将以前的eclipse项目迁移到android studio上,开发的程序动态库的部分比较复杂,能不能直接在studio编译原来的jni呢?答案是肯定的,只需要配置一下就可以了。
第一步,设置当前的ndk路径
第二步,将eclipse工程中的jni目录拷贝到src/main目录下;
第三步,在build.gradle的android中加入一下代码,
第四步,在build.gradle中加入一下代码,
加入这些任务之后,编译流程变成了,clean操作之前会先执行ndk-build clean任务,编译动作之前会先执行ndk-build任务,这样就确保了编译执行gradle clean的时候回执行ndk-build clean操作,在编译开始之前执行ndk-build操作,确保所有的动态库都已经编译出来,而且在目录src/main/libs中,然后在编译apk的时候,直接使用src/main/libs中的动态库进行打包。
参考:http://www.mamicode.com/info-detail-1163962.html
第一步,设置当前的ndk路径
第二步,将eclipse工程中的jni目录拷贝到src/main目录下;
第三步,在build.gradle的android中加入一下代码,
sourceSets { main { jniLibs.srcDirs = ['src/main/libs'] } }
第四步,在build.gradle中加入一下代码,
tasks.withType(JavaCompile) { compileTask -> compileTask.dependsOn ndkBuild } task ndkBuild(type: Exec) { workingDir file('src/main/jni') commandLine getNdkBuildCmd() } task cleanNative(type: Exec){ workingDir file('src/main/jni') commandLine getNdkBuildCmd(), 'clean' } clean.dependsOn cleanNative def getNdkDir() { if (System.env.ANDROID_NDK_ROOT != null) return System.env.ANDROID_NDK_ROOT Properties properties = new Properties() properties.load(project.rootProject.file('local.properties').newDataInputStream()) def ndkdir = properties.getProperty('ndk.dir', null) if (ndkdir == null) throw new GradleException("NDK location not found. Define location with ndk.dir in the local.properties file or with an ANDROID_NDK_ROOT environment variable.") return ndkdir } def getNdkBuildCmd() { def ndkbuild = getNdkDir() + "/ndk-build" ndkbuild += ".cmd" return ndkbuild }
加入这些任务之后,编译流程变成了,clean操作之前会先执行ndk-build clean任务,编译动作之前会先执行ndk-build任务,这样就确保了编译执行gradle clean的时候回执行ndk-build clean操作,在编译开始之前执行ndk-build操作,确保所有的动态库都已经编译出来,而且在目录src/main/libs中,然后在编译apk的时候,直接使用src/main/libs中的动态库进行打包。
参考:http://www.mamicode.com/info-detail-1163962.html
相关文章推荐
- Android开发工具的下载
- Android Activity启动过程简读 <1>
- 【Android】在activity中使用menu菜单
- android 之activity生命周期
- 解决Mac上android设备不显示的问题
- 【Android控件】呼吸效果的动画
- 深入理解Android中的View
- Android客户端性能优化(魅族资深工程师毫无保留奉献)
- Android中Parcelable接口的应用
- Android中service讲解
- Android开源项目分类汇总
- [Android Studio系列(三)]Android Studio 编译、同步慢的解决方法
- android事件分发
- Android 带checkbox的listView 实现多选,全选,反选,删除
- 【Android】Toast控件使用
- Android百度地图定位收索取周边在列表中展示并选择
- 【Android】Mainifest文件手动添加Activity
- Android使用ViewDragHelper实现仿QQ6.0侧滑界面(一)
- 自定义ANDROID中EDITTEXT中的HINT文本的大小
- Android 从启动到程序运行发生的事情