Skip to content

Commit

Permalink
Add support for Android Gradle plugin 8.5 (#1172)
Browse files Browse the repository at this point in the history
  • Loading branch information
mhsmith committed Jun 4, 2024
1 parent 16b72ae commit c5cfaa2
Show file tree
Hide file tree
Showing 5 changed files with 108 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
// Plugin versions are configured in settings.gradle.kts, because dynamic versions
// are not possible here. See
// https://docs.gradle.org/current/userguide/plugins.html#sec:plugin_version_management
//
// Listing the plugins in settings.gradle.kts is enough to enable the `plugins`
// syntax in subprojects, but the `apply` syntax requires them to be listed here as
// well.
id("com.android.application") apply false
id("com.android.library") apply false
id("com.android.dynamic-feature") apply false
id("org.jetbrains.kotlin.android") apply false
id("com.chaquo.python") apply false
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# The test script uses this to set JAVA_HOME.
chaquopy.java.version=17

agpVersion=8.5.0-rc01

# These variables will be filled in by the test script.
chaquopyRepository=
chaquopyVersion=

# Gradle Daemon will terminate itself after specified number of idle milliseconds. Default is
# 10800000 (3 hours), but that can overload the machine when running integration tests on many
# versions. Reduce to 30 minutes.
org.gradle.daemon.idletimeout=1800000

# Default settings generated by the new project wizard:

# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. For more details, visit
# https://developer.android.com/r/tools/gradle-multi-project-decoupled-projects
# org.gradle.parallel=true
# AndroidX package structure to make it clearer which packages are bundled with the
# Android operating system, and which are packaged with your app's APK
# https://developer.android.com/topic/libraries/support-library/androidx-rn
android.useAndroidX=true
# Kotlin code style for this project: "official" or "obsolete":
kotlin.code.style=official
# Enables namespacing of each library's R class so that its R class includes only the
# resources declared in the library itself and none from the library's dependencies,
# thereby reducing the size of the R class for that library
android.nonTransitiveRClass=true
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
pluginManagement {
// These are defined in gradle.properties.
val chaquopyRepository: String by settings
val chaquopyVersion: String by settings
val agpVersion: String by settings

repositories {
maven { url = uri(chaquopyRepository) }
google {
content {
includeGroupByRegex("com\\.android.*")
includeGroupByRegex("com\\.google.*")
includeGroupByRegex("androidx.*")
}
}
mavenCentral()
gradlePluginPortal()
}

plugins {
id("com.android.application") version agpVersion
id("com.android.library") version agpVersion
id("com.android.dynamic-feature") version agpVersion
id("org.jetbrains.kotlin.android") version "1.9.0"
id("com.chaquo.python") version chaquopyVersion
}
}

dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
}
}

rootProject.name = "My Application"

for (f in rootDir.listFiles()!!) {
for (ext in listOf("gradle", "gradle.kts")) {
if (File(f, "build.$ext").exists()) {
include(f.name)
break
}
}
}
11 changes: 9 additions & 2 deletions product/gradle-plugin/src/test/integration/test_gradle_plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -619,8 +619,15 @@ def test_conflict(self):
run.rerun("PythonSrc/conflict_include", **kwargs)

def conflict_error(self, variant, filename):
return (fr"(?s)failed for task ':app:merge{variant}PythonSources'.*"
fr'Encountered duplicate path "{filename}"')
return (
fr"(?s)failed for task ':app:merge{variant}PythonSources'.*" + (
fr'Encountered duplicate path "{filename}"'
if agp_version_info < (8, 5)

# No leading quote, because the message includes the full path.
else fr"{filename}' has already been copied there"
)
)

def test_set_dirs(self):
self.RunGradle("base", "PythonSrc/set_dirs", app=["two.py"])
Expand Down

0 comments on commit c5cfaa2

Please sign in to comment.