misc/androidstudio: fix the classpath for gobind and gomobile
Before this CL, the JavaCompile.classpath property was evaluated early,
which resulted in missing classpath entries for first-time runs of
gradle. Delay the evaluation, making sure gobind and gomobile receives
the complete classpath.
Change-Id: Iba9be0bbf9f563eb18b2549ac8267f8db3b7dec1
Reviewed-on: https://go-review.googlesource.com/35177
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
diff --git a/misc/androidstudio/src/main/groovy/org/golang/mobile/GobindPlugin.groovy b/misc/androidstudio/src/main/groovy/org/golang/mobile/GobindPlugin.groovy
index f2e28e8..bd6e3e0 100644
--- a/misc/androidstudio/src/main/groovy/org/golang/mobile/GobindPlugin.groovy
+++ b/misc/androidstudio/src/main/groovy/org/golang/mobile/GobindPlugin.groovy
@@ -17,6 +17,7 @@
import org.gradle.api.tasks.OutputFile
import org.gradle.api.tasks.OutputDirectory
import org.gradle.api.tasks.TaskAction
+import org.gradle.api.tasks.compile.JavaCompile
import org.golang.mobile.OutputFileTask
import org.golang.mobile.AARPublishArtifact
@@ -75,7 +76,7 @@
// First, generate the Java classes with the gobind tool.
Task bindTask = project.tasks.create("gobind${variant.name.capitalize()}", GobindTask)
bindTask.outputDir = outputDir
- bindTask.classpath = variant.javaCompile.classpath
+ bindTask.javaCompile = variant.javaCompile
bindTask.bootClasspath = variant.javaCompile.options.bootClasspath
// TODO: Detect when updating the Java classes is redundant.
bindTask.outputs.upToDateWhen { false }
@@ -83,8 +84,7 @@
// Then, generate the JNI libraries with the gomobile tool.
Task libTask = project.tasks.create("gomobile${variant.name.capitalize()}", GomobileTask)
libTask.bootClasspath = variant.javaCompile.options.bootClasspath
- // Add the R and databinding classes to the gomobile classpath.
- libTask.classpath = project.files(variant.javaCompile.classpath, variant.javaCompile.destinationDir)
+ libTask.javaCompile = variant.javaCompile
// Dump the JNI libraries in the known project jniLibs directory.
// TODO: Use a directory below build for the libraries instead. Adding a jni directory to the jniLibs
// property of android.sourceSets only works, but only if the directory changes every build.
@@ -190,11 +190,11 @@
@OutputDirectory
File outputDir
- FileCollection classpath
+ JavaCompile javaCompile
@TaskAction
def gobind() {
- run("gobind", project.gobind.GOBIND, ["-lang", "java", "-classpath", classpath.join(File.pathSeparator), "-outdir", outputDir.getAbsolutePath()])
+ run("gobind", project.gobind.GOBIND, ["-lang", "java", "-classpath", javaCompile.classpath.join(File.pathSeparator), "-outdir", outputDir.getAbsolutePath()])
}
}
@@ -207,7 +207,7 @@
@OutputDirectory
File libsDir
- FileCollection classpath
+ JavaCompile javaCompile
@TaskAction
def gomobile() {
@@ -215,10 +215,10 @@
outputFile = File.createTempFile("gobind-", ".aar")
}
def cmd = ["bind", "-i"]
- if (classpath) {
- cmd << "-classpath"
- cmd << classpath.join(File.pathSeparator)
- }
+ // Add the generated R and databinding classes to the classpath.
+ def classpath = project.files(javaCompile.classpath, javaCompile.destinationDir)
+ cmd << "-classpath"
+ cmd << classpath.join(File.pathSeparator)
cmd << "-o"
cmd << outputFile.getAbsolutePath()
cmd << "-target"