From 6042848a43c349e534f4c50d212a3690c7119760 Mon Sep 17 00:00:00 2001 From: cartland Date: Fri, 8 Aug 2025 12:20:13 -0700 Subject: [PATCH 1/9] Fix: Get ``./gradlew build`` to succeed This disables several checks to make the build succeed. We should try to enable the checks and fix the underlying issues. - Adds missing BLUETOOTH_CONNECT and BLUETOOTH_SCAN permissions to AndroidManifest.xml for BluetoothLe sample. - Adds ACCESS_COARSE_LOCATION and ACCESS_FINE_LOCATION to AndroidManifest.xml and uses tools:ignore to suppress the CoarseFineLocation warning. - Adds `@SuppressWarnings("MissingPermission")` annotations to setUpBLE methods in MainActivity.java and MainActivity.kt, and scanLeDevice method in DeviceScanActivity.kt to suppress lint warnings. - Increases Xmx value to 4g in gradle.properties. - Disables lint checks during release builds in gradle.properties. - Sets an icon to the Credential Provider in identity/credentialmanager/src/main/AndroidManifest.xml. --- bluetoothle/src/main/AndroidManifest.xml | 7 ++++--- .../com/sample/android/bluetoothle/java/MainActivity.java | 1 + .../android/bluetoothle/kotlin/DeviceScanActivity.kt | 1 + .../com/sample/android/bluetoothle/kotlin/MainActivity.kt | 1 + compose/snippets/build.gradle.kts | 2 +- gradle.properties | 6 ++++-- identity/credentialmanager/src/main/AndroidManifest.xml | 2 +- 7 files changed, 13 insertions(+), 7 deletions(-) diff --git a/bluetoothle/src/main/AndroidManifest.xml b/bluetoothle/src/main/AndroidManifest.xml index 1661e746b..131bd1c8b 100644 --- a/bluetoothle/src/main/AndroidManifest.xml +++ b/bluetoothle/src/main/AndroidManifest.xml @@ -1,9 +1,12 @@ + xmlns:tools="http://schemas.android.com/tools"> + + @@ -23,6 +26,4 @@ - - \ No newline at end of file diff --git a/bluetoothle/src/main/java/com/sample/android/bluetoothle/java/MainActivity.java b/bluetoothle/src/main/java/com/sample/android/bluetoothle/java/MainActivity.java index b296ce70b..8ba6483ea 100644 --- a/bluetoothle/src/main/java/com/sample/android/bluetoothle/java/MainActivity.java +++ b/bluetoothle/src/main/java/com/sample/android/bluetoothle/java/MainActivity.java @@ -19,6 +19,7 @@ protected void onCreate(Bundle savedInstanceState) { setContentView(R.layout.activity_main); } + @SuppressWarnings("MissingPermission") private void setUpBLE() { // [START get_bluetooth_adapter] // Initializes Bluetooth adapter. diff --git a/bluetoothle/src/main/java/com/sample/android/bluetoothle/kotlin/DeviceScanActivity.kt b/bluetoothle/src/main/java/com/sample/android/bluetoothle/kotlin/DeviceScanActivity.kt index 8ed32d5fa..10612550b 100644 --- a/bluetoothle/src/main/java/com/sample/android/bluetoothle/kotlin/DeviceScanActivity.kt +++ b/bluetoothle/src/main/java/com/sample/android/bluetoothle/kotlin/DeviceScanActivity.kt @@ -47,6 +47,7 @@ class DeviceScanActivity : ListActivity() { // Stops scanning after 10 seconds. private val SCAN_PERIOD: Long = 10000 + @SuppressWarnings("MissingPermission") private fun scanLeDevice() { if (!mScanning) { // Stops scanning after a pre-defined scan period. handler.postDelayed({ diff --git a/bluetoothle/src/main/java/com/sample/android/bluetoothle/kotlin/MainActivity.kt b/bluetoothle/src/main/java/com/sample/android/bluetoothle/kotlin/MainActivity.kt index a8857b4aa..22af18a93 100644 --- a/bluetoothle/src/main/java/com/sample/android/bluetoothle/kotlin/MainActivity.kt +++ b/bluetoothle/src/main/java/com/sample/android/bluetoothle/kotlin/MainActivity.kt @@ -31,6 +31,7 @@ class MainActivity : AppCompatActivity() { super.onCreate(savedInstanceState) } + @SuppressWarnings("MissingPermission") private fun setUpBLE() { // [START get_bluetooth_adapter] // Initializes Bluetooth adapter. diff --git a/compose/snippets/build.gradle.kts b/compose/snippets/build.gradle.kts index c8d728da0..96c21e87a 100644 --- a/compose/snippets/build.gradle.kts +++ b/compose/snippets/build.gradle.kts @@ -163,4 +163,4 @@ dependencies { androidTestImplementation(libs.androidx.compose.ui.test.junit4.accessibility) debugImplementation(libs.androidx.compose.ui.test.manifest) -} +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 2dedea847..8c04445bb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,14 +4,13 @@ # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. # Default value: -Xmx1024m -XX:MaxPermSize=256m -# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 # # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true #Mon May 22 14:59:56 BST 2023 -org.gradle.jvmargs=-Xmx2048m +org.gradle.jvmargs=-Xmx4g # Turn on parallel compilation, caching and on-demand configuration org.gradle.configureondemand=true @@ -28,3 +27,6 @@ kotlin.code.style=official # Enable R8 full mode. android.enableR8.fullMode=true +android.lint.checkReleaseBuilds=false +android.lint.checkAllWarnings=false +android.lint.abortOnError=false \ No newline at end of file diff --git a/identity/credentialmanager/src/main/AndroidManifest.xml b/identity/credentialmanager/src/main/AndroidManifest.xml index a2ec1cef8..fb060cc44 100644 --- a/identity/credentialmanager/src/main/AndroidManifest.xml +++ b/identity/credentialmanager/src/main/AndroidManifest.xml @@ -45,7 +45,7 @@ android:enabled="true" android:exported="true" android:label="My Credential Provider" - android:icon="" + android:icon="@mipmap/ic_launcher" android:permission="android.permission.BIND_CREDENTIAL_PROVIDER_SERVICE" tools:targetApi="upside_down_cake"> From 744991b1cd2ee475fa8163293f1815142f5682f1 Mon Sep 17 00:00:00 2001 From: cartland Date: Fri, 8 Aug 2025 12:36:41 -0700 Subject: [PATCH 2/9] Revert gradle.properties to 6042848a43c349e534f4c50d212a3690c7119760 --- gradle.properties | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/gradle.properties b/gradle.properties index 8c04445bb..2dedea847 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,13 +4,14 @@ # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. # Default value: -Xmx1024m -XX:MaxPermSize=256m +# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 # # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true #Mon May 22 14:59:56 BST 2023 -org.gradle.jvmargs=-Xmx4g +org.gradle.jvmargs=-Xmx2048m # Turn on parallel compilation, caching and on-demand configuration org.gradle.configureondemand=true @@ -27,6 +28,3 @@ kotlin.code.style=official # Enable R8 full mode. android.enableR8.fullMode=true -android.lint.checkReleaseBuilds=false -android.lint.checkAllWarnings=false -android.lint.abortOnError=false \ No newline at end of file From 476c77602cf4ff15ff27ef0477cac8230a2a93ac Mon Sep 17 00:00:00 2001 From: cartland Date: Fri, 8 Aug 2025 13:06:26 -0700 Subject: [PATCH 3/9] Use @RequiresPermission instead of @SuppressWarnings - @SuppressWarnings("MissingPermission") + @RequiresPermission(Manifest.permission.BLUETOOTH_CONNECT) --- .../com/sample/android/bluetoothle/java/MainActivity.java | 8 +++++--- .../android/bluetoothle/kotlin/DeviceScanActivity.kt | 4 +++- .../com/sample/android/bluetoothle/kotlin/MainActivity.kt | 4 +++- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/bluetoothle/src/main/java/com/sample/android/bluetoothle/java/MainActivity.java b/bluetoothle/src/main/java/com/sample/android/bluetoothle/java/MainActivity.java index 8ba6483ea..5e25d58e6 100644 --- a/bluetoothle/src/main/java/com/sample/android/bluetoothle/java/MainActivity.java +++ b/bluetoothle/src/main/java/com/sample/android/bluetoothle/java/MainActivity.java @@ -1,13 +1,15 @@ package com.sample.android.bluetoothle.java; -import androidx.appcompat.app.AppCompatActivity; - +import android.Manifest; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothManager; import android.content.Context; import android.content.Intent; import android.os.Bundle; +import androidx.annotation.RequiresPermission; +import androidx.appcompat.app.AppCompatActivity; + import com.sample.android.bluetoothle.R; public class MainActivity extends AppCompatActivity { @@ -19,7 +21,7 @@ protected void onCreate(Bundle savedInstanceState) { setContentView(R.layout.activity_main); } - @SuppressWarnings("MissingPermission") + @RequiresPermission(Manifest.permission.BLUETOOTH_CONNECT) private void setUpBLE() { // [START get_bluetooth_adapter] // Initializes Bluetooth adapter. diff --git a/bluetoothle/src/main/java/com/sample/android/bluetoothle/kotlin/DeviceScanActivity.kt b/bluetoothle/src/main/java/com/sample/android/bluetoothle/kotlin/DeviceScanActivity.kt index 10612550b..585a9e3f5 100644 --- a/bluetoothle/src/main/java/com/sample/android/bluetoothle/kotlin/DeviceScanActivity.kt +++ b/bluetoothle/src/main/java/com/sample/android/bluetoothle/kotlin/DeviceScanActivity.kt @@ -16,11 +16,13 @@ package com.sample.android.bluetoothle.kotlin +import android.Manifest import android.app.ListActivity import android.bluetooth.BluetoothAdapter import android.bluetooth.le.ScanCallback import android.bluetooth.le.ScanResult import android.os.Handler +import androidx.annotation.RequiresPermission import com.sample.android.bluetoothle.java.LeDeviceListAdapter /** @@ -47,7 +49,7 @@ class DeviceScanActivity : ListActivity() { // Stops scanning after 10 seconds. private val SCAN_PERIOD: Long = 10000 - @SuppressWarnings("MissingPermission") + @RequiresPermission(Manifest.permission.BLUETOOTH_SCAN) private fun scanLeDevice() { if (!mScanning) { // Stops scanning after a pre-defined scan period. handler.postDelayed({ diff --git a/bluetoothle/src/main/java/com/sample/android/bluetoothle/kotlin/MainActivity.kt b/bluetoothle/src/main/java/com/sample/android/bluetoothle/kotlin/MainActivity.kt index 22af18a93..95fe7df91 100644 --- a/bluetoothle/src/main/java/com/sample/android/bluetoothle/kotlin/MainActivity.kt +++ b/bluetoothle/src/main/java/com/sample/android/bluetoothle/kotlin/MainActivity.kt @@ -16,11 +16,13 @@ package com.sample.android.bluetoothle.kotlin +import android.Manifest import android.bluetooth.BluetoothAdapter import android.bluetooth.BluetoothManager import android.content.Context import android.content.Intent import android.os.Bundle +import androidx.annotation.RequiresPermission import androidx.appcompat.app.AppCompatActivity class MainActivity : AppCompatActivity() { @@ -31,7 +33,7 @@ class MainActivity : AppCompatActivity() { super.onCreate(savedInstanceState) } - @SuppressWarnings("MissingPermission") + @RequiresPermission(Manifest.permission.BLUETOOTH_CONNECT) private fun setUpBLE() { // [START get_bluetooth_adapter] // Initializes Bluetooth adapter. From 26606d8294a10166290a85981499bc801ea66a1f Mon Sep 17 00:00:00 2001 From: cartland Date: Fri, 8 Aug 2025 13:10:24 -0700 Subject: [PATCH 4/9] Simplify permissions ACCESS_FINE_LOCATION and ACCESS_COARSE_LOCATION --- bluetoothle/src/main/AndroidManifest.xml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/bluetoothle/src/main/AndroidManifest.xml b/bluetoothle/src/main/AndroidManifest.xml index 131bd1c8b..d15b213e2 100644 --- a/bluetoothle/src/main/AndroidManifest.xml +++ b/bluetoothle/src/main/AndroidManifest.xml @@ -1,12 +1,8 @@ - + - - @@ -26,4 +22,6 @@ + + \ No newline at end of file From fd8321736ce023c54ec12741c0d0aa39cd2dac33 Mon Sep 17 00:00:00 2001 From: cartland Date: Fri, 8 Aug 2025 13:22:32 -0700 Subject: [PATCH 5/9] Revert compose/snippets/build.gradle.kts --- compose/snippets/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compose/snippets/build.gradle.kts b/compose/snippets/build.gradle.kts index 96c21e87a..c8d728da0 100644 --- a/compose/snippets/build.gradle.kts +++ b/compose/snippets/build.gradle.kts @@ -163,4 +163,4 @@ dependencies { androidTestImplementation(libs.androidx.compose.ui.test.junit4.accessibility) debugImplementation(libs.androidx.compose.ui.test.manifest) -} \ No newline at end of file +} From b2c85acb45661349fa1feb30fd47911f903011e7 Mon Sep 17 00:00:00 2001 From: cartland Date: Fri, 8 Aug 2025 14:10:01 -0700 Subject: [PATCH 6/9] Update build.yml and xr/build.gradle.kts - Add `./gradlew build` to build all modules used by the root project - Add --stacktrace to gradlew commands in build.yml - Update Kotlin jvmToolchain in xr/build.gradle.kts to 17 --- .github/workflows/build.yml | 16 +++++++++------- xr/build.gradle.kts | 4 ++-- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bca9bc586..69d82ee62 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -38,16 +38,18 @@ jobs: distribution: 'zulu' java-version: '17' - name: Build Compose - run: ./gradlew :compose:snippets:build + run: ./gradlew :compose:snippets:build --stacktrace - name: Build recompose snippets - run: ./gradlew :compose:recomposehighlighter:build + run: ./gradlew :compose:recomposehighlighter:build --stacktrace - name: Build kotlin snippets - run: ./gradlew :kotlin:build + run: ./gradlew :kotlin:build --stacktrace - name: Build Wear snippets - run: ./gradlew :wear:build + run: ./gradlew :wear:build --stacktrace - name: Build misc snippets - run: ./gradlew :misc:build + run: ./gradlew :misc:build --stacktrace - name: Build XR snippets - run: ./gradlew :xr:build + run: ./gradlew :xr:build --stacktrace - name: Build Watch Face Push validation snippets - run: ./gradlew :watchfacepush:validator:run + run: ./gradlew :watchfacepush:validator:run --stacktrace + - name: Build All + run: ./gradlew build --stacktrace diff --git a/xr/build.gradle.kts b/xr/build.gradle.kts index 138383c8d..65fb37c96 100644 --- a/xr/build.gradle.kts +++ b/xr/build.gradle.kts @@ -19,8 +19,8 @@ android { sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 } - kotlinOptions { - jvmTarget = "11" + kotlin { + jvmToolchain(17) } buildFeatures { compose = true From a1c6d33574804c82b194e1e1e9223a5b10eeca3a Mon Sep 17 00:00:00 2001 From: cartland Date: Fri, 8 Aug 2025 14:20:01 -0700 Subject: [PATCH 7/9] Revert Kotlin jvmToolchain to 11 in xr/build.gradle.kts --- xr/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xr/build.gradle.kts b/xr/build.gradle.kts index 65fb37c96..51c224f20 100644 --- a/xr/build.gradle.kts +++ b/xr/build.gradle.kts @@ -20,7 +20,7 @@ android { targetCompatibility = JavaVersion.VERSION_11 } kotlin { - jvmToolchain(17) + jvmToolchain(11) } buildFeatures { compose = true From 58a464d8e314f321829e4a466a062dafc75c3e49 Mon Sep 17 00:00:00 2001 From: cartland Date: Mon, 11 Aug 2025 12:15:35 -0700 Subject: [PATCH 8/9] Remove duplicate build.yml steps The following are redundant because they will run during `./gradlew build --stacktrace` - name: Build Compose run: ./gradlew :compose:snippets:build --stacktrace - name: Build recompose snippets run: ./gradlew :compose:recomposehighlighter:build --stacktrace - name: Build kotlin snippets run: ./gradlew :kotlin:build --stacktrace - name: Build Wear snippets run: ./gradlew :wear:build --stacktrace - name: Build misc snippets run: ./gradlew :misc:build --stacktrace - name: Build XR snippets run: ./gradlew :xr:build --stacktrace --- .github/workflows/build.yml | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 69d82ee62..e7c34213d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -37,18 +37,6 @@ jobs: with: distribution: 'zulu' java-version: '17' - - name: Build Compose - run: ./gradlew :compose:snippets:build --stacktrace - - name: Build recompose snippets - run: ./gradlew :compose:recomposehighlighter:build --stacktrace - - name: Build kotlin snippets - run: ./gradlew :kotlin:build --stacktrace - - name: Build Wear snippets - run: ./gradlew :wear:build --stacktrace - - name: Build misc snippets - run: ./gradlew :misc:build --stacktrace - - name: Build XR snippets - run: ./gradlew :xr:build --stacktrace - name: Build Watch Face Push validation snippets run: ./gradlew :watchfacepush:validator:run --stacktrace - name: Build All From f39156d0814d8be7a4b3ee26791f71b0b541662f Mon Sep 17 00:00:00 2001 From: cartland Date: Mon, 11 Aug 2025 12:19:48 -0700 Subject: [PATCH 9/9] Refactor build.yml to build all modules first --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e7c34213d..72e815a31 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -37,7 +37,7 @@ jobs: with: distribution: 'zulu' java-version: '17' - - name: Build Watch Face Push validation snippets - run: ./gradlew :watchfacepush:validator:run --stacktrace - name: Build All run: ./gradlew build --stacktrace + - name: Build Watch Face Push validation snippets + run: ./gradlew :watchfacepush:validator:run --stacktrace