diff --git a/examples/hello_android/buildSrc/src/main/groovy/FlutterPlugin.groovy b/examples/hello_android/buildSrc/src/main/groovy/FlutterPlugin.groovy index db561a243f..14edd4d78d 100644 --- a/examples/hello_android/buildSrc/src/main/groovy/FlutterPlugin.groovy +++ b/examples/hello_android/buildSrc/src/main/groovy/FlutterPlugin.groovy @@ -18,6 +18,7 @@ import org.gradle.api.tasks.TaskAction class FlutterPlugin implements Plugin { private File sdkDir + private File engineSrcDir @Override void apply(Project project) { @@ -42,6 +43,14 @@ class FlutterPlugin implements Plugin { throw new GradleException("flutter.sdk must point to the Flutter SDK directory") } + String engineSrcPath = properties.getProperty("flutter.engineSrcPath") + if (engineSrcPath != null) { + engineSrcDir = project.file(engineSrcPath) + if (!engineSrcDir.isDirectory()) { + throw new GradleException("flutter.engineSrcPath must be a Flutter engine source directory") + } + } + project.extensions.create("flutter", FlutterExtension) project.dependencies.add("compile", flutterEngine) project.afterEvaluate this.&addFlutterTask @@ -56,6 +65,7 @@ class FlutterPlugin implements Plugin { sdkDir this.sdkDir sourceDir project.file(project.flutter.source) intermediateDir project.file("${project.buildDir}/${AndroidProject.FD_INTERMEDIATES}/flutter") + engineSrcDir this.engineSrcDir } project.android.applicationVariants.all { variant -> @@ -83,6 +93,8 @@ class FlutterTask extends DefaultTask { @OutputDirectory File intermediateDir + File engineSrcDir + String getFlxPath() { return "${intermediateDir}/app.flx" } @@ -97,6 +109,9 @@ class FlutterTask extends DefaultTask { project.exec { executable "${sdkDir}/bin/flutter" workingDir sourceDir + if (engineSrcDir != null) { + args "--engine-src-path", engineSrcDir + } args "build", "flx" args "-o", flxPath args "--snapshot", "${intermediateDir}/snapshot_blob.bin"