Jetpack compose can't preview after updating to 1.0.0-rc01

AndroidAndroid Jetpack-Compose

Android Problem Overview


this happened to me only when I updated to 1.0.0-rc01. it says:

> The following classes could not be found: > - androidx.compose.ui.tooling.preview.ComposeViewAdapter (Fix Build Path, Edit XML, Create Class)

enter image description here

my code:

@Composable
@Preview
fun CenterProgress(){
    Box(
        modifier= Modifier.fillMaxSize(),
        contentAlignment = Alignment.Center
    ){
        CircularProgressIndicator(strokeWidth = 3.dp)
    }
}

Android Solutions


Solution 1 - Android

Update 07/20/2021: Just download and use the latest AS to fix the problem


They splitted some packages in rc01 but per @CommonsWare comment (all credits to him) it seems there is a problem with Android Studio version itself. You have 2 options:

  1. Downgrade to beta09 until AS ArcticFox RC1 is out
  2. Try the suggested workaround, use AS Arctic Fox Beta 5 leaving all compose dependencies to 1.0.0-rc01 version and downgrade only ui-tooling to 1.0.0-beta09 (confirmed by comments).

Extra details

Here you can find all the classes they moved in 1.0.0-rc01 https://android-review.googlesource.com/c/platform/frameworks/support/+/1739498 and the explanation on why this has been decided.

In short, you can now do this for some particular optimized scenarios (which should not be the default case):

debugImplementation "androidx.compose.ui:ui-tooling:1.0.0-rc01"
implementation "androidx.compose.ui:ui-tooling-preview:1.0.0-rc01"

Solution 2 - Android

Update: This is no longer needed with Android Studio Bumblebee | 2021.1.1 Canary 6 and Android Gradle Plugin 7.1.0-alpha06. Note: Canary 4 already fixed this issue but required a broken version of AGP. This is now also resolved.

In addition to the above answers: here is how to force the ui-tooling version in gradle:

implementation("androidx.compose.ui:ui-tooling:$compose_version") {
    version {
        // TODO: Remove this when Android Studio has become compatible again
        // Android Studio Bumblebee | 2021.1.1 Canary 3 is not compatible with module ui-tooling 1.0.0-rc01 or higher.
        // The Run Configuration for Composable Previews that Android Studio makes expects a PreviewActivity class
        // in the `androidx.compose.ui.tooling.preview` package, but it was moved in 1.0.0-rc01, and thus causes error:
        // "androidx.compose.ui.tooling.preview.PreviewActivity is not an Activity subclass or alias".
        // For more, see: https://stackoverflow.com/questions/68224361/jetpack-compose-cant-preview-after-updating-to-1-0-0-rc01
        strictly("1.0.0-beta09")
    }
}

Solution 3 - Android

For my case, it's because I left my build variant at "release". Changing it back to "debug" fixes the missing class bug.

enter image description here

the preview functionality is probably from the following line in build.gradle

debugImplementation "androidx.compose.ui:ui-tooling:$compose_version"

Solution 4 - Android

I tried it like the comment above me and it actually helped me only that i had to delete the implementation of :

Link to Artic Fox Beta 5:
https://developer.android.com/studio/preview

androidx.compose.ui:ui-tooling-preview.
My compose config looks like the following:

android {

def compose_version = '1.0.0-rc01'


composeOptions {
  kotlinCompilerExtensionVersion "$compose_version"
}

dependencies {
  def compose_version = '1.0.0-rc01'
/**Compose Related*/

    implementation "androidx.compose.compiler:compiler:$compose_version"
    implementation "androidx.compose.ui:ui:$compose_version"
    implementation "androidx.activity:activity-compose:1.3.0-rc01"
    implementation "androidx.compose.material:material:$compose_version"

    implementation "androidx.compose.ui:ui-tooling:1.0.0-beta09"
//    Need to comment this two lines to work on artic fox
//    implementation "androidx.compose.ui:ui-tooling:$compose_version"
//    implementation "androidx.compose.ui:ui-tooling-preview:$compose_version"
    /**Accompanist*/
    // Coil
    implementation 'dev.chrisbanes.accompanist:accompanist-insets:0.6.2'
    implementation "com.google.accompanist:accompanist-coil:0.13.0"
    implementation "androidx.compose.runtime:runtime:$compose_version"
    implementation "androidx.compose.runtime:runtime-livedata:$compose_version"

    /** Material Icons */
    implementation "androidx.compose.material:material-icons-extended:$compose_version"


    // Jetpack Compose Integration
    implementation "androidx.navigation:navigation-compose:2.4.0-alpha04"
}

}

Solution 5 - Android

To people still get the error when downgrade the ui-tooling library:

Make sure you don't have library that have dependency on ui-tooling:1.0.0-rc01 You can find that out by using ./gradlew app:dependencies in your android studio terminal

In my case, I'm using com.google.accompanist:accompanist-swiperefresh:13.0.0 which depend on ui-tooling:1.0.0-rc01. Preview is working when I downgrade to accompanist-swiperefresh:12.0.0

Solution 6 - Android

On my case, where I have a "design system" module providing all compose-related dependencies, I had to add the following dependency:

implementation("androidx.activity:activity-compose:1.4.0")

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionKarim SinouhView Question on Stackoverflow
Solution 1 - AndroidMatPagView Answer on Stackoverflow
Solution 2 - AndroidRob MeeuwisseView Answer on Stackoverflow
Solution 3 - AndroidAngel KohView Answer on Stackoverflow
Solution 4 - AndroidAugusto AlonsoView Answer on Stackoverflow
Solution 5 - AndroidKelvin YipView Answer on Stackoverflow
Solution 6 - AndroidrsicarelliView Answer on Stackoverflow