Unverified Commit dbe0ccd8 authored by Bartek Pacia's avatar Bartek Pacia Committed by GitHub

Refactor "app plugin loader" Gradle Plugin so it can be applied using the...

Refactor "app plugin loader" Gradle Plugin so it can be applied using the declarative `plugins {}` block (#127897)

This PR fixes #125009.
parent 74c66931
...@@ -7,14 +7,13 @@ ...@@ -7,14 +7,13 @@
// See dev/tools/bin/generate_gradle_lockfiles.dart. // See dev/tools/bin/generate_gradle_lockfiles.dart.
buildscript { buildscript {
ext.kotlin_version = '1.5.31' ext.kotlin_version = '1.9.0'
repositories { repositories {
google() google()
mavenCentral() mavenCentral()
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:7.2.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
} }
......
# This is a Gradle generated file for dependency locking. # This is a Gradle generated file for dependency locking.
# Manual edits can break the build and are not advised. # Manual edits can break the build and are not advised.
# This file is expected to be part of source control. # This file is expected to be part of source control.
androidx.databinding:databinding-common:7.2.0=classpath org.jetbrains.intellij.deps:trove4j:1.0.20200330=classpath
androidx.databinding:databinding-compiler-common:7.2.0=classpath org.jetbrains.kotlin:kotlin-android-extensions:1.9.0=classpath
com.android.databinding:baseLibrary:7.2.0=classpath org.jetbrains.kotlin:kotlin-build-tools-api:1.9.0=classpath
com.android.tools.analytics-library:crash:30.2.0=classpath org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.0=classpath
com.android.tools.analytics-library:protos:30.2.0=classpath org.jetbrains.kotlin:kotlin-compiler-runner:1.9.0=classpath
com.android.tools.analytics-library:shared:30.2.0=classpath org.jetbrains.kotlin:kotlin-daemon-client:1.9.0=classpath
com.android.tools.analytics-library:tracker:30.2.0=classpath org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.0=classpath
com.android.tools.build.jetifier:jetifier-core:1.0.0-beta09=classpath org.jetbrains.kotlin:kotlin-gradle-plugin-annotations:1.9.0=classpath
com.android.tools.build.jetifier:jetifier-processor:1.0.0-beta09=classpath org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.9.0=classpath
com.android.tools.build:aapt2-proto:7.2.0-7984345=classpath org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:1.9.0=classpath
com.android.tools.build:aaptcompiler:7.2.0=classpath org.jetbrains.kotlin:kotlin-gradle-plugin-idea:1.9.0=classpath
com.android.tools.build:apksig:7.2.0=classpath org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.9.0=classpath
com.android.tools.build:apkzlib:7.2.0=classpath org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.0=classpath
com.android.tools.build:builder-model:7.2.0=classpath org.jetbrains.kotlin:kotlin-gradle-plugins-bom:1.9.0=classpath
com.android.tools.build:builder-test-api:7.2.0=classpath org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.9.0=classpath
com.android.tools.build:builder:7.2.0=classpath org.jetbrains.kotlin:kotlin-native-utils:1.9.0=classpath
com.android.tools.build:bundletool:1.8.2=classpath org.jetbrains.kotlin:kotlin-project-model:1.9.0=classpath
com.android.tools.build:gradle-api:7.2.0=classpath org.jetbrains.kotlin:kotlin-scripting-common:1.9.0=classpath
com.android.tools.build:gradle:7.2.0=classpath org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.0=classpath
com.android.tools.build:manifest-merger:30.2.0=classpath org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.0=classpath
com.android.tools.build:transform-api:2.0.0-deprecated-use-gradle-api=classpath org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.0=classpath
com.android.tools.ddms:ddmlib:30.2.0=classpath org.jetbrains.kotlin:kotlin-tooling-core:1.9.0=classpath
com.android.tools.layoutlib:layoutlib-api:30.2.0=classpath org.jetbrains.kotlin:kotlin-util-io:1.9.0=classpath
com.android.tools.lint:lint-model:30.2.0=classpath org.jetbrains.kotlin:kotlin-util-klib:1.9.0=classpath
com.android.tools.lint:lint-typedef-remover:30.2.0=classpath
com.android.tools.utp:android-device-provider-ddmlib-proto:30.2.0=classpath
com.android.tools.utp:android-device-provider-gradle-proto:30.2.0=classpath
com.android.tools.utp:android-test-plugin-host-additional-test-output-proto:30.2.0=classpath
com.android.tools.utp:android-test-plugin-host-coverage-proto:30.2.0=classpath
com.android.tools.utp:android-test-plugin-host-retention-proto:30.2.0=classpath
com.android.tools.utp:android-test-plugin-result-listener-gradle-proto:30.2.0=classpath
com.android.tools:annotations:30.2.0=classpath
com.android.tools:common:30.2.0=classpath
com.android.tools:dvlib:30.2.0=classpath
com.android.tools:repository:30.2.0=classpath
com.android.tools:sdk-common:30.2.0=classpath
com.android.tools:sdklib:30.2.0=classpath
com.android:signflinger:7.2.0=classpath
com.android:zipflinger:7.2.0=classpath
com.fasterxml.jackson.core:jackson-annotations:2.11.1=classpath
com.fasterxml.jackson.core:jackson-core:2.11.1=classpath
com.fasterxml.jackson.core:jackson-databind:2.11.1=classpath
com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.11.1=classpath
com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.11.1=classpath
com.fasterxml.jackson.module:jackson-module-kotlin:2.11.1=classpath
com.fasterxml.woodstox:woodstox-core:6.2.1=classpath
com.github.gundy:semver4j:0.16.4=classpath
com.google.android:annotations:4.1.1.4=classpath
com.google.api.grpc:proto-google-common-protos:1.12.0=classpath
com.google.auto.value:auto-value-annotations:1.6.2=classpath
com.google.code.findbugs:jsr305:3.0.2=classpath
com.google.code.gson:gson:2.8.6=classpath
com.google.crypto.tink:tink:1.3.0-rc2=classpath
com.google.dagger:dagger:2.28.3=classpath
com.google.errorprone:error_prone_annotations:2.3.4=classpath
com.google.flatbuffers:flatbuffers-java:1.12.0=classpath
com.google.guava:failureaccess:1.0.1=classpath
com.google.guava:guava:30.1-jre=classpath
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=classpath
com.google.j2objc:j2objc-annotations:1.3=classpath
com.google.jimfs:jimfs:1.1=classpath
com.google.protobuf:protobuf-java-util:3.10.0=classpath
com.google.protobuf:protobuf-java:3.10.0=classpath
com.google.testing.platform:core-proto:0.0.8-alpha07=classpath
com.googlecode.json-simple:json-simple:1.1=classpath
com.googlecode.juniversalchardet:juniversalchardet:1.0.3=classpath
com.squareup:javapoet:1.10.0=classpath
com.squareup:javawriter:2.5.0=classpath
com.sun.activation:javax.activation:1.2.0=classpath
com.sun.istack:istack-commons-runtime:3.0.8=classpath
com.sun.xml.fastinfoset:FastInfoset:1.2.16=classpath
commons-codec:commons-codec:1.11=classpath
commons-io:commons-io:2.4=classpath
commons-logging:commons-logging:1.2=classpath
de.undercouch:gradle-download-task:4.1.1=classpath
io.grpc:grpc-api:1.21.1=classpath
io.grpc:grpc-context:1.21.1=classpath
io.grpc:grpc-core:1.21.1=classpath
io.grpc:grpc-netty:1.21.1=classpath
io.grpc:grpc-protobuf-lite:1.21.1=classpath
io.grpc:grpc-protobuf:1.21.1=classpath
io.grpc:grpc-stub:1.21.1=classpath
io.netty:netty-buffer:4.1.34.Final=classpath
io.netty:netty-codec-http2:4.1.34.Final=classpath
io.netty:netty-codec-http:4.1.34.Final=classpath
io.netty:netty-codec-socks:4.1.34.Final=classpath
io.netty:netty-codec:4.1.34.Final=classpath
io.netty:netty-common:4.1.34.Final=classpath
io.netty:netty-handler-proxy:4.1.34.Final=classpath
io.netty:netty-handler:4.1.34.Final=classpath
io.netty:netty-resolver:4.1.34.Final=classpath
io.netty:netty-transport:4.1.34.Final=classpath
io.opencensus:opencensus-api:0.21.0=classpath
io.opencensus:opencensus-contrib-grpc-metrics:0.21.0=classpath
it.unimi.dsi:fastutil:8.4.0=classpath
jakarta.activation:jakarta.activation-api:1.2.1=classpath
jakarta.xml.bind:jakarta.xml.bind-api:2.3.2=classpath
javax.inject:javax.inject:1=classpath
net.java.dev.jna:jna-platform:5.6.0=classpath
net.java.dev.jna:jna:5.6.0=classpath
net.sf.jopt-simple:jopt-simple:4.9=classpath
net.sf.kxml:kxml2:2.3.0=classpath
org.apache.commons:commons-compress:1.20=classpath
org.apache.httpcomponents:httpclient:4.5.9=classpath
org.apache.httpcomponents:httpcore:4.4.11=classpath
org.apache.httpcomponents:httpmime:4.5.6=classpath
org.bitbucket.b_c:jose4j:0.7.0=classpath
org.bouncycastle:bcpkix-jdk15on:1.56=classpath
org.bouncycastle:bcprov-jdk15on:1.56=classpath
org.checkerframework:checker-qual:3.5.0=classpath
org.codehaus.mojo:animal-sniffer-annotations:1.17=classpath
org.codehaus.woodstox:stax2-api:4.2.1=classpath
org.glassfish.jaxb:jaxb-runtime:2.3.2=classpath
org.glassfish.jaxb:txw2:2.3.2=classpath
org.jdom:jdom2:2.0.6=classpath
org.jetbrains.dokka:dokka-core:1.4.32=classpath
org.jetbrains.intellij.deps:trove4j:1.0.20181211=classpath
org.jetbrains.kotlin:kotlin-android-extensions:1.5.31=classpath
org.jetbrains.kotlin:kotlin-annotation-processing-gradle:1.5.31=classpath
org.jetbrains.kotlin:kotlin-build-common:1.5.31=classpath
org.jetbrains.kotlin:kotlin-compiler-embeddable:1.5.31=classpath
org.jetbrains.kotlin:kotlin-compiler-runner:1.5.31=classpath
org.jetbrains.kotlin:kotlin-daemon-client:1.5.31=classpath
org.jetbrains.kotlin:kotlin-daemon-embeddable:1.5.31=classpath
org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.5.31=classpath
org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.5.31=classpath
org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.31=classpath
org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.5.31=classpath
org.jetbrains.kotlin:kotlin-native-utils:1.5.31=classpath
org.jetbrains.kotlin:kotlin-project-model:1.5.31=classpath
org.jetbrains.kotlin:kotlin-reflect:1.5.31=classpath
org.jetbrains.kotlin:kotlin-scripting-common:1.5.31=classpath
org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.5.31=classpath
org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.5.31=classpath
org.jetbrains.kotlin:kotlin-scripting-jvm:1.5.31=classpath
org.jetbrains.kotlin:kotlin-stdlib-common:1.5.31=classpath
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.5.31=classpath
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.5.31=classpath
org.jetbrains.kotlin:kotlin-stdlib:1.5.31=classpath
org.jetbrains.kotlin:kotlin-tooling-metadata:1.5.31=classpath
org.jetbrains.kotlin:kotlin-util-io:1.5.31=classpath
org.jetbrains.kotlin:kotlin-util-klib:1.5.31=classpath
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0=classpath org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0=classpath
org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0=classpath
org.jetbrains:annotations:13.0=classpath
org.jetbrains:markdown-jvm:0.2.1=classpath
org.jetbrains:markdown:0.2.1=classpath
org.json:json:20180813=classpath
org.jsoup:jsoup:1.13.1=classpath
org.jvnet.staxex:stax-ex:1.8.1=classpath
org.ow2.asm:asm-analysis:9.1=classpath
org.ow2.asm:asm-commons:9.1=classpath
org.ow2.asm:asm-tree:9.1=classpath
org.ow2.asm:asm-util:9.1=classpath
org.ow2.asm:asm:9.1=classpath
org.slf4j:slf4j-api:1.7.30=classpath
org.tensorflow:tensorflow-lite-metadata:0.1.0-rc2=classpath
xerces:xercesImpl:2.12.0=classpath
xml-apis:xml-apis:1.4.01=classpath
empty= empty=
...@@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME ...@@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip distributionUrl=https\://services.gradle.org/distributions/gradle-8.2.1-all.zip
...@@ -87,10 +87,10 @@ org.codehaus.groovy:groovy-all:2.4.15=lintClassPath ...@@ -87,10 +87,10 @@ org.codehaus.groovy:groovy-all:2.4.15=lintClassPath
org.codehaus.mojo:animal-sniffer-annotations:1.18=lintClassPath org.codehaus.mojo:animal-sniffer-annotations:1.18=lintClassPath
org.glassfish.jaxb:jaxb-runtime:2.3.1=lintClassPath org.glassfish.jaxb:jaxb-runtime:2.3.1=lintClassPath
org.glassfish.jaxb:txw2:2.3.1=lintClassPath org.glassfish.jaxb:txw2:2.3.1=lintClassPath
org.jacoco:org.jacoco.agent:0.8.7=androidJacocoAnt org.jacoco:org.jacoco.agent:0.8.8=androidJacocoAnt
org.jacoco:org.jacoco.ant:0.8.7=androidJacocoAnt org.jacoco:org.jacoco.ant:0.8.8=androidJacocoAnt
org.jacoco:org.jacoco.core:0.8.7=androidJacocoAnt org.jacoco:org.jacoco.core:0.8.8=androidJacocoAnt
org.jacoco:org.jacoco.report:0.8.7=androidJacocoAnt org.jacoco:org.jacoco.report:0.8.8=androidJacocoAnt
org.jetbrains.kotlin:kotlin-reflect:1.3.72=lintClassPath org.jetbrains.kotlin:kotlin-reflect:1.3.72=lintClassPath
org.jetbrains.kotlin:kotlin-stdlib-common:1.3.72=lintClassPath org.jetbrains.kotlin:kotlin-stdlib-common:1.3.72=lintClassPath
org.jetbrains.kotlin:kotlin-stdlib-common:1.5.31=debugAndroidTestCompileClasspath,debugCompileClasspath,debugRuntimeClasspath,debugUnitTestCompileClasspath,debugUnitTestRuntimeClasspath,profileCompileClasspath,profileRuntimeClasspath,profileUnitTestCompileClasspath,profileUnitTestRuntimeClasspath,releaseCompileClasspath,releaseRuntimeClasspath,releaseUnitTestCompileClasspath,releaseUnitTestRuntimeClasspath org.jetbrains.kotlin:kotlin-stdlib-common:1.5.31=debugAndroidTestCompileClasspath,debugCompileClasspath,debugRuntimeClasspath,debugUnitTestCompileClasspath,debugUnitTestRuntimeClasspath,profileCompileClasspath,profileRuntimeClasspath,profileUnitTestCompileClasspath,profileUnitTestRuntimeClasspath,releaseCompileClasspath,releaseRuntimeClasspath,releaseUnitTestCompileClasspath,releaseUnitTestRuntimeClasspath
...@@ -107,12 +107,12 @@ org.jetbrains.trove4j:trove4j:20160824=lintClassPath ...@@ -107,12 +107,12 @@ org.jetbrains.trove4j:trove4j:20160824=lintClassPath
org.jetbrains:annotations:13.0=debugAndroidTestCompileClasspath,debugCompileClasspath,debugRuntimeClasspath,debugUnitTestCompileClasspath,debugUnitTestRuntimeClasspath,lintClassPath,profileCompileClasspath,profileRuntimeClasspath,profileUnitTestCompileClasspath,profileUnitTestRuntimeClasspath,releaseCompileClasspath,releaseRuntimeClasspath,releaseUnitTestCompileClasspath,releaseUnitTestRuntimeClasspath org.jetbrains:annotations:13.0=debugAndroidTestCompileClasspath,debugCompileClasspath,debugRuntimeClasspath,debugUnitTestCompileClasspath,debugUnitTestRuntimeClasspath,lintClassPath,profileCompileClasspath,profileRuntimeClasspath,profileUnitTestCompileClasspath,profileUnitTestRuntimeClasspath,releaseCompileClasspath,releaseRuntimeClasspath,releaseUnitTestCompileClasspath,releaseUnitTestRuntimeClasspath
org.jvnet.staxex:stax-ex:1.8=lintClassPath org.jvnet.staxex:stax-ex:1.8=lintClassPath
org.ow2.asm:asm-analysis:7.0=lintClassPath org.ow2.asm:asm-analysis:7.0=lintClassPath
org.ow2.asm:asm-analysis:9.1=androidJacocoAnt org.ow2.asm:asm-analysis:9.2=androidJacocoAnt
org.ow2.asm:asm-commons:7.0=lintClassPath org.ow2.asm:asm-commons:7.0=lintClassPath
org.ow2.asm:asm-commons:9.1=androidJacocoAnt org.ow2.asm:asm-commons:9.2=androidJacocoAnt
org.ow2.asm:asm-tree:7.0=lintClassPath org.ow2.asm:asm-tree:7.0=lintClassPath
org.ow2.asm:asm-tree:9.1=androidJacocoAnt org.ow2.asm:asm-tree:9.2=androidJacocoAnt
org.ow2.asm:asm-util:7.0=lintClassPath org.ow2.asm:asm-util:7.0=lintClassPath
org.ow2.asm:asm:7.0=lintClassPath org.ow2.asm:asm:7.0=lintClassPath
org.ow2.asm:asm:9.1=androidJacocoAnt org.ow2.asm:asm:9.2=androidJacocoAnt
empty=androidApis,androidJdkImage,androidTestUtil,compile,coreLibraryDesugaring,debugAndroidTestAnnotationProcessorClasspath,debugAndroidTestRuntimeClasspath,debugAnnotationProcessorClasspath,debugReverseMetadataValues,debugUnitTestAnnotationProcessorClasspath,debugWearBundling,lintChecks,lintPublish,profileAnnotationProcessorClasspath,profileReverseMetadataValues,profileUnitTestAnnotationProcessorClasspath,profileWearBundling,releaseAnnotationProcessorClasspath,releaseReverseMetadataValues,releaseUnitTestAnnotationProcessorClasspath,releaseWearBundling,testCompile empty=androidApis,androidJdkImage,androidTestUtil,compile,coreLibraryDesugaring,debugAndroidTestAnnotationProcessorClasspath,debugAndroidTestRuntimeClasspath,debugAnnotationProcessorClasspath,debugReverseMetadataValues,debugUnitTestAnnotationProcessorClasspath,debugWearBundling,lintChecks,lintPublish,profileAnnotationProcessorClasspath,profileReverseMetadataValues,profileUnitTestAnnotationProcessorClasspath,profileWearBundling,releaseAnnotationProcessorClasspath,releaseReverseMetadataValues,releaseUnitTestAnnotationProcessorClasspath,releaseWearBundling,testCompile
...@@ -19,6 +19,12 @@ pluginManagement { ...@@ -19,6 +19,12 @@ pluginManagement {
// Flutter Gradle Plugin ships together with the Flutter SDK // Flutter Gradle Plugin ships together with the Flutter SDK
includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle") includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle")
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
plugins { plugins {
// Flutter Gradle Plugin's ID is defined in /packages/flutter_tools/gradle/build.gradle.kts. // Flutter Gradle Plugin's ID is defined in /packages/flutter_tools/gradle/build.gradle.kts.
// We set `apply false`, because we don't want to apply the plugin to // We set `apply false`, because we don't want to apply the plugin to
...@@ -27,6 +33,9 @@ pluginManagement { ...@@ -27,6 +33,9 @@ pluginManagement {
} }
} }
include ':app' plugins {
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
id "com.android.application" version "7.4.2" apply false
}
apply from: "${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle/app_plugin_loader.gradle" include ':app'
...@@ -2,35 +2,8 @@ ...@@ -2,35 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// This file is included from `<app>/android/settings.gradle`, // This file exists solely for the compatibility with projects that have
// so it can be versioned with the Flutter SDK. // not migrated to the declarative apply of the Flutter App Plugin Loader Gradle Plugin.
import groovy.json.JsonSlurper def pathToThisDirectory = buildscript.sourceFile.parentFile
apply from: "$pathToThisDirectory/src/main/groovy/app_plugin_loader.groovy"
def flutterProjectRoot = rootProject.projectDir.parentFile
// If this logic is changed, also change the logic in module_plugin_loader.gradle.
def pluginsFile = new File(flutterProjectRoot, '.flutter-plugins-dependencies')
if (!pluginsFile.exists()) {
return
}
def object = new JsonSlurper().parseText(pluginsFile.text)
assert object instanceof Map
assert object.plugins instanceof Map
assert object.plugins.android instanceof List
// Includes the Flutter plugins that support the Android platform.
object.plugins.android.each { androidPlugin ->
assert androidPlugin.name instanceof String
assert androidPlugin.path instanceof String
// Skip plugins that have no native build (such as a Dart-only implementation
// of a federated plugin).
def needsBuild = androidPlugin.containsKey('native_build') ? androidPlugin['native_build'] : true
if (!needsBuild) {
return
}
def pluginDirectory = new File(androidPlugin.path, 'android')
assert pluginDirectory.exists()
include ":${androidPlugin.name}"
project(":${androidPlugin.name}").projectDir = pluginDirectory
}
...@@ -3,12 +3,8 @@ ...@@ -3,12 +3,8 @@
// found in the LICENSE file. // found in the LICENSE file.
plugins { plugins {
`groovy-gradle-plugin` `java-gradle-plugin`
} `groovy`
repositories {
google()
mavenCentral()
} }
...@@ -22,6 +18,10 @@ gradlePlugin { ...@@ -22,6 +18,10 @@ gradlePlugin {
id = "dev.flutter.flutter-gradle-plugin" id = "dev.flutter.flutter-gradle-plugin"
implementationClass = "FlutterPlugin" implementationClass = "FlutterPlugin"
} }
create("flutterAppPluginLoaderPlugin") {
id = "dev.flutter.flutter-plugin-loader"
implementationClass = "FlutterAppPluginLoaderPlugin"
}
} }
} }
......
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
}
}
import groovy.json.JsonSlurper
import org.gradle.api.Plugin
import org.gradle.api.initialization.Settings
apply plugin: FlutterAppPluginLoaderPlugin
class FlutterAppPluginLoaderPlugin implements Plugin<Settings> {
// This string must match _kFlutterPluginsHasNativeBuildKey defined in
// packages/flutter_tools/lib/src/flutter_plugins.dart.
private final String nativeBuildKey = 'native_build'
@Override
void apply(Settings settings) {
def flutterProjectRoot = settings.settingsDir.parentFile
// If this logic is changed, also change the logic in module_plugin_loader.gradle.
def pluginsFile = new File(flutterProjectRoot, '.flutter-plugins-dependencies')
if (!pluginsFile.exists()) {
return
}
def object = new JsonSlurper().parseText(pluginsFile.text)
assert object instanceof Map
assert object.plugins instanceof Map
assert object.plugins.android instanceof List
// Includes the Flutter plugins that support the Android platform.
object.plugins.android.each { androidPlugin ->
assert androidPlugin.name instanceof String
assert androidPlugin.path instanceof String
// Skip plugins that have no native build (such as a Dart-only implementation
// of a federated plugin).
def needsBuild = androidPlugin.containsKey(nativeBuildKey) ? androidPlugin[nativeBuildKey] : true
if (!needsBuild) {
return
}
def pluginDirectory = new File(androidPlugin.path, 'android')
assert pluginDirectory.exists()
settings.include(":${androidPlugin.name}")
settings.project(":${androidPlugin.name}").projectDir = pluginDirectory
}
}
}
...@@ -6,7 +6,6 @@ buildscript { ...@@ -6,7 +6,6 @@ buildscript {
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:{{agpVersion}}'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
} }
} }
......
...@@ -6,7 +6,6 @@ buildscript { ...@@ -6,7 +6,6 @@ buildscript {
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:{{agpVersion}}'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
} }
} }
......
...@@ -10,11 +10,20 @@ pluginManagement { ...@@ -10,11 +10,20 @@ pluginManagement {
includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle") includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle")
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
plugins { plugins {
id "dev.flutter.flutter-gradle-plugin" version "1.0.0" apply false id "dev.flutter.flutter-gradle-plugin" version "1.0.0" apply false
} }
} }
include ":app" plugins {
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
id "com.android.application" version "{{agpVersion}}" apply false
}
apply from: "${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle/app_plugin_loader.gradle" include ":app"
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
"templates/app_shared/android.tmpl/app/src/main/res/values/styles.xml", "templates/app_shared/android.tmpl/app/src/main/res/values/styles.xml",
"templates/app_shared/android.tmpl/app/src/profile/AndroidManifest.xml.tmpl", "templates/app_shared/android.tmpl/app/src/profile/AndroidManifest.xml.tmpl",
"templates/app_shared/android.tmpl/gradle.properties.tmpl", "templates/app_shared/android.tmpl/gradle.properties.tmpl",
"templates/app_shared/android.tmpl/settings.gradle.tmpl",
"templates/app_shared/android.tmpl/gradle/wrapper/gradle-wrapper.properties.tmpl", "templates/app_shared/android.tmpl/gradle/wrapper/gradle-wrapper.properties.tmpl",
"templates/app_shared/android.tmpl/settings.gradle", "templates/app_shared/android.tmpl/settings.gradle",
"templates/app_shared/ios-objc.tmpl/Runner.xcodeproj/project.pbxproj.tmpl", "templates/app_shared/ios-objc.tmpl/Runner.xcodeproj/project.pbxproj.tmpl",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment