SWIGで生成されたネイティブコードでリンクする必要のあるAndroidアプリがあります。 MakefileはSWIGを実行し、生成されたJavaファイルをインストールし、* .soを作成することができます。現在、ネイティブコードディレクトリに移動し、手作業で「make」を実行し、生成されたJavaをRCSに格納する必要があります。これは本当に悪い考えです。NDKディレクトリでmakeを実行するためにgradleファイルを変更するには?
「make」のような外部タスクを実行するGradleにtask(){}を作成できることを知りました。
task buildSwig(type: Exec) {
workingDir './app/src/main/cpp'
commandLine 'make', 'distclean', 'swig', 'c++'
}
は、私は、このように 'build.gradle' でそれを置く:
修正buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
classpath 'me.tatarka:gradle-retrolambda:3.2.3'
classpath 'com.getkeepsafe.dexcount:dexcount-gradle-plugin:0.3.1'
}
}
allprojects {
repositories {
jcenter()
maven {
url "https://clojars.org/repo/"
}
flatDir {
dirs 'libs'
}
}
configurations.all {
resolutionStrategy.force 'com.android.support:support-annotations:23.1.1'
}
}
project.ext.preDexLibs = !project.hasProperty('disablePreDex')
task clean(type: Delete) {
delete rootProject.buildDir
}
task buildSwig(type: Exec) {
workingDir './app/src/main/cpp'
commandLine 'make', 'distclean', 'swig', 'c++'
}
は、標準ではGradleのファイルを生成し、これは私が持っているものです。私が持っている質問は次のとおりです。1)buildSwigタスクをビルド自体にどのようにフックしますか? 2)正しいGradleスクリプトを使用していますか?タスクは無視されているようです。当然のことながら、Makefileは他のすべてより前に実行する必要があります。
また、この問題が修正されると、生成されたJavaファイルはGradleビルドプロセスによって認識されますか?アプリケーションbuild.gradle
で