AndroidStudio中使用Android.mk

默認你的工程接口如圖所示android

輸入圖片說明

首先配置好NDK開發目錄,在build.gradle的defaultconfig中配置好ndk選項apache

ndk {
        moduleName "xxx"
   }

而後,在build.gradle(app)文件的android結構下,加入如下配置:app

sourceSets.main{  
        jniLibs.srcDir 'src/main/libs'  
        jni.srcDirs = []  
    }

jniLibs.srcDir 'src/main/libs':意思是編譯成功的so,會存放在src/main/libs目錄下面 jni.srcDirs = []:將gradle的jni源目錄設置爲空,禁用gradle自帶的ndk編譯函數

接着加入如下配置gradle

task ndkBuild(type: Exec) {  
		if (Os.isFamily(Os.FAMILY_WINDOWS)) {  
			commandLine 'ndk-build.cmd', '-C', file('src/main/jni').absolutePath  
		} else {  
			commandLine 'ndk-build', '-C', file('src/main/jni').absolutePath  
		}  
	}  
	  
	tasks.withType(JavaCompile) {  
		compileTask -> compileTask.dependsOn ndkBuild  
	}

ndkBuild函數的意思是執行默認的ndk編譯 task.withType的意思是添加ndkbuild爲工程編譯的依賴項 由於涉及到os辨認,因此在此文件的文件頭須要加入ui

apply plugin: 'com.android.library'
	import org.apache.tools.ant.taskdefs.condition.Os

這樣在編譯的時候可能會報的錯誤爲 execution failed for task ':app:ndkbuild'.code

此時,檢查NDK路徑配置是否有誤,若是沒有異常,使用cmd命令直接調用ndk-build(.cmd) -C 進行編譯,若是代碼有誤,可直接檢查代碼。若是代碼確認無誤。,接口

將ndk-build.cmd的全路徑填入工程路徑中,便可成功編譯圖片

task ndkBuild(type: Exec) {  
		if (Os.isFamily(Os.FAMILY_WINDOWS)) {  
			commandLine 'D:\\xxxxx\\android-ndk-r11b\\ndk-build.cmd', '-C', file('src/main/jni').absolutePath  
		} else {  
			commandLine '/home/xxxxx/Android/android-ndk-r11b/ndk-build', '-C', file('src/main/jni').absolutePath  
		}  
	}
相關文章
相關標籤/搜索