Skip to content

Instantly share code, notes, and snippets.

@h0tk3y
Last active July 2, 2024 10:44
Show Gist options
  • Save h0tk3y/a0effe4ceb3b7f9f8500ea00249c6a79 to your computer and use it in GitHub Desktop.
Save h0tk3y/a0effe4ceb3b7f9f8500ea00249c6a79 to your computer and use it in GitHub Desktop.
AGP DCL support experimental changes

Experiment using AGP as a DCL model

Changes

Known issues that might need fixes on the Gradle side

  • Missing support for type parameters in supertypes that get substituted by concrete types in the implementations. An example is DefaultConfigT used in BaseExtension. It might be possible to support this specific class of generic type use cases: we have enough type information when the concrete types are used as type arguments. However, there might be unforeseen complications.

    A temporary workaround is available in one of the patches

  • Function resolution in "DCL runtime" fails for fun sourceCompatibility(sourceCompatibility: String). This happens because the function call resolver relies on parameter names, and those get mangled in the decorated type.

Subject: [PATCH] Minimal changes to import app & lib software types
---
Index: build-system/gradle-api/src/main/java/com/android/build/api/dsl/ApplicationExtension.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/ApplicationExtension.kt b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/ApplicationExtension.kt
--- a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/ApplicationExtension.kt (revision fd902c6c142c808bb590b8c120b496daddf300fb)
+++ b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/ApplicationExtension.kt (revision 17714bfb39bfed3988b5c4c914466a1e4985eb81)
@@ -58,7 +58,8 @@
/**
* Set of asset pack subprojects to be included in the app's bundle.
*/
- @get:Restricted
+// TODO: collections are not supported in DCL
+// @get:Restricted
val assetPacks: MutableSet<String>
/**
Index: build-system/gradle-api/src/main/java/com/android/build/api/dsl/CommonExtension.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/CommonExtension.kt b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/CommonExtension.kt
--- a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/CommonExtension.kt (revision fd902c6c142c808bb590b8c120b496daddf300fb)
+++ b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/CommonExtension.kt (revision 17714bfb39bfed3988b5c4c914466a1e4985eb81)
@@ -69,7 +69,8 @@
*
* For more information about the properties you can configure in this block, see [AndroidResources].
*/
- @get:Restricted
+// TODO: generics are not supported in DCL
+// @get:Restricted
val androidResources: AndroidResourcesT
/**
@@ -77,7 +78,8 @@
*
* For more information about the properties you can configure in this block, see [AndroidResources].
*/
- @Configuring
+// TODO: generics are not supported in DCL
+// @Configuring
fun androidResources(action: AndroidResourcesT.() -> Unit)
/**
@@ -109,7 +111,8 @@
*
* For more information about the properties you can configure in this block, see [AdbOptions].
*/
- @get:Restricted
+// TODO: generics are not supported in DCL
+// @get:Restricted
val installation: InstallationT
/**
@@ -119,7 +122,8 @@
*
* For more information about the properties you can configure in this block, see [AdbOptions].
*/
- @Configuring
+// TODO: generics are not supported in DCL
+// @Configuring
fun installation(action: InstallationT.() -> Unit)
/**
@@ -144,13 +148,15 @@
/**
* A list of build features that can be enabled or disabled on the Android Project.
*/
- @get:Restricted
+// TODO: generics are not supported in DCL
+// @get:Restricted
val buildFeatures: BuildFeaturesT
/**
* A list of build features that can be enabled or disabled on the Android Project.
*/
- @Configuring
+// TODO: generics are not supported in DCL
+// @Configuring
fun buildFeatures(action: BuildFeaturesT.() -> Unit)
/**
@@ -441,7 +447,8 @@
*
* For more information about the properties you can configure in this block, see [DefaultConfig].
*/
- @get:Restricted
+// TODO: generics are not supported in DCL
+// @get:Restricted
val defaultConfig: DefaultConfigT
/**
@@ -453,7 +460,8 @@
*
* For more information about the properties you can configure in this block, see [DefaultConfig].
*/
- @Configuring
+// TODO: generics are not supported in DCL
+// @Configuring
fun defaultConfig(action: DefaultConfigT.() -> Unit)
Index: build-system/gradle-api/src/main/java/com/android/build/api/dsl/Installation.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/Installation.kt b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/Installation.kt
--- a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/Installation.kt (revision fd902c6c142c808bb590b8c120b496daddf300fb)
+++ b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/Installation.kt (revision 17714bfb39bfed3988b5c4c914466a1e4985eb81)
@@ -30,7 +30,8 @@
/** The list of FULL_APK installation options. */
@get:Incubating
- @get:Restricted
+// TODO: collections are not supported in DCL
+// @get:Restricted
val installOptions: List<String>
/** Sets the list of FULL_APK installation options */
Index: build-system/gradle-core/src/main/java/com/android/build/gradle/internal/plugins/AndroidEcoPlugin.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/build-system/gradle-core/src/main/java/com/android/build/gradle/internal/plugins/AndroidEcoPlugin.java b/build-system/gradle-core/src/main/java/com/android/build/gradle/internal/plugins/AndroidEcoPlugin.java
--- a/build-system/gradle-core/src/main/java/com/android/build/gradle/internal/plugins/AndroidEcoPlugin.java (revision fd902c6c142c808bb590b8c120b496daddf300fb)
+++ b/build-system/gradle-core/src/main/java/com/android/build/gradle/internal/plugins/AndroidEcoPlugin.java (revision 17714bfb39bfed3988b5c4c914466a1e4985eb81)
@@ -20,9 +20,13 @@
import org.gradle.api.initialization.Settings;
import org.gradle.api.internal.plugins.software.RegistersSoftwareTypes;
-@RegistersSoftwareTypes({AppPlugin.class})
+@RegistersSoftwareTypes({
+ AppPlugin.class,
+ LibraryPlugin.class
+})
public class AndroidEcoPlugin implements Plugin<Settings> {
@Override
- public void apply(Settings target) {}
+ public void apply(Settings target) {
+ }
}
Index: build-system/gradle-core/src/main/java/com/android/build/gradle/internal/plugins/AppPlugin.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/build-system/gradle-core/src/main/java/com/android/build/gradle/internal/plugins/AppPlugin.java b/build-system/gradle-core/src/main/java/com/android/build/gradle/internal/plugins/AppPlugin.java
--- a/build-system/gradle-core/src/main/java/com/android/build/gradle/internal/plugins/AppPlugin.java (revision fd902c6c142c808bb590b8c120b496daddf300fb)
+++ b/build-system/gradle-core/src/main/java/com/android/build/gradle/internal/plugins/AppPlugin.java (revision 17714bfb39bfed3988b5c4c914466a1e4985eb81)
@@ -57,7 +57,6 @@
import com.android.build.gradle.internal.variant.ComponentInfo;
import com.android.build.gradle.options.BooleanOption;
import com.android.builder.model.v2.ide.ProjectType;
-
import org.gradle.api.Project;
import org.gradle.api.component.SoftwareComponentFactory;
import org.gradle.api.configuration.BuildFeatures;
@@ -66,9 +65,9 @@
import org.gradle.build.event.BuildEventsListenerRegistry;
import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry;
-import java.util.Collection;
-
import javax.inject.Inject;
+import java.util.Collection;
+import java.util.Objects;
/** Gradle plugin class for 'application' projects, applied on the base application module */
public abstract class AppPlugin
@@ -98,8 +97,12 @@
protected void pluginSpecificApply(@NonNull Project project) {
}
- @SoftwareType(name = "androidApp", modelPublicType = BaseAppModuleExtension.class)
- public abstract BaseAppModuleExtension getAndroidApp();
+ @SoftwareType(name = "androidApp")
+ public BaseAppModuleExtension getAndroidApp() {
+ return ((BaseAppModuleExtension) Objects.requireNonNull(project)
+ .getExtensions()
+ .getByName("android"));
+ }
@NonNull
@Override
Index: build-system/gradle-core/src/main/java/com/android/build/gradle/internal/plugins/LibraryPlugin.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/build-system/gradle-core/src/main/java/com/android/build/gradle/internal/plugins/LibraryPlugin.java b/build-system/gradle-core/src/main/java/com/android/build/gradle/internal/plugins/LibraryPlugin.java
--- a/build-system/gradle-core/src/main/java/com/android/build/gradle/internal/plugins/LibraryPlugin.java (revision fd902c6c142c808bb590b8c120b496daddf300fb)
+++ b/build-system/gradle-core/src/main/java/com/android/build/gradle/internal/plugins/LibraryPlugin.java (revision 17714bfb39bfed3988b5c4c914466a1e4985eb81)
@@ -57,11 +57,13 @@
import org.gradle.api.Project;
import org.gradle.api.component.SoftwareComponentFactory;
import org.gradle.api.configuration.BuildFeatures;
+import org.gradle.api.internal.plugins.software.SoftwareType;
import org.gradle.api.reflect.TypeOf;
import org.gradle.build.event.BuildEventsListenerRegistry;
import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry;
import java.util.Collection;
+import java.util.Objects;
import javax.inject.Inject;
@@ -81,6 +83,13 @@
LibraryCreationConfig,
LibraryVariant> {
+ @SoftwareType(name = "androidLibrary")
+ public com.android.build.gradle.LibraryExtension getAndroidLibrary() {
+ return ((com.android.build.gradle.LibraryExtension) Objects.requireNonNull(project)
+ .getExtensions()
+ .getByName("android"));
+ }
+
@Inject
public LibraryPlugin(
ToolingModelBuilderRegistry registry,
Subject: [PATCH] Remove unnecessary `@Restricted` annotations
---
Index: build-system/gradle-api/src/main/java/com/android/build/api/dsl/AaptOptions.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/AaptOptions.kt b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/AaptOptions.kt
--- a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/AaptOptions.kt (revision 17714bfb39bfed3988b5c4c914466a1e4985eb81)
+++ b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/AaptOptions.kt (revision 81f8d195ecb7eaae0906434625c5d469243d0e9f)
@@ -16,8 +16,5 @@
package com.android.build.api.dsl
-import org.gradle.declarative.dsl.model.annotations.Restricted
-
-@Restricted
@Deprecated("Renamed to AndroidResources", replaceWith = ReplaceWith("AndroidResources"))
interface AaptOptions : AndroidResources
Index: build-system/gradle-api/src/main/java/com/android/build/api/dsl/AarMetadata.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/AarMetadata.kt b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/AarMetadata.kt
--- a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/AarMetadata.kt (revision 17714bfb39bfed3988b5c4c914466a1e4985eb81)
+++ b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/AarMetadata.kt (revision 81f8d195ecb7eaae0906434625c5d469243d0e9f)
@@ -24,7 +24,6 @@
*
* This metadata is used by consumers of the AAR to control their behavior.
*/
-@Restricted
interface AarMetadata {
/**
* The minimum compileSdkVersion required by any consuming module.
@@ -35,7 +34,6 @@
* processing.
*/
@get:Restricted
- @set:Restricted
var minCompileSdk: Int?
/**
@@ -44,7 +42,6 @@
@get:Incubating
@set:Incubating
@get:Restricted
- @set:Restricted
var minCompileSdkExtension: Int?
/**
@@ -60,6 +57,5 @@
@get:Incubating
@set:Incubating
@get:Restricted
- @set:Restricted
var minAgpVersion: String?
}
Index: build-system/gradle-api/src/main/java/com/android/build/api/dsl/AndroidResources.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/AndroidResources.kt b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/AndroidResources.kt
--- a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/AndroidResources.kt (revision 17714bfb39bfed3988b5c4c914466a1e4985eb81)
+++ b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/AndroidResources.kt (revision 81f8d195ecb7eaae0906434625c5d469243d0e9f)
@@ -24,7 +24,6 @@
*
* This is accessed via [CommonExtension.androidResources]
*/
-@Restricted
interface AndroidResources {
/**
* Pattern describing assets to be ignored.
@@ -32,7 +31,6 @@
* This is [ignoreAssetsPatterns] joined by ':'.
*/
@get:Restricted
- @set:Restricted
var ignoreAssetsPattern: String?
/**
Index: build-system/gradle-api/src/main/java/com/android/build/api/dsl/AndroidSourceDirectorySet.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/AndroidSourceDirectorySet.kt b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/AndroidSourceDirectorySet.kt
--- a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/AndroidSourceDirectorySet.kt (revision 17714bfb39bfed3988b5c4c914466a1e4985eb81)
+++ b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/AndroidSourceDirectorySet.kt (revision 81f8d195ecb7eaae0906434625c5d469243d0e9f)
@@ -19,12 +19,10 @@
import org.gradle.api.Incubating
import org.gradle.api.Named
import org.gradle.declarative.dsl.model.annotations.Adding
-import org.gradle.declarative.dsl.model.annotations.Restricted
/**
* An AndroidSourceDirectorySet represents a set of directory inputs for an Android project.
*/
-@Restricted
interface AndroidSourceDirectorySet : Named {
/**
Index: build-system/gradle-api/src/main/java/com/android/build/api/dsl/AndroidSourceSet.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/AndroidSourceSet.kt b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/AndroidSourceSet.kt
--- a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/AndroidSourceSet.kt (revision 17714bfb39bfed3988b5c4c914466a1e4985eb81)
+++ b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/AndroidSourceSet.kt (revision 81f8d195ecb7eaae0906434625c5d469243d0e9f)
@@ -26,42 +26,36 @@
* An AndroidSourceSet represents a logical group of Java, aidl and RenderScript sources
* as well as Android and non-Android (Java-style) resources.
*/
-@Restricted
interface AndroidSourceSet : Named {
/** Returns the name of this source set. */
override fun getName(): String
/** The Java source for this source-set */
- @get:Restricted
val java: AndroidSourceDirectorySet
/** The Java source for this source-set */
@Configuring
fun java(action: AndroidSourceDirectorySet.() -> Unit)
/** The Kotlin source for this source-set */
- @get:Restricted
val kotlin: AndroidSourceDirectorySet
/** The Java source for this source-set */
@Configuring
fun kotlin(action: Action<AndroidSourceDirectorySet>)
/** The Java-style resources for this source-set */
- @get:Restricted
val resources: AndroidSourceDirectorySet
/** The Java-style resources for this source-set */
@Configuring
fun resources(action: AndroidSourceDirectorySet.() -> Unit)
/** The Android Manifest file for this source-set. */
- @get:Restricted
val manifest: AndroidSourceFile
/** The Android Manifest file for this source-set. */
@Configuring
fun manifest(action: AndroidSourceFile.() -> Unit)
/** The Android Resources directory for this source-set. */
- @get:Restricted
val res: AndroidSourceDirectorySet
/** The Android Resources directory for this source-set. */
@Configuring
Index: build-system/gradle-api/src/main/java/com/android/build/api/dsl/ApplicationExtension.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/ApplicationExtension.kt b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/ApplicationExtension.kt
--- a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/ApplicationExtension.kt (revision 17714bfb39bfed3988b5c4c914466a1e4985eb81)
+++ b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/ApplicationExtension.kt (revision 81f8d195ecb7eaae0906434625c5d469243d0e9f)
@@ -26,7 +26,6 @@
*
* Only the Android Gradle Plugin should create instances of interfaces in com.android.build.api.dsl.
*/
-@Restricted
interface ApplicationExtension :
CommonExtension<
ApplicationBuildFeatures,
@@ -40,14 +39,12 @@
// TODO(b/140406102)
/** Specify whether to include SDK dependency information in APKs and Bundles. */
- @get:Restricted
val dependenciesInfo: DependenciesInfo
/** Specify whether to include SDK dependency information in APKs and Bundles. */
@Configuring
fun dependenciesInfo(action: DependenciesInfo.() -> Unit)
- @get:Restricted
val bundle: Bundle
@Configuring
@@ -67,7 +64,6 @@
*
* For more information about the properties you can configure in this block, see [ApplicationPublishing]
*/
- @get:Restricted
val publishing: ApplicationPublishing
/**
Index: build-system/gradle-api/src/main/java/com/android/build/api/dsl/ApplicationInstallation.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/ApplicationInstallation.kt b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/ApplicationInstallation.kt
--- a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/ApplicationInstallation.kt (revision 17714bfb39bfed3988b5c4c914466a1e4985eb81)
+++ b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/ApplicationInstallation.kt (revision 81f8d195ecb7eaae0906434625c5d469243d0e9f)
@@ -27,6 +27,5 @@
@get:Incubating
@set:Incubating
@get:Restricted
- @set:Restricted
var enableBaselineProfile: Boolean
}
Index: build-system/gradle-api/src/main/java/com/android/build/api/dsl/ApplicationPublishing.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/ApplicationPublishing.kt b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/ApplicationPublishing.kt
--- a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/ApplicationPublishing.kt (revision 17714bfb39bfed3988b5c4c914466a1e4985eb81)
+++ b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/ApplicationPublishing.kt (revision 81f8d195ecb7eaae0906434625c5d469243d0e9f)
@@ -65,5 +65,4 @@
* }
* ```
*/
-@Restricted
interface ApplicationPublishing : Publishing<ApplicationSingleVariant>
Index: build-system/gradle-api/src/main/java/com/android/build/api/dsl/BaseFlavor.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/BaseFlavor.kt b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/BaseFlavor.kt
--- a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/BaseFlavor.kt (revision 17714bfb39bfed3988b5c4c914466a1e4985eb81)
+++ b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/BaseFlavor.kt (revision 81f8d195ecb7eaae0906434625c5d469243d0e9f)
@@ -41,7 +41,6 @@
* See [uses-sdk element documentation](http://developer.android.com/guide/topics/manifest/uses-sdk-element.html).
*/
@get:Restricted
- @set:Restricted
var minSdk: Int?
@Deprecated("Replaced by minSdk property")
@@ -100,7 +99,6 @@
* See [instrumentation](http://developer.android.com/guide/topics/manifest/instrumentation-element.html).
*/
@get:Restricted
- @set:Restricted
var testInstrumentationRunner: String?
/**
Index: build-system/gradle-api/src/main/java/com/android/build/api/dsl/BuildFeatures.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/BuildFeatures.kt b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/BuildFeatures.kt
--- a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/BuildFeatures.kt (revision 17714bfb39bfed3988b5c4c914466a1e4985eb81)
+++ b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/BuildFeatures.kt (revision 81f8d195ecb7eaae0906434625c5d469243d0e9f)
@@ -54,7 +54,6 @@
* More information about this feature at: TBD
*/
@get:Restricted
- @set:Restricted
var buildConfig: Boolean?
/**
Index: build-system/gradle-api/src/main/java/com/android/build/api/dsl/BuildType.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/BuildType.kt b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/BuildType.kt
--- a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/BuildType.kt (revision 17714bfb39bfed3988b5c4c914466a1e4985eb81)
+++ b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/BuildType.kt (revision 81f8d195ecb7eaae0906434625c5d469243d0e9f)
@@ -37,10 +37,8 @@
* [configuring build types](https://developer.android.com/studio/build#build-config)
* for more information.
*/
-@Restricted
interface BuildType : Named, VariantDimension, ExtensionAware {
- @get:Restricted
val dependencies: DependenciesExtension
@Configuring
fun dependencies(configure: DependenciesExtension.() -> Unit)
@@ -149,7 +147,6 @@
* [Shrink Your Code and Resources](https://developer.android.com/studio/build/shrink-code.html).
*/
@get:Restricted
- @set:Restricted
var isMinifyEnabled: Boolean
/**
Index: build-system/gradle-api/src/main/java/com/android/build/api/dsl/CommonExtension.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/CommonExtension.kt b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/CommonExtension.kt
--- a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/CommonExtension.kt (revision 17714bfb39bfed3988b5c4c914466a1e4985eb81)
+++ b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/CommonExtension.kt (revision 81f8d195ecb7eaae0906434625c5d469243d0e9f)
@@ -29,7 +29,6 @@
*
* Only the Android Gradle Plugin should create instances of this interface.
*/
-@Restricted
interface CommonExtension<
BuildFeaturesT : BuildFeatures,
BuildTypeT : BuildType,
@@ -39,7 +38,6 @@
InstallationT: Installation> {
- @get:Restricted
val allDependencies: DependenciesExtension
@Configuring
fun allDependencies(configure: DependenciesExtension.() -> Unit)
@@ -51,7 +49,6 @@
*/
@Suppress("DEPRECATION")
@Deprecated("Replaced by ", replaceWith = ReplaceWith("androidResources"))
- @get:Restricted
val aaptOptions: AaptOptions
/**
@@ -69,8 +66,6 @@
*
* For more information about the properties you can configure in this block, see [AndroidResources].
*/
-// TODO: generics are not supported in DCL
-// @get:Restricted
val androidResources: AndroidResourcesT
/**
@@ -111,8 +106,6 @@
*
* For more information about the properties you can configure in this block, see [AdbOptions].
*/
-// TODO: generics are not supported in DCL
-// @get:Restricted
val installation: InstallationT
/**
@@ -132,7 +125,6 @@
*
* For more information about the properties you can configure in this block, see [CompileOptions].
*/
- @get:Restricted
val compileOptions: CompileOptions
/**
@@ -148,8 +140,6 @@
/**
* A list of build features that can be enabled or disabled on the Android Project.
*/
-// TODO: generics are not supported in DCL
-// @get:Restricted
val buildFeatures: BuildFeaturesT
/**
@@ -224,7 +214,6 @@
*
* For more information about the properties you can configure in this block, see [DataBinding]
*/
- @get:Restricted
val dataBinding: DataBinding
/**
@@ -243,7 +232,6 @@
* For more information about the properties you can configure in this block, see [ViewBinding]
*/
- @get:Restricted
val viewBinding: ViewBinding
/**
@@ -263,7 +251,6 @@
@Suppress("DEPRECATION")
@get:Incubating
@Deprecated("Renamed to testCoverage", replaceWith = ReplaceWith("testCoverage"))
- @get:Restricted
val jacoco: JacocoOptions
/**
@@ -293,7 +280,6 @@
*
* For more information about the properties you can configure in this block, see [TestCoverage].
*/
- @get:Restricted
val testCoverage: TestCoverage
/**
@@ -320,7 +306,6 @@
*
* For more information about the properties you can configure in this block, see [Lint].
*/
- @get:Restricted
val lint: Lint
/**
@@ -375,7 +360,6 @@
*
* For more information about the properties you can configure in this block, see [Packaging].
*/
- @get:Restricted
val packaging: Packaging
/**
@@ -447,8 +431,6 @@
*
* For more information about the properties you can configure in this block, see [DefaultConfig].
*/
-// TODO: generics are not supported in DCL
-// @get:Restricted
val defaultConfig: DefaultConfigT
/**
@@ -511,7 +493,6 @@
*
* since 2.2.0
*/
- @get:Restricted
val externalNativeBuild: ExternalNativeBuild
/**
* Specifies options for external native build using [CMake](https://cmake.org/) or
@@ -540,7 +521,6 @@
* For more information about the properties you can configure in this block, see [TestOptions].
*/
@get:Incubating
- @get:Restricted
val testOptions: TestOptions
/**
@@ -559,7 +539,6 @@
*
* For more information about the properties you can configure in this block, see [Splits].
*/
- @get:Restricted
val splits: Splits
/**
@@ -572,7 +551,6 @@
@Configuring
fun splits(action: Splits.() -> Unit)
- @get:Restricted
val composeOptions: ComposeOptions
@Configuring
@@ -584,7 +562,6 @@
* Note that the Android plugin uses its own implementation of source sets. For more
* information about the properties you can configure in this block, see [AndroidSourceSet].
*/
- @get:Restricted
val sourceSets: SourceSetContainer
/**
@@ -688,7 +665,6 @@
* ```
*/
@get:Restricted
- @set:Restricted
var resourcePrefix: String?
/**
@@ -726,7 +702,6 @@
* This can be set on all Gradle projects with [com.android.build.api.dsl.SettingsExtension.ndkVersion]
*/
@get:Restricted
- @set:Restricted
var ndkVersion: String
/**
@@ -750,7 +725,6 @@
* This can be set on all Gradle projects with [com.android.build.api.dsl.SettingsExtension.ndkPath]
*/
@get:Restricted
- @set:Restricted
var ndkPath: String?
/**
@@ -781,7 +755,6 @@
* This can be set on all Gradle projects with [com.android.build.api.dsl.SettingsExtension.buildToolsVersion]
*/
@get:Restricted
- @set:Restricted
var buildToolsVersion: String
@Deprecated("Replaced by buildToolsVersion property")
@@ -866,7 +839,6 @@
* This can be set on all Gradle projects with [com.android.build.api.dsl.SettingsExtension.compileSdk]
*/
@get:Restricted
- @set:Restricted
var compileSdk: Int?
/**
@@ -877,7 +849,6 @@
* This can be set on all Gradle projects with [com.android.build.api.dsl.SettingsExtension.compileSdkExtension]
*/
@get:Restricted
- @set:Restricted
var compileSdkExtension: Int?
/**
@@ -891,7 +862,6 @@
* This can be set on all Gradle projects with [com.android.build.api.dsl.SettingsExtension.compileSdkPreview]
*/
@get:Restricted
- @set:Restricted
var compileSdkPreview: String?
/**
@@ -916,7 +886,6 @@
* any relative class names that are declared in the AndroidManifest.xml.
*/
@get:Restricted
- @set:Restricted
var namespace: String?
@Restricted
Index: build-system/gradle-api/src/main/java/com/android/build/api/dsl/CompileOptions.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/CompileOptions.kt b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/CompileOptions.kt
--- a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/CompileOptions.kt (revision 17714bfb39bfed3988b5c4c914466a1e4985eb81)
+++ b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/CompileOptions.kt (revision 81f8d195ecb7eaae0906434625c5d469243d0e9f)
@@ -22,7 +22,6 @@
/**
* Java compilation options.
*/
-@Restricted
interface CompileOptions {
// Because expressions that reference enums are not supported, this is a factory func that returns an enum
@Restricted
@@ -42,7 +41,6 @@
* - `"Version_1_6"`
*/
@get:Restricted
- @set:Restricted
var sourceCompatibility: JavaVersion
/**
@@ -71,7 +69,6 @@
* - `"Version_1_6"`
*/
@get:Restricted
- @set:Restricted
var targetCompatibility: JavaVersion
/**
@@ -90,11 +87,9 @@
/** Java source files encoding. */
@get:Restricted
- @set:Restricted
var encoding: String
/** Whether core library desugaring is enabled. */
@get:Restricted
- @set:Restricted
var isCoreLibraryDesugaringEnabled: Boolean
}
Index: build-system/gradle-api/src/main/java/com/android/build/api/dsl/DataBinding.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/DataBinding.kt b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/DataBinding.kt
--- a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/DataBinding.kt (revision 17714bfb39bfed3988b5c4c914466a1e4985eb81)
+++ b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/DataBinding.kt (revision 81f8d195ecb7eaae0906434625c5d469243d0e9f)
@@ -21,11 +21,9 @@
/**
* DSL object for configuring databinding options.
*/
-@Restricted
interface DataBinding {
/** The version of data binding to use. */
@get:Restricted
- @set:Restricted
var version: String?
/** Whether to add the default data binding adapters. */
@@ -38,7 +36,6 @@
* `android.defaults.databinding.addKtx` gradle property.
*/
@get:Restricted
- @set:Restricted
var addKtx: Boolean?
@Deprecated("deprecated, use enableForTests", ReplaceWith("enableForTests"))
Index: build-system/gradle-api/src/main/java/com/android/build/api/dsl/DependenciesExtension.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/DependenciesExtension.kt b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/DependenciesExtension.kt
--- a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/DependenciesExtension.kt (revision 17714bfb39bfed3988b5c4c914466a1e4985eb81)
+++ b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/DependenciesExtension.kt (revision 81f8d195ecb7eaae0906434625c5d469243d0e9f)
@@ -18,9 +18,7 @@
import org.gradle.api.artifacts.dsl.DependencyCollector
import org.gradle.api.artifacts.dsl.GradleDependencies
-import org.gradle.declarative.dsl.model.annotations.Restricted
-@Restricted
interface DependenciesExtension : GradleDependencies {
fun getApi(): DependencyCollector
fun getImplementation(): DependencyCollector
Index: build-system/gradle-api/src/main/java/com/android/build/api/dsl/Installation.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/Installation.kt b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/Installation.kt
--- a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/Installation.kt (revision 17714bfb39bfed3988b5c4c914466a1e4985eb81)
+++ b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/Installation.kt (revision 81f8d195ecb7eaae0906434625c5d469243d0e9f)
@@ -25,7 +25,6 @@
interface Installation {
/** The time out used for all adb operations. */
@get:Restricted
- @set:Restricted
var timeOutInMs: Int
/** The list of FULL_APK installation options. */
Index: build-system/gradle-api/src/main/java/com/android/build/api/dsl/Lint.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/Lint.kt b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/Lint.kt
--- a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/Lint.kt (revision 17714bfb39bfed3988b5c4c914466a1e4985eb81)
+++ b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/Lint.kt (revision 81f8d195ecb7eaae0906434625c5d469243d0e9f)
@@ -127,7 +127,6 @@
/** Whether lint should set the exit code of the process if errors are found */
@get:Restricted
- @set:Restricted
var abortOnError: Boolean
/**
@@ -135,7 +134,6 @@
* to the path lint was invoked from.
*/
@get:Restricted
- @set:Restricted
var absolutePaths: Boolean
/**
@@ -143,7 +141,6 @@
* default)
*/
@get:Restricted
- @set:Restricted
var noLines: Boolean
/**
@@ -151,22 +148,18 @@
* report files written)
*/
@get:Restricted
- @set:Restricted
var quiet: Boolean
/** Whether lint should check all warnings, including those off by default */
@get:Restricted
- @set:Restricted
var checkAllWarnings: Boolean
/** Returns whether lint will only check for errors (ignoring warnings) */
@get:Restricted
- @set:Restricted
var ignoreWarnings: Boolean
/** Whether lint should treat all warnings as errors */
@get:Restricted
- @set:Restricted
var warningsAsErrors: Boolean
/**
@@ -175,7 +168,6 @@
* errors, or checks that need to consider testing code such as the unused resource detector)
*/
@get:Restricted
- @set:Restricted
var checkTestSources: Boolean
/**
@@ -184,24 +176,20 @@
* look at test sources, such as the unused resource check.
*/
@get:Restricted
- @set:Restricted
var ignoreTestSources: Boolean
/**
* Whether lint should ignore all testFixtures sources.
*/
@get:Restricted
- @set:Restricted
var ignoreTestFixturesSources: Boolean
/** Returns whether lint should run checks on generated sources. */
@get:Restricted
- @set:Restricted
var checkGeneratedSources: Boolean
/** Whether lint should check all dependencies too as part of its analysis. Default is false. */
@get:Restricted
- @set:Restricted
var checkDependencies: Boolean
/**
@@ -209,7 +197,6 @@
* intentionally do this unconditionally, ignoring this setting.)
*/
@get:Restricted
- @set:Restricted
var explainIssues: Boolean
/**
@@ -217,7 +204,6 @@
* long messages, etc.)
*/
@get:Restricted
- @set:Restricted
var showAll: Boolean
/**
@@ -225,7 +211,6 @@
* with severity "fatal" are found, the release build is aborted.
*/
@get:Restricted
- @set:Restricted
var checkReleaseBuilds: Boolean
/**
@@ -233,7 +218,6 @@
* severities etc to use when a project does not have more specific information.
*/
@get:Restricted
- @set:Restricted
var lintConfig: File?
/**
@@ -248,7 +232,6 @@
* will be copied to the specified location.
*/
@get:Restricted
- @set:Restricted
var textReport: Boolean
/**
@@ -256,7 +239,6 @@
* [htmlOutput].
*/
@get:Restricted
- @set:Restricted
var htmlReport: Boolean
/**
@@ -264,7 +246,6 @@
* Default is false. The location can be controlled by [sarifOutput].
*/
@get:Restricted
- @set:Restricted
var sarifReport: Boolean
/**
@@ -272,7 +253,6 @@
* [xmlOutput].
*/
@get:Restricted
- @set:Restricted
var xmlReport: Boolean
/**
@@ -281,7 +261,6 @@
* To output the lint report to `stdout` set [textReport]`=true`, and leave [textOutput] unset.
*/
@get:Restricted
- @set:Restricted
var textOutput: File?
/**
Index: build-system/gradle-api/src/main/java/com/android/build/api/dsl/TestCoverage.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/TestCoverage.kt b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/TestCoverage.kt
--- a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/TestCoverage.kt (revision 17714bfb39bfed3988b5c4c914466a1e4985eb81)
+++ b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/TestCoverage.kt (revision 81f8d195ecb7eaae0906434625c5d469243d0e9f)
@@ -19,12 +19,10 @@
import org.gradle.declarative.dsl.model.annotations.Restricted
/** Settings related to the gathering of code-coverage data from tests */
-@Restricted
interface TestCoverage {
/**
* The version of JaCoCo to use.
*/
@get:Restricted
- @set:Restricted
var jacocoVersion: String
}
Index: build-system/gradle-api/src/main/java/com/android/build/api/dsl/TestedExtension.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/TestedExtension.kt b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/TestedExtension.kt
--- a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/TestedExtension.kt (revision 17714bfb39bfed3988b5c4c914466a1e4985eb81)
+++ b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/TestedExtension.kt (revision 81f8d195ecb7eaae0906434625c5d469243d0e9f)
@@ -26,7 +26,6 @@
*
* Only the Android Gradle Plugin should create instances of this interface.
*/
-@Restricted
interface TestedExtension {
/**
* Specifies the
Index: build-system/gradle-api/src/main/java/com/android/build/api/dsl/ViewBinding.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/ViewBinding.kt b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/ViewBinding.kt
--- a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/ViewBinding.kt (revision 17714bfb39bfed3988b5c4c914466a1e4985eb81)
+++ b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/ViewBinding.kt (revision 81f8d195ecb7eaae0906434625c5d469243d0e9f)
@@ -21,11 +21,9 @@
/**
* DSL object for configuring viewbinding options.
*/
-@Restricted
interface ViewBinding {
@get:Restricted
- @set:Restricted
/** Whether to enable view binding. */
var enable: Boolean
}
Index: build-system/gradle-core/src/main/java/com/android/build/gradle/api/ViewBindingOptions.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/build-system/gradle-core/src/main/java/com/android/build/gradle/api/ViewBindingOptions.kt b/build-system/gradle-core/src/main/java/com/android/build/gradle/api/ViewBindingOptions.kt
--- a/build-system/gradle-core/src/main/java/com/android/build/gradle/api/ViewBindingOptions.kt (revision 17714bfb39bfed3988b5c4c914466a1e4985eb81)
+++ b/build-system/gradle-core/src/main/java/com/android/build/gradle/api/ViewBindingOptions.kt (revision 81f8d195ecb7eaae0906434625c5d469243d0e9f)
@@ -18,11 +18,9 @@
import org.gradle.declarative.dsl.model.annotations.Restricted
-@Restricted
interface ViewBindingOptions {
@get:Restricted
- @set:Restricted
/** Whether to enable view binding. */
var isEnabled: Boolean
}
Index: build-system/gradle-core/src/main/java/com/android/build/gradle/internal/dsl/BaseAppModuleExtension.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/build-system/gradle-core/src/main/java/com/android/build/gradle/internal/dsl/BaseAppModuleExtension.kt b/build-system/gradle-core/src/main/java/com/android/build/gradle/internal/dsl/BaseAppModuleExtension.kt
--- a/build-system/gradle-core/src/main/java/com/android/build/gradle/internal/dsl/BaseAppModuleExtension.kt (revision 17714bfb39bfed3988b5c4c914466a1e4985eb81)
+++ b/build-system/gradle-core/src/main/java/com/android/build/gradle/internal/dsl/BaseAppModuleExtension.kt (revision 81f8d195ecb7eaae0906434625c5d469243d0e9f)
@@ -37,7 +37,6 @@
import javax.inject.Inject
/** The `android` extension for base feature module (application plugin). */
-@Restricted
open class BaseAppModuleExtension @Inject constructor(
dslServices: DslServices,
bootClasspathConfig: BootClasspathConfig,
Subject: [PATCH] Use `@Adding` for non-factory functions
---
Index: build-system/gradle-api/src/main/java/com/android/build/api/dsl/CompileOptions.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/CompileOptions.kt b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/CompileOptions.kt
--- a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/CompileOptions.kt (revision 81f8d195ecb7eaae0906434625c5d469243d0e9f)
+++ b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/CompileOptions.kt (revision 4f8544e5e17a92ab63998f9a2377af996997664c)
@@ -17,6 +17,7 @@
package com.android.build.api.dsl
import org.gradle.api.JavaVersion
+import org.gradle.declarative.dsl.model.annotations.Adding
import org.gradle.declarative.dsl.model.annotations.Restricted
/**
@@ -54,7 +55,7 @@
* - `JavaVersion.Version_1_6`
* - `"Version_1_6"`
*/
- @Restricted
+ @Adding
fun sourceCompatibility(sourceCompatibility: String)
/**
@@ -82,7 +83,7 @@
* - `JavaVersion.Version_1_6`
* - `"Version_1_6"`
*/
- @Restricted
+ @Adding
fun targetCompatibility(targetCompatibility: String)
/** Java source files encoding. */
Subject: [PATCH] Example workaround: include overridden generic function from the supertype
---
Index: build-system/gradle-api/src/main/java/com/android/build/api/dsl/LibraryExtension.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/LibraryExtension.kt b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/LibraryExtension.kt
--- a/build-system/gradle-api/src/main/java/com/android/build/api/dsl/LibraryExtension.kt (revision 4f8544e5e17a92ab63998f9a2377af996997664c)
+++ b/build-system/gradle-api/src/main/java/com/android/build/api/dsl/LibraryExtension.kt (revision c5362baf4da2614c4c87816b5b9c3ba5a07ba25f)
@@ -18,6 +18,7 @@
import org.gradle.api.Incubating
import org.gradle.api.NamedDomainObjectContainer
+import org.gradle.declarative.dsl.model.annotations.Configuring
/**
* Extension for the Android Library Gradle Plugin.
@@ -63,4 +64,7 @@
val privacySandbox: PrivacySandbox
fun privacySandbox(action: PrivacySandbox.() -> Unit)
+
+ @Configuring
+ override fun defaultConfig(action: LibraryDefaultConfig.() -> Unit)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment