首先創建include
文件夾裏面jni
文件夾和libs
文件夾裏面的同一個文件夾。您還可以在libs
文件夾內爲不同的chipsets
(armeabi,mips,x86)創建不同的文件夾。
複製include
文件夾內的.h文件和你的編譯文件(.a)中在libs
文件夾
然後,你必須改變你的build.gradle,添加新的repository
model
repositories {
libs(PrebuiltLibraries) {
libYourCLibrary{
headers.srcDir "src/main/jni/include"
binaries.withType(StaticLibraryBinary) {
staticLibraryFile = file("src/main/jni/libs/${targetPlatform.getName()}/YOUR_C_LIBRARY.a")
}
}
}
}
內
裏面添加了model
android.sources {
main {
jni {
dependencies {
library "libYourCLibrary" linkage "static"
}
}
}
}
這個
repository
依賴
最後與梯級文件同步項目。
等等,它不運行make來構建它?呵呵......(不期待在gradle下遷移我的NDK項目......因爲我使用Makefiles +'ndk-build'來定義構建和構建步驟所需的一切)。是不是有一些簡單的方法來編寫在gradle中運行make的自定義構建步驟? (我的意思是,它很時髦,所以它應該是可編程的?但我從來沒有真正理解它,實際上,整個gradle讓我感到非常惱火,無論是它的性能和建立過程定義的神祕方式。完全放棄它並編寫GNU make規則。) – Ped7g
因爲你提到它,我想我會在某處讀到可以使用自定義生成文件在android studio中構建它,我一定會看一看它。 – Alex
'ndk-build'本身使用make,因此我不使用任何自定義設置來運行make,我只是將自定義規則放入來自NDK示例的通用Makefiles中(並使用NDK的ndk-build腳本構建它)。有可能從gradle運行ndk-build(因爲你可能將任何代碼編碼成gradle),但我還沒有這樣做。 – Ped7g