実験的なgradleプラグインの「複数のNDKプロジェクト」機能を利用しようとしています。Android Studio 2.1 と gradle plugin 0.7.0 安定版を使用しています。ネイティブ ライブラリの exportHeaders セクションで指定されたヘッダー ファイルがコンパイル時にインクルードされるとブログは言っているようです
exportedHeaders {
srcDir "src"
}
これは私にはうまくいかないようです。たとえば、次のフォルダー構造があるとします。Addition.h が native.cpp で利用できると予想されます。つまり、次のように言うことができるはずです。
#include <Addition.h>
だけ
#include "../../../../../../../Framework/Addition/src/Addition.h"
動作します。ヘッダーを含めるために cppFlags を追加しても違いはありません。
サンプル プロジェクトの関連ファイルがどのように見えるかを次に示します。サンプル プロジェクト モジュール「app」は、ネイティブ ライブラリ モジュール「addition」に依存して 2 つの数値を加算します。ネイティブ ライブラリは、新しいネイティブ プラグインを使用します。
settings.gradle
include ':app'
include ':Addition'
project (":Addition").projectDir = new File("../../../Framework/Addition")
gradle-wrapper.properties
#Mon Dec 28 10:00:20 PST 2015
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
build.gradle (:アプリ)
apply plugin: 'com.android.model.application'
model {
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
ndk {
moduleName = 'native'
platformVersion = 17
toolchain "clang"
cppFlags.addAll(['-I' + file('src/main/jni'),
'-I' + file('../../../Framework/Addition')])
}
sources {
main {
jni {
dependencies {
project ':Addition' linkage 'static'
}
}
}
}
defaultConfig {
applicationId "com.harkish.nativepluginexample"
minSdkVersion.apiLevel 21
targetSdkVersion.apiLevel 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
}
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.3.0'
}
build.gradle (:追加)
apply plugin: 'com.android.model.native'
model {
android {
compileSdkVersion = 23
buildToolsVersion = '23.0.2'
defaultConfig {
minSdkVersion.apiLevel = 21
targetSdkVersion.apiLevel = 23
versionCode = 1
versionName = '1.0'
}
ndk {
moduleName = 'addition'
}
sources {
main {
jni {
source {
srcDir "src"
}
exportedHeaders {
srcDir "src"
}
}
}
}
}
}
誰でもこの問題を解決しましたか?アイデア?