我現在將C++庫移植到Android。我已經完成了初始工作,並以Application.mk/Android.mk方式構建。如何使用Android Studio + Gradle + NDK構建外部C++庫?
即將推出的Java庫演示應用程序正在Android Studio中開發。我可以一起構建一切(演示+庫) - 感謝StackOverflow社區。
但是我無法訪問這些構建中的本機調試。但是調試是必要的 - 圖書館還不夠穩定。純控制檯GDB調試現在需要很多時間,並且將來可能會消耗更多時間。
因此,我決定使用Android Studio和Gradle構建使用集成調試器。
我有專用庫模塊與NDK和Java(包裝)部分。 但是,C/C++源文件不在jni /子目錄下。它們位於另一個目錄中。
因此,我可以配置Gradle從該目錄獲取源代碼。 我試過像這樣:
apply plugin: 'com.android.model.library'
model {
android {
compileSdkVersion = 23
buildToolsVersion = "23.0.2"
defaultConfig.with {
minSdkVersion.apiLevel = 10
targetSdkVersion.apiLevel = 23
versionCode = 1
versionName = "1.0"
}
ndk {
moduleName = "inttalksdk"
stl "gnustl_shared"
cppFlags.add("-std=c++11")
cppFlags.add("-fexceptions")
ldLibs.addAll(['log'])
}
}
android.sources {
main.jni.source {
srcDirs.add(["src"])
}
}
android.buildTypes {
release {
minifyEnabled = false
proguardFiles.add(file('proguard-android.txt'))
}
}
}
但是AS無法同步項目。 錯誤消息:
Gradle 'Android' project refresh failed
Error:Attempt to read a write only view of model of type 'java.lang.Object' given to rule 'android.sources { ... } @ inttalksdk/build.gradle line 24, column 5'
我真正的問題是:如何添加這些外部C/C++文件到搖籃建?
我使用最新的AS 2.0 + 0.7.0 beta3實驗性插件。
請幫忙。
你也可以添加C++代碼庫,然後執行'編制項目(「:我-JNI代碼」)' –
謝謝!但最後我轉向了CMake支持 - 它爲我節省了幾個小時。 – Dmytro