最近将以前的eclipse项目迁移到android studio上,开发的程序动态库的部分比较复杂,能不能直接在studio编译原来的jni呢?答案是肯定的,只需要配置一下就可以了。

第一步,设置当前的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 cleanNativedef 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-buildclean任务,编译动作之前会先执行ndk-build任务,这样就确保了编译执行gradleclean的时候回执行ndk-buildclean操作,在编译开始之前执行ndk-build操作,确保所有的动态库都已经编译出来,而且在目录src/main/libs中,然后在编译apk的时候,直接使用src/main/libs中的动态库进行打包。
参考:http://www.mamicode.com/info-detail-1163962.html

更多相关文章

  1. android实现字体闪烁动画的方法
  2. android ndk编译x264开源(用于android的ffmpeg中进行软编码)
  3. 在Fragment中设置控件点击方法,执行失败。
  4. [android]编译时出现/usr/bin/ld: skipping incompatible /usr/l
  5. 编译android的linux内核
  6. Android(安卓)命令行编译、打包生成apk文件
  7. Android热更新框架Tinker无法更新?
  8. Android(安卓)之 AsyncTask 异步任务
  9. Android(安卓)任务和回退堆栈---启动任务

随机推荐

  1. Android(安卓)播放音乐文件与视频文件
  2. Android(安卓)gallery详解
  3. android 的动画
  4. Android(安卓)learning - Activities
  5. android权限管理
  6. Android(安卓)绘制太极图
  7. ANDROID截屏
  8. Android(安卓)下载图片的问题
  9. Android系列之浅谈Android(安卓)3D旋转
  10. Android之service实例