在Android Studio 4.0 Canary中可以显示预览或无法在预览中显示内容之前,需要成功的构建

时间:2019-11-20 12:13:08

标签: android kotlin android-jetpack-compose android-studio-4.0

我试图打开预览,但无法打开。

我尝试再次打开工作室,但是预览仅显示空白屏幕,并且内部没有任何内容。 当我再次打开它时,它在预览侧显示以下消息:

A successful build is needed before the preview can be displayed

构建过程已完成,并尝试进行多次构建,但仍显示相同的错误。

我在其中使用了简单的文本。

    @Composable
    fun Greeting(name: String) {
        Text (text = "Hello $name!")
    }

这是我的全部内容:

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            Greeting("Android")
        }
    }

    @Composable
    fun Greeting(name: String) {
        Text (text = "Hello $name!")
    }

    @Preview
    @Composable
    fun PreviewGreeting() {
        Greeting("Android")
    }
}

如果有人知道这个问题,请分享答案。

8 个答案:

答案 0 :(得分:2)

尝试一下:

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            Greeting("Android")
        }
    }

    @Composable
    fun Greeting(name: String) {
        Text (text = "Hello $name!")
    }
}
@Preview
@Composable
fun PreviewGreeting() {
    Greeting("Android")
}

答案 1 :(得分:1)

我遇到了同样的问题,当我点击“Run with --info”时得到的构建错误消息是:

e: This version (1.0.0-alpha13) of the Compose Compiler requires Kotlin version 1.4.30 but you appear to be using Kotlin version 1.5.0 which is not known to be compatible.  Please fix your configuration (or `suppressKotlinVersionCompatibilityCheck` but don't say I didn't warn you!).

所以我去了项目级别 build.gradle 文件,更改前的一个片段(您可以根据错误消息更改版本)-

buildscript {
    ..
    ..
    dependencies {
        classpath "com.android.tools.build:gradle:7.0.0-alpha15"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.0"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
    ..
    ..
}

因此,根据错误消息,我将kotlin-gradle-plugin 版本从 1.5.0 更改为 1.4.30,如下所示:-

classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.0"

classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.30"

在此之后,我对 gradle 文件进行了“立即同步”并在预览选项卡中进行了“构建和刷新”,希望 兼容性问题 消失了,我能够看到实时预览。

这可能不是最好的解决方案,因为我们需要降级 kotlin 版本,但是它对我有用,你可以试一试!!

答案 2 :(得分:0)

请仔细遵循开发人员的文档,请在MainActivity之外定义您的Greeting函数和PreviewGreeting函数,请执行以下操作

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.compose.Composable
import androidx.compose.unaryPlus
import androidx.ui.core.Text
import androidx.ui.core.dp
import androidx.ui.core.setContent
import androidx.ui.foundation.DrawImage
import androidx.ui.graphics.Color
import androidx.ui.layout.*
import androidx.ui.material.MaterialColors
import androidx.ui.material.MaterialTheme
import androidx.ui.res.imageResource
import androidx.ui.tooling.preview.Preview

class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContent {
        MaterialTheme(
            colors = MaterialColors(
                primary = Color.Black,
                background = Color.Cyan,
                secondary = Color.Magenta
            )
        ) {
            Greeting("Hello World")
        }
    }
}
}

@Composable
fun Greeting(name: String) {
val image = +imageResource(R.drawable.ic_launcher_round)

Column(crossAxisSize = LayoutSize.Expand, modifier = Spacing(16.dp)) {
    Text(name)
    Text(name)
    Text(name)
    HeightSpacer(50.dp)
    Container(expanded = true, height = 100.dp, width = 100.dp) {
        DrawImage(image)
    }

}

}

@Preview
@Composable
fun DefaultPreview() {
val image = +imageResource(R.drawable.ic_launcher_round)

Column(crossAxisSize = LayoutSize.Expand, modifier = Spacing(16.dp)) {
    Text("Android")
    Text("Android")
    Text("Android")
    Text("Hello")
    HeightSpacer(50.dp)
    Container(expanded = true, height = 100.dp, width = 100.dp) {
        DrawImage(image)
    }

}

}

然后在设备/仿真器中运行您的应用一次,然后您就可以看到预览工作enter image description here

答案 3 :(得分:0)

我相信您可能已经修复它,但仍会回答,因为尚无公认的答案。

我尝试从Empty Compose Activity项目模板创建项目。并显示上述错误。

app:build.gradle文件中存在问题。

compileSdkVersion 'Google Inc.:Google APIs:23'替换为compileSdkVersion 29

targetSdkVersion 23替换为targetSdkVersion 29

清理并构建项目,问题应该得到解决。

答案 4 :(得分:0)

按照以下步骤为我工作:

  1. 文件->无效的缓存/重新启动
  2. 单击预览屏幕,其中显示“需要成功构建...”
  3. 使用以下命令构建并刷新:Option + Command + Shift + R(在Mac上),我猜Alt + Ctrl + Shift + R是Windows上的命令

在运行命令之前,单击预览屏幕很重要。

答案 5 :(得分:0)

我遇到了同样的问题,使缓存无效并重新启动对我来说是可行的。

答案 6 :(得分:0)

当您第一次创建compose项目时,这有点奇怪,预览无法正常工作,一个非常简单的解决方案是转到Build-> Rebuild菜单来重建您的项目,并且一切正常:) Image Resource

答案 7 :(得分:0)

构建关闭文件后,从左侧的文件树重新打开它,然后它应该可以工作。我在他们没有预览,所以现在它说没有预览找到通过注释可堆肥添加预览@Preview

但我认为它对你有用