最近将以前的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 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
}