[英]How to build static library from C++ using NDK on Android using Android Studio with Gradle?
[英]How to build external C++ library with Android Studio + Gradle + NDK?
我現在正在將 C++ 庫移植到 Android。 我已經做了初步的工作,並以 Application.mk/Android.mk 的方式構建它。
即將推出的用於庫的 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++ 文件添加到 Gradle 構建中?
我使用最新的 AS 2.0 + 0.7.0 beta3 實驗插件。
請幫忙。
問題出在 0.7.0-beta3 實驗插件中。 我恢復到 0.6.0 版本。 這個語法沒問題:
android.sources {
main {
jni {
source {
srcDir "${project.ext.inttalksdk}/src/Components/Util/"
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.