From 10b103f58cdece85494d8385b0733ed4a3cd341f Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Mon, 11 Sep 2023 11:54:06 -0400 Subject: [PATCH 01/11] Removing dispatcher from Bitmap writing, to fix crash when picture is being written to at the same time as this. --- .../graphics/AdvancedGraphicsSnippets.kt | 25 +++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt index 63d3300ba..715550da0 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt @@ -28,6 +28,7 @@ import android.net.Uri import android.os.Build import android.os.Environment import android.provider.MediaStore +import androidx.compose.animation.core.withInfiniteAnimationFrameMillis import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement @@ -45,8 +46,13 @@ import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.SnackbarResult import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableFloatStateOf +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.produceState import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.drawWithCache @@ -108,7 +114,7 @@ fun BitmapFromComposableSnippet() { // and shares it with the default share sheet. fun shareBitmapFromComposable() { if (writeStorageAccessState.allPermissionsGranted) { - coroutineScope.launch(Dispatchers.IO) { + coroutineScope.launch { val bitmap = createBitmapFromPicture(picture) val uri = bitmap.saveToDisk(context) shareBitmap(context, uri) @@ -169,6 +175,7 @@ fun BitmapFromComposableSnippet() { ) { ScreenContentToCapture() + } // [END android_compose_draw_into_bitmap] } @@ -176,6 +183,13 @@ fun BitmapFromComposableSnippet() { @Composable private fun ScreenContentToCapture() { + val time by produceState(0f) { + while (true) { + withInfiniteAnimationFrameMillis { + value = it / 1000f + } + } + } Column( horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center, @@ -202,14 +216,15 @@ private fun ScreenContentToCapture() { "Into the Ocean depths", fontSize = 18.sp ) + Text(time.toString()) } } private fun createBitmapFromPicture(picture: Picture): Bitmap { // [START android_compose_draw_into_bitmap_convert_picture] - val bitmap = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + /* val bitmap = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { Bitmap.createBitmap(picture) - } else { + } else {*/ val bitmap = Bitmap.createBitmap( picture.width, picture.height, @@ -218,8 +233,8 @@ private fun createBitmapFromPicture(picture: Picture): Bitmap { val canvas = android.graphics.Canvas(bitmap) canvas.drawColor(android.graphics.Color.WHITE) canvas.drawPicture(picture) - bitmap - } + /* bitmap + }*/ // [END android_compose_draw_into_bitmap_convert_picture] return bitmap } From 99055d8495b6f568fbd4d1e39284b79bc4a0f7e8 Mon Sep 17 00:00:00 2001 From: riggaroo Date: Mon, 11 Sep 2023 15:57:09 +0000 Subject: [PATCH 02/11] Apply Spotless --- .../graphics/AdvancedGraphicsSnippets.kt | 20 ++++++++----------- 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt index 715550da0..bfc62df78 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt @@ -47,8 +47,6 @@ import androidx.compose.material3.SnackbarResult import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableFloatStateOf -import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.produceState import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope @@ -73,7 +71,6 @@ import com.google.accompanist.permissions.ExperimentalPermissionsApi import com.google.accompanist.permissions.rememberMultiplePermissionsState import java.io.File import kotlin.coroutines.resume -import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.suspendCancellableCoroutine @@ -175,7 +172,6 @@ fun BitmapFromComposableSnippet() { ) { ScreenContentToCapture() - } // [END android_compose_draw_into_bitmap] } @@ -225,14 +221,14 @@ private fun createBitmapFromPicture(picture: Picture): Bitmap { /* val bitmap = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { Bitmap.createBitmap(picture) } else {*/ - val bitmap = Bitmap.createBitmap( - picture.width, - picture.height, - Bitmap.Config.ARGB_8888 - ) - val canvas = android.graphics.Canvas(bitmap) - canvas.drawColor(android.graphics.Color.WHITE) - canvas.drawPicture(picture) + val bitmap = Bitmap.createBitmap( + picture.width, + picture.height, + Bitmap.Config.ARGB_8888 + ) + val canvas = android.graphics.Canvas(bitmap) + canvas.drawColor(android.graphics.Color.WHITE) + canvas.drawPicture(picture) /* bitmap }*/ // [END android_compose_draw_into_bitmap_convert_picture] From f5ad02c6ba88682b9c8ab198c86b265106798787 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Mon, 11 Sep 2023 14:02:30 -0400 Subject: [PATCH 03/11] Put back commented out snippet. --- .../compose/snippets/graphics/AdvancedGraphicsSnippets.kt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt index 715550da0..b1650c6e2 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt @@ -222,9 +222,9 @@ private fun ScreenContentToCapture() { private fun createBitmapFromPicture(picture: Picture): Bitmap { // [START android_compose_draw_into_bitmap_convert_picture] - /* val bitmap = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + val bitmap = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { Bitmap.createBitmap(picture) - } else {*/ + } else { val bitmap = Bitmap.createBitmap( picture.width, picture.height, @@ -233,8 +233,8 @@ private fun createBitmapFromPicture(picture: Picture): Bitmap { val canvas = android.graphics.Canvas(bitmap) canvas.drawColor(android.graphics.Color.WHITE) canvas.drawPicture(picture) - /* bitmap - }*/ + bitmap + } // [END android_compose_draw_into_bitmap_convert_picture] return bitmap } From e15fa61dc935e4187b43057b813498047fc2de08 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Mon, 11 Sep 2023 14:04:13 -0400 Subject: [PATCH 04/11] Put back commented out snippet. --- .../compose/snippets/graphics/AdvancedGraphicsSnippets.kt | 8 -------- 1 file changed, 8 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt index e51754ed3..c11cf3f41 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt @@ -179,13 +179,6 @@ fun BitmapFromComposableSnippet() { @Composable private fun ScreenContentToCapture() { - val time by produceState(0f) { - while (true) { - withInfiniteAnimationFrameMillis { - value = it / 1000f - } - } - } Column( horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center, @@ -212,7 +205,6 @@ private fun ScreenContentToCapture() { "Into the Ocean depths", fontSize = 18.sp ) - Text(time.toString()) } } From df8e7831c7807fc4c9df5f4703a4c36a958f1496 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Mon, 11 Sep 2023 14:04:23 -0400 Subject: [PATCH 05/11] Put back commented out snippet. --- .../compose/snippets/graphics/AdvancedGraphicsSnippets.kt | 2 -- 1 file changed, 2 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt index c11cf3f41..615ba9a25 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt @@ -21,14 +21,12 @@ import android.content.Context import android.content.Intent import android.content.Intent.createChooser import android.graphics.Bitmap -import android.graphics.Canvas import android.graphics.Picture import android.media.MediaScannerConnection import android.net.Uri import android.os.Build import android.os.Environment import android.provider.MediaStore -import androidx.compose.animation.core.withInfiniteAnimationFrameMillis import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement From 12b5d73bcadcf6d22e8dd4e5ea945793a09882bb Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Tue, 12 Sep 2023 16:48:50 -0400 Subject: [PATCH 06/11] Put constraintlayout dependency back to stable version to not update the Compose BOM versions. --- compose/snippets/build.gradle.kts | 5 ++ .../compose/snippets/SnippetsActivity.kt | 4 +- .../animations/AnimationQuickGuide.kt | 2 + .../graphics/AdvancedGraphicsSnippets.kt | 4 +- gradle/libs.versions.toml | 75 +++---------------- 5 files changed, 23 insertions(+), 67 deletions(-) diff --git a/compose/snippets/build.gradle.kts b/compose/snippets/build.gradle.kts index 4a65136d5..81fbe58dd 100644 --- a/compose/snippets/build.gradle.kts +++ b/compose/snippets/build.gradle.kts @@ -22,6 +22,11 @@ plugins { } android { + configurations.all { + resolutionStrategy { + failOnNonReproducibleResolution() + } + } compileSdk = libs.versions.compileSdk.get().toInt() namespace = "com.example.compose.snippets" diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt index d2e129ca2..18567c928 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt @@ -20,6 +20,7 @@ import android.os.Bundle import android.os.StrictMode import androidx.activity.ComponentActivity import androidx.activity.compose.setContent +import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface @@ -38,7 +39,6 @@ import com.example.compose.snippets.components.ProgressIndicatorExamples import com.example.compose.snippets.components.ScaffoldExample import com.example.compose.snippets.components.SliderExamples import com.example.compose.snippets.components.SwitchExamples -import com.example.compose.snippets.graphics.BitmapFromComposableSnippet import com.example.compose.snippets.graphics.BrushExamplesScreen import com.example.compose.snippets.images.ImageExamplesScreen import com.example.compose.snippets.landing.LandingScreen @@ -69,7 +69,7 @@ class SnippetsActivity : ComponentActivity() { Destination.BrushExamples -> BrushExamplesScreen() Destination.ImageExamples -> ImageExamplesScreen() Destination.AnimationQuickGuideExamples -> AnimationExamplesScreen() - Destination.ScreenshotExample -> BitmapFromComposableSnippet() + Destination.ScreenshotExample -> Box(modifier = Modifier.fillMaxSize())/*BitmapFromComposableSnippet()*/ Destination.ComponentsExamples -> ComponentsScreen { navController.navigate( it.route diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationQuickGuide.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationQuickGuide.kt index 7c6493578..297f579a4 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationQuickGuide.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationQuickGuide.kt @@ -87,6 +87,7 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment +import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.drawBehind @@ -719,6 +720,7 @@ private fun LoadingScreen() { } } +@OptIn(ExperimentalComposeUiApi::class) @Preview @Composable fun AnimationLayout() { diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt index 615ba9a25..1715879cd 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt @@ -54,7 +54,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.drawWithCache import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.drawscope.draw import androidx.compose.ui.graphics.drawscope.drawIntoCanvas import androidx.compose.ui.graphics.nativeCanvas import androidx.compose.ui.layout.ContentScale @@ -87,6 +86,7 @@ import kotlinx.coroutines.suspendCancellableCoroutine * See the License for the specific language governing permissions and * limitations under the License. */ +/* @OptIn(ExperimentalPermissionsApi::class) @Preview @Composable @@ -159,6 +159,7 @@ fun BitmapFromComposableSnippet() { height ) ) + // requires at least 1.6.0-alpha01+ draw(this, this.layoutDirection, pictureCanvas, this.size) { this@onDrawWithContent.drawContent() } @@ -271,3 +272,4 @@ private fun shareBitmap(context: Context, uri: Uri) { } startActivity(context, createChooser(intent, "Share your image"), null) } +*/ diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 222917da7..2f4819fa1 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,36 +1,23 @@ -##### -# This file is duplicated to individual samples from the global scripts/libs.versions.toml -# Do not add a dependency to an individual sample, edit the global version instead. -##### [versions] accompanist = "0.30.1" androidGradlePlugin = "8.1.1" -androidx-activity-compose = "1.8.0-alpha06" +androidx-activity-compose = "1.8.0-beta01" androidx-appcompat = "1.6.1" -androidx-benchmark = "1.1.1" -androidx-benchmark-junit4 = "1.1.0-beta04" -androidx-cardview = "1.0.0" -androidx-compose-bom = "2023.08.00" +androidx-compose-bom = "2023.09.00" androidx-constraintlayout = "2.1.4" -androidx-constraintlayout-compose = "1.1.0-alpha12" +androidx-constraintlayout-compose = "1.0.1" androidx-coordinator-layout = "1.2.0" -androidx-corektx = "1.9.0" -androidx-emoji2-views = "1.4.0-beta05" +androidx-corektx = "1.12.0" +androidx-emoji2-views = "1.4.0" androidx-fragment-ktx = "1.6.1" androidx-glance-appwidget = "1.0.0" -androidx-lifecycle-compose = "2.6.1" -androidx-lifecycle-runtime-compose = "2.6.1" -androidx-navigation = "2.7.0" -androidx-paging = "3.2.0-rc01" -androidx-paging-common = "3.1.1" -androidx-palette = "1.0.0" +androidx-lifecycle-compose = "2.6.2" +androidx-lifecycle-runtime-compose = "2.6.2" +androidx-navigation = "2.7.2" +androidx-paging = "3.2.1" androidx-test = "1.5.0" androidx-test-espresso = "3.5.1" -androidx-test-ext-junit = "1.1.5" -androidx-test-ext-truth = "1.5.0" -androidx-window = "1.2.0-alpha02" androidxHiltNavigationCompose = "1.0.0" -androix-test-uiautomator = "2.2.0" coil = "2.4.0" # @keep compileSdk = "34" @@ -39,23 +26,15 @@ coroutines = "1.7.3" google-maps = "18.1.0" gradle-versions = "0.47.0" hilt = "2.47" -hiltExt = "1.0.0" -# @pin When updating to AGP 7.4.0-alpha10 and up we can update this https://developer.android.com/studio/write/java8-support#library-desugaring-versions -jdkDesugar = "1.2.2" junit = "4.13.2" # @pin Update in conjuction with Compose Compiler kotlin = "1.8.21" ksp = "1.8.0-1.0.9" maps-compose = "2.13.0" -material = "1.11.0-alpha01" +material = "1.11.0-alpha02" # @keep minSdk = "21" -okhttp = "4.11.0" recyclerview = "1.3.1" -robolectric = "4.9.2" -rome = "1.18.0" -room = "2.5.1" -secrets = "2.0.1" # @keep targetSdk = "34" version-catalog-update = "0.8.1" @@ -63,18 +42,12 @@ version-catalog-update = "0.8.1" [libraries] accompanist-adaptive = { module = "com.google.accompanist:accompanist-adaptive", version.ref = "accompanist" } accompanist-permissions = { module = "com.google.accompanist:accompanist-permissions", version.ref = "accompanist" } -accompanist-swiperefresh = { module = "com.google.accompanist:accompanist-swiperefresh", version.ref = "accompanist" } -accompanist-systemuicontroller = { module = "com.google.accompanist:accompanist-systemuicontroller", version.ref = "accompanist" } accompanist-theme-adapter-appcompat = { module = "com.google.accompanist:accompanist-themeadapter-appcompat", version.ref = "accompanist" } accompanist-theme-adapter-material = { module = "com.google.accompanist:accompanist-themeadapter-material", version.ref = "accompanist" } accompanist-theme-adapter-material3 = { module = "com.google.accompanist:accompanist-themeadapter-material3", version.ref = "accompanist" } androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activity-compose" } -androidx-activity-ktx = "androidx.activity:activity-ktx:1.8.0-alpha05" + androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "androidx-appcompat" } -androidx-benchmark-macrobenchmark = { module = "androidx.benchmark:benchmark-macro", version.ref = "androidx-benchmark" } -androidx-benchmark-macrobenchmark-junit4 = { module = "androidx.benchmark:benchmark-macro-junit4", version.ref = "androidx-benchmark-junit4" } -androidx-cardview = { module = "androidx.cardview:cardview", version.ref = "androidx-cardview" } -androidx-compose-animation = { module = "androidx.compose.animation:animation" } androidx-compose-animation-graphics = { module = "androidx.compose.animation:animation-graphics" } androidx-compose-bom = { module = "androidx.compose:compose-bom", version.ref = "androidx-compose-bom" } androidx-compose-foundation = { module = "androidx.compose.foundation:foundation" } @@ -104,59 +77,33 @@ androidx-fragment-ktx = { module = "androidx.fragment:fragment-ktx", version.ref androidx-glance-appwidget = { module = "androidx.glance:glance-appwidget", version.ref = "androidx-glance-appwidget" } androidx-glance-material3 = { module = "androidx.glance:glance-material3", version.ref = "androidx-glance-appwidget" } androidx-hilt-navigation-compose = { module = "androidx.hilt:hilt-navigation-compose", version.ref = "androidxHiltNavigationCompose" } -androidx-lifecycle-livedata-ktx = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref = "androidx-lifecycle-compose" } androidx-lifecycle-runtime = { module = "androidx.lifecycle:lifecycle-runtime-ktx", version.ref = "androidx-lifecycle-compose" } androidx-lifecycle-runtime-compose = { module = "androidx.lifecycle:lifecycle-runtime-compose", version.ref = "androidx-lifecycle-runtime-compose" } androidx-lifecycle-viewModelCompose = { module = "androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "androidx-lifecycle-compose" } androidx-lifecycle-viewmodel-ktx = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref = "androidx-lifecycle-compose" } -androidx-lifecycle-viewmodel-savedstate = { module = "androidx.lifecycle:lifecycle-viewmodel-savedstate", version.ref = "androidx-lifecycle-compose" } androidx-navigation-compose = { module = "androidx.navigation:navigation-compose", version.ref = "androidx-navigation" } -androidx-navigation-fragment = { module = "androidx.navigation:navigation-fragment-ktx", version.ref = "androidx-navigation" } -androidx-navigation-ui-ktx = { module = "androidx.navigation:navigation-ui-ktx", version.ref = "androidx-navigation" } -androidx-paging-common-ktx = { module = "androidx.paging:paging-common-ktx", version.ref = "androidx-paging-common" } androidx-paging-compose = { module = "androidx.paging:paging-compose", version.ref = "androidx-paging" } -androidx-palette = { module = "androidx.palette:palette", version.ref = "androidx-palette" } androidx-recyclerview = { module = "androidx.recyclerview:recyclerview", version.ref = "recyclerview" } -androidx-room-compiler = { module = "androidx.room:room-compiler", version.ref = "room" } -androidx-room-ktx = { module = "androidx.room:room-ktx", version.ref = "room" } -androidx-room-runtime = { module = "androidx.room:room-runtime", version.ref = "room" } androidx-test-core = { module = "androidx.test:core", version.ref = "androidx-test" } androidx-test-espresso-core = { module = "androidx.test.espresso:espresso-core", version.ref = "androidx-test-espresso" } -androidx-test-ext-junit = { module = "androidx.test.ext:junit", version.ref = "androidx-test-ext-junit" } -androidx-test-ext-truth = { module = "androidx.test.ext:truth", version.ref = "androidx-test-ext-truth" } -androidx-test-rules = { module = "androidx.test:rules", version.ref = "androidx-test" } androidx-test-runner = "androidx.test:runner:1.5.2" -androidx-test-uiautomator = { module = "androidx.test.uiautomator:uiautomator", version.ref = "androix-test-uiautomator" } -androidx-window = { module = "androidx.window:window", version.ref = "androidx-window" } androidx-work-runtime-ktx = "androidx.work:work-runtime-ktx:2.8.1" coil-kt-compose = { module = "io.coil-kt:coil-compose", version.ref = "coil" } -core-jdk-desugaring = { module = "com.android.tools:desugar_jdk_libs", version.ref = "jdkDesugar" } google-android-material = { module = "com.google.android.material:material", version.ref = "material" } googlemaps-compose = { module = "com.google.maps.android:maps-compose", version.ref = "maps-compose" } googlemaps-maps = { module = "com.google.android.gms:play-services-maps", version.ref = "google-maps" } hilt-android = { module = "com.google.dagger:hilt-android", version.ref = "hilt" } -hilt-android-testing = { module = "com.google.dagger:hilt-android-testing", version.ref = "hilt" } hilt-compiler = { module = "com.google.dagger:hilt-android-compiler", version.ref = "hilt" } -hilt-ext-compiler = { module = "androidx.hilt:hilt-compiler", version.ref = "hiltExt" } junit = { module = "junit:junit", version.ref = "junit" } kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib-jdk8", version.ref = "kotlin" } kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "coroutines" } kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "coroutines" } -okhttp-logging = { module = "com.squareup.okhttp3:logging-interceptor", version.ref = "okhttp" } -okhttp3 = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp" } -robolectric = { module = "org.robolectric:robolectric", version.ref = "robolectric" } -rometools-modules = { module = "com.rometools:rome-modules", version.ref = "rome" } -rometools-rome = { module = "com.rometools:rome", version.ref = "rome" } [plugins] android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" } android-library = { id = "com.android.library", version.ref = "androidGradlePlugin" } -android-test = { id = "com.android.test", version.ref = "androidGradlePlugin" } gradle-versions = { id = "com.github.ben-manes.versions", version.ref = "gradle-versions" } hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt" } kapt = { id = "org.jetbrains.kotlin.kapt", version.ref = "kotlin" } kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } -kotlin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref = "kotlin" } -ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } -secrets = { id = "com.google.android.libraries.mapsplatform.secrets-gradle-plugin", version.ref = "secrets" } version-catalog-update = { id = "nl.littlerobots.version-catalog-update", version.ref = "version-catalog-update" } From e10cb8fa4eea5397dbbb4af35d87ec91b3d309a5 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Tue, 12 Sep 2023 16:51:19 -0400 Subject: [PATCH 07/11] Put constraintlayout dependency back to stable version to not update the Compose BOM versions. --- compose/snippets/build.gradle.kts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/compose/snippets/build.gradle.kts b/compose/snippets/build.gradle.kts index 81fbe58dd..4a65136d5 100644 --- a/compose/snippets/build.gradle.kts +++ b/compose/snippets/build.gradle.kts @@ -22,11 +22,6 @@ plugins { } android { - configurations.all { - resolutionStrategy { - failOnNonReproducibleResolution() - } - } compileSdk = libs.versions.compileSdk.get().toInt() namespace = "com.example.compose.snippets" From 6f6f9ace72f177ac90fd4944518e52b76710c063 Mon Sep 17 00:00:00 2001 From: riggaroo Date: Tue, 12 Sep 2023 20:54:16 +0000 Subject: [PATCH 08/11] Apply Spotless --- .../graphics/AdvancedGraphicsSnippets.kt | 52 ------------------- 1 file changed, 52 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt index 1715879cd..4ff611568 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt @@ -16,60 +16,8 @@ package com.example.compose.snippets.graphics -import android.Manifest -import android.content.Context -import android.content.Intent -import android.content.Intent.createChooser -import android.graphics.Bitmap -import android.graphics.Picture -import android.media.MediaScannerConnection -import android.net.Uri -import android.os.Build -import android.os.Environment -import android.provider.MediaStore -import androidx.compose.foundation.Image -import androidx.compose.foundation.background -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.aspectRatio -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.padding -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Share -import androidx.compose.material3.FloatingActionButton -import androidx.compose.material3.Icon -import androidx.compose.material3.Scaffold -import androidx.compose.material3.SnackbarHost -import androidx.compose.material3.SnackbarHostState -import androidx.compose.material3.SnackbarResult -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue -import androidx.compose.runtime.produceState -import androidx.compose.runtime.remember -import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.setValue -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.drawWithCache -import androidx.compose.ui.graphics.Brush -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.drawscope.drawIntoCanvas -import androidx.compose.ui.graphics.nativeCanvas -import androidx.compose.ui.layout.ContentScale -import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.res.painterResource -import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.sp -import androidx.core.content.ContextCompat.startActivity -import com.example.compose.snippets.R -import com.google.accompanist.permissions.ExperimentalPermissionsApi -import com.google.accompanist.permissions.rememberMultiplePermissionsState -import java.io.File -import kotlin.coroutines.resume -import kotlinx.coroutines.launch -import kotlinx.coroutines.suspendCancellableCoroutine /* * Copyright 2022 The Android Open Source Project From 1769741932f945dde6c00008f28af463dd5f93f9 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Tue, 12 Sep 2023 17:44:18 -0400 Subject: [PATCH 09/11] Include 1.6.0-alpha05 for Compose graphics --- .../compose/snippets/SnippetsActivity.kt | 3 +- .../graphics/AdvancedGraphicsSnippets.kt | 57 ++++++++++++++++++- .../tooling/AndroidStudioComposeSnippets.kt | 8 +-- gradle/libs.versions.toml | 3 +- 4 files changed, 61 insertions(+), 10 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt index 18567c928..d6eb2df9f 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt @@ -39,6 +39,7 @@ import com.example.compose.snippets.components.ProgressIndicatorExamples import com.example.compose.snippets.components.ScaffoldExample import com.example.compose.snippets.components.SliderExamples import com.example.compose.snippets.components.SwitchExamples +import com.example.compose.snippets.graphics.BitmapFromComposableSnippet import com.example.compose.snippets.graphics.BrushExamplesScreen import com.example.compose.snippets.images.ImageExamplesScreen import com.example.compose.snippets.landing.LandingScreen @@ -69,7 +70,7 @@ class SnippetsActivity : ComponentActivity() { Destination.BrushExamples -> BrushExamplesScreen() Destination.ImageExamples -> ImageExamplesScreen() Destination.AnimationQuickGuideExamples -> AnimationExamplesScreen() - Destination.ScreenshotExample -> Box(modifier = Modifier.fillMaxSize())/*BitmapFromComposableSnippet()*/ + Destination.ScreenshotExample -> BitmapFromComposableSnippet() Destination.ComponentsExamples -> ComponentsScreen { navController.navigate( it.route diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt index 4ff611568..9a26abb94 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt @@ -16,8 +16,61 @@ package com.example.compose.snippets.graphics +import android.Manifest +import android.content.Context +import android.content.Intent +import android.content.Intent.createChooser +import android.graphics.Bitmap +import android.graphics.Picture +import android.media.MediaScannerConnection +import android.net.Uri +import android.os.Build +import android.os.Environment +import android.provider.MediaStore +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.aspectRatio +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Share +import androidx.compose.material3.FloatingActionButton +import androidx.compose.material3.Icon +import androidx.compose.material3.Scaffold +import androidx.compose.material3.SnackbarHost +import androidx.compose.material3.SnackbarHostState +import androidx.compose.material3.SnackbarResult +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue +import androidx.compose.runtime.produceState +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.drawWithCache +import androidx.compose.ui.graphics.Brush +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.drawscope.draw +import androidx.compose.ui.graphics.drawscope.drawIntoCanvas +import androidx.compose.ui.graphics.nativeCanvas +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.core.content.ContextCompat.startActivity +import com.example.compose.snippets.R +import com.google.accompanist.permissions.ExperimentalPermissionsApi +import com.google.accompanist.permissions.rememberMultiplePermissionsState +import java.io.File +import kotlin.coroutines.resume +import kotlinx.coroutines.launch +import kotlinx.coroutines.suspendCancellableCoroutine /* * Copyright 2022 The Android Open Source Project @@ -34,7 +87,7 @@ import androidx.compose.runtime.setValue * See the License for the specific language governing permissions and * limitations under the License. */ -/* + @OptIn(ExperimentalPermissionsApi::class) @Preview @Composable @@ -220,4 +273,4 @@ private fun shareBitmap(context: Context, uri: Uri) { } startActivity(context, createChooser(intent, "Share your image"), null) } -*/ + diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/tooling/AndroidStudioComposeSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/tooling/AndroidStudioComposeSnippets.kt index eda389162..c9db44e85 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/tooling/AndroidStudioComposeSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/tooling/AndroidStudioComposeSnippets.kt @@ -28,14 +28,9 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalInspectionMode import androidx.compose.ui.res.stringResource -import androidx.compose.ui.tooling.preview.Device -import androidx.compose.ui.tooling.preview.Devices import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameterProvider -import androidx.compose.ui.tooling.preview.UiMode -import androidx.compose.ui.tooling.preview.Wallpaper -import androidx.compose.ui.tooling.preview.Wallpapers import com.example.compose.snippets.R import com.example.compose.snippets.interop.User @@ -174,7 +169,7 @@ fun UserProfilePreview2( UserProfile(user) } // [END android_compose_tooling_preview_parameter_provider_composable2] - +/* private object PreviewAnnotationEx { // [START android_compose_tooling_preview_annotation] annotation class Preview( @@ -194,3 +189,4 @@ private object PreviewAnnotationEx { ) // [END android_compose_tooling_preview_annotation] } + */ diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 2f4819fa1..12c713722 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -60,7 +60,8 @@ androidx-compose-runtime = { module = "androidx.compose.runtime:runtime" } androidx-compose-runtime-livedata = { module = "androidx.compose.runtime:runtime-livedata" } androidx-compose-ui = { module = "androidx.compose.ui:ui" } androidx-compose-ui-googlefonts = { module = "androidx.compose.ui:ui-text-google-fonts" } -androidx-compose-ui-graphics = { module = "androidx.compose.ui:ui-graphics" } +# TODO remove usage of this when `draw` method is in stable. +androidx-compose-ui-graphics = "androidx.compose.ui:ui-graphics:1.6.0-alpha05" androidx-compose-ui-test = { module = "androidx.compose.ui:ui-test" } androidx-compose-ui-test-junit4 = { module = "androidx.compose.ui:ui-test-junit4" } androidx-compose-ui-test-manifest = { module = "androidx.compose.ui:ui-test-manifest" } From 600801edd9feb257f30d639b66731b0af6c38750 Mon Sep 17 00:00:00 2001 From: riggaroo Date: Tue, 12 Sep 2023 21:46:53 +0000 Subject: [PATCH 10/11] Apply Spotless --- .../main/java/com/example/compose/snippets/SnippetsActivity.kt | 1 - .../compose/snippets/graphics/AdvancedGraphicsSnippets.kt | 2 -- .../compose/snippets/tooling/AndroidStudioComposeSnippets.kt | 2 -- 3 files changed, 5 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt index d6eb2df9f..d2e129ca2 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt @@ -20,7 +20,6 @@ import android.os.Bundle import android.os.StrictMode import androidx.activity.ComponentActivity import androidx.activity.compose.setContent -import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt index 9a26abb94..900f38da6 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt @@ -45,7 +45,6 @@ import androidx.compose.material3.SnackbarResult import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue -import androidx.compose.runtime.produceState import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.setValue @@ -273,4 +272,3 @@ private fun shareBitmap(context: Context, uri: Uri) { } startActivity(context, createChooser(intent, "Share your image"), null) } - diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/tooling/AndroidStudioComposeSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/tooling/AndroidStudioComposeSnippets.kt index c9db44e85..d1c23a52d 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/tooling/AndroidStudioComposeSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/tooling/AndroidStudioComposeSnippets.kt @@ -16,8 +16,6 @@ package com.example.compose.snippets.tooling -import androidx.annotation.FloatRange -import androidx.annotation.IntRange import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.material3.MaterialTheme From 10492caa6a45b9ed81419a5635e07f3faa4bf904 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Wed, 13 Sep 2023 09:31:49 -0400 Subject: [PATCH 11/11] Fix workflow to trigger on pushes of spotless changes too Need to add the PAT https://github.com/stefanzweifel/git-auto-commit-action#commits-made-by-this-action-do-not-trigger-new-workflow-runs --- .github/workflows/build.yml | 6 ++---- .github/workflows/update_deps.yml | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bf0a6ff8b..7acbcb452 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -30,7 +30,8 @@ jobs: steps: - uses: actions/checkout@v3 - + with: + token: ${{ secrets.PAT}} - name: set up Java 17 uses: actions/setup-java@v2 with: @@ -47,6 +48,3 @@ jobs: run: ./gradlew :compose:recomposehighlighter:build - name: Build kotlin snippets run: ./gradlew :kotlin:build - # TODO fix bluetoothle snippets (lint is failing) - name: Build bluetoothle snippets - # run: ./gradlew :bluetoothle:build - diff --git a/.github/workflows/update_deps.yml b/.github/workflows/update_deps.yml index b7602f303..9f92a69b2 100644 --- a/.github/workflows/update_deps.yml +++ b/.github/workflows/update_deps.yml @@ -29,5 +29,5 @@ jobs: branch: bot-update-deps delete-branch: true title: '🤖 Update Dependencies' - body: Updated depedencies + body: Updated dependencies reviewers: ${{ github.actor }}