Я портирую библиотеку 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-бета3. Я вернулся к версии 0.6.0.
Этот синтаксис был в порядке:
android.sources {
main {
jni {
source {
srcDir "${project.ext.inttalksdk}/src/Components/Util/"}
}
}
Других решений пока нет …