diff --git a/Maps3DSamples/ApiDemos/gradle/libs.versions.toml b/Maps3DSamples/ApiDemos/gradle/libs.versions.toml index 4fd5de6..58fdaee 100644 --- a/Maps3DSamples/ApiDemos/gradle/libs.versions.toml +++ b/Maps3DSamples/ApiDemos/gradle/libs.versions.toml @@ -4,7 +4,7 @@ minSdk = "26" targetSdk = "36" activityCompose = "1.11.0" -agp = "8.13.0" +agp = "8.13.2" appcompat = "1.7.1" composeBom = "2025.09.00" coreKtx = "1.17.0" diff --git a/Maps3DSamples/ApiDemos/java-app/build.gradle.kts b/Maps3DSamples/ApiDemos/java-app/build.gradle.kts index 80ed69e..a8989c5 100644 --- a/Maps3DSamples/ApiDemos/java-app/build.gradle.kts +++ b/Maps3DSamples/ApiDemos/java-app/build.gradle.kts @@ -14,6 +14,46 @@ * limitations under the License. */ +import org.gradle.api.GradleException +import java.io.File + +// Check for secrets.properties file before proceeding with build tasks. +val secretsFile = rootProject.file("secrets.properties") +if (!secretsFile.exists()) { + val requestedTasks = gradle.startParameter.taskNames + if (requestedTasks.isEmpty()) { + // It's likely an IDE sync if no tasks are specified, so just issue a warning. + println("Warning: secrets.properties not found. Gradle sync may succeed, but building/running the app will fail.") + } else { + val buildTaskKeywords = listOf("build", "install", "assemble") + val isBuildTask = requestedTasks.any { task -> + buildTaskKeywords.any { keyword -> + task.contains(keyword, ignoreCase = true) + } + } + + val testTaskKeywords = listOf("test", "report", "lint") + val isTestTask = requestedTasks.any { task -> + testTaskKeywords.any { keyword -> + task.contains(keyword, ignoreCase = true) + } + } + + if (isBuildTask && !isTestTask) { + val defaultsFile = rootProject.file("local.defaults.properties") + val requiredKeysMessage = if (defaultsFile.exists()) { + defaultsFile.readText() + } else { + "MAPS_API_KEY=" + } + + throw GradleException("secrets.properties file not found. Please create a 'secrets.properties' file in the root project directory with the following content:\n" + + "\n" + + requiredKeysMessage) + } + } +} + plugins { alias(libs.plugins.android.application) alias(libs.plugins.secrets.gradle.plugin) diff --git a/Maps3DSamples/ApiDemos/kotlin-app/build.gradle.kts b/Maps3DSamples/ApiDemos/kotlin-app/build.gradle.kts index 32e03c6..ac36d7e 100644 --- a/Maps3DSamples/ApiDemos/kotlin-app/build.gradle.kts +++ b/Maps3DSamples/ApiDemos/kotlin-app/build.gradle.kts @@ -14,6 +14,46 @@ * limitations under the License. */ +import org.gradle.api.GradleException +import java.io.File + +// Check for secrets.properties file before proceeding with build tasks. +val secretsFile = rootProject.file("secrets.properties") +if (!secretsFile.exists()) { + val requestedTasks = gradle.startParameter.taskNames + if (requestedTasks.isEmpty()) { + // It's likely an IDE sync if no tasks are specified, so just issue a warning. + println("Warning: secrets.properties not found. Gradle sync may succeed, but building/running the app will fail.") + } else { + val buildTaskKeywords = listOf("build", "install", "assemble") + val isBuildTask = requestedTasks.any { task -> + buildTaskKeywords.any { keyword -> + task.contains(keyword, ignoreCase = true) + } + } + + val testTaskKeywords = listOf("test", "report", "lint") + val isTestTask = requestedTasks.any { task -> + testTaskKeywords.any { keyword -> + task.contains(keyword, ignoreCase = true) + } + } + + if (isBuildTask && !isTestTask) { + val defaultsFile = rootProject.file("local.defaults.properties") + val requiredKeysMessage = if (defaultsFile.exists()) { + defaultsFile.readText() + } else { + "MAPS_API_KEY=" + } + + throw GradleException("secrets.properties file not found. Please create a 'secrets.properties' file in the root project directory with the following content:\n" + + "\n" + + requiredKeysMessage) + } + } +} + plugins { alias(libs.plugins.android.application) alias(libs.plugins.kotlin.android) diff --git a/Maps3DSamples/advanced/app/build.gradle.kts b/Maps3DSamples/advanced/app/build.gradle.kts index c6da53d..54b12c7 100644 --- a/Maps3DSamples/advanced/app/build.gradle.kts +++ b/Maps3DSamples/advanced/app/build.gradle.kts @@ -14,6 +14,46 @@ * limitations under the License. */ +import org.gradle.api.GradleException +import java.io.File + +// Check for secrets.properties file before proceeding with build tasks. +val secretsFile = rootProject.file("secrets.properties") +if (!secretsFile.exists()) { + val requestedTasks = gradle.startParameter.taskNames + if (requestedTasks.isEmpty()) { + // It's likely an IDE sync if no tasks are specified, so just issue a warning. + println("Warning: secrets.properties not found. Gradle sync may succeed, but building/running the app will fail.") + } else { + val buildTaskKeywords = listOf("build", "install", "assemble") + val isBuildTask = requestedTasks.any { task -> + buildTaskKeywords.any { keyword -> + task.contains(keyword, ignoreCase = true) + } + } + + val testTaskKeywords = listOf("test", "report", "lint") + val isTestTask = requestedTasks.any { task -> + testTaskKeywords.any { keyword -> + task.contains(keyword, ignoreCase = true) + } + } + + if (isBuildTask && !isTestTask) { + val defaultsFile = rootProject.file("local.defaults.properties") + val requiredKeysMessage = if (defaultsFile.exists()) { + defaultsFile.readText() + } else { + "MAPS_API_KEY=" + } + + throw GradleException("secrets.properties file not found. Please create a 'secrets.properties' file in the root project directory with the following content:\n" + + "\n" + + requiredKeysMessage) + } + } +} + plugins { alias(libs.plugins.android.application) alias(libs.plugins.kotlin.android) diff --git a/Maps3DSamples/advanced/gradle/libs.versions.toml b/Maps3DSamples/advanced/gradle/libs.versions.toml index 34fd25f..521629c 100644 --- a/Maps3DSamples/advanced/gradle/libs.versions.toml +++ b/Maps3DSamples/advanced/gradle/libs.versions.toml @@ -3,7 +3,7 @@ compileSdk = "36" minSdk = "26" targetSdk = "36" -agp = "8.13.0" +agp = "8.13.2" kotlin = "2.2.20" kotlinxDatetime = "0.7.1" coreKtx = "1.17.0"