Android studio 使用自定義mk檔案編譯jni專案
阿新 • • 發佈:2018-11-07
最近將公司ndk專案從eclipse遷移到as,為了方便省事,直接使用原有mk檔案。參考網路資料,順利完成遷移工作。現貼出使用自定義mk檔案的關鍵程式碼,mark以備後面使用。
buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } sourceSets { main{ jni.srcDirs = []//設定禁止gradle生成Android.mk jniLibs.srcDirs = ['src/main/libs']//設定目標的so存放路徑 } } } } 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 = newProperties() 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 }