赞
踩
记录配置Jetpack Compose环境的一些坑~
直接创建kotlin项目或创建java项目后再配置均可
buildscript {
ext.kotlin_version = '1.4.32'
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
注意:里面的kotlin版本需要和自己的 gradle 版本 对应的Compose Complier版本适配,如果不适配,build时会提示适配版本,然后改为相应版本即可
plugins {
id 'com.android.application' version '7.1.2' apply false
id 'com.android.library' version '7.1.2' apply false
}
apply false
意味着这些插件不会被应用到当前项目中。但是,这里为这些插件指定版本号是有用的,因为在子项目中应用这些插件时,Gradle 将会根据指定的版本号下载和使用相应的插件。如果不指定版本号,Gradle 将会默认使用最新版本的插件,这可能会导致不可预期的问题。
apply plugin: 'kotlin-android'
这里面会指定添加插件kotlin-android的最新版本,但是没有指定版本可能会造成错误
plugins {
id 'com.android.application'
}
apply plugin: 'kotlin-android'
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
}
上面两种写法是影响作用相同,但是推荐使用第一种,因为它更加清晰和简洁,同时也便于维护和修改。第二种方式虽然也能实现同样的功能,但是需要指定更多的插件,并且代码看起来比较冗长。
在使用 apply plugin
声明插件时,通常可以省略掉插件 ID 中的 org.jetbrains
,因为 Gradle 默认会搜索 gradle.plugin.org.jetbrains
命名空间下的插件,所以使用 id 'kotlin-android'
或 id 'org.jetbrains.kotlin.android'
都是可以的,因为 Gradle 会将它们都解析成 gradle.plugin.org.jetbrains.kotlin.android
。
实际上,Gradle 支持三种插件 ID 声明方式:id 'pluginId'
、id 'namespace:pluginId'
和 id "namespace:pluginId" version "version"
。其中第一种方式会自动搜索 gradle.plugin
和 org.gradle.plugin
命名空间下的插件,所以可以省略命名空间。
android {
buildFeatures {
setCompose(true)
}
}
dependencies {
def compose_version = "1.0.4"
implementation "androidx.compose.ui:ui:$compose_version"
implementation "androidx.compose.material:material:$compose_version"
implementation "androidx.compose.ui:ui-tooling-preview:$compose_version"
implementation "androidx.activity:activity-compose:1.3.0"
}
若是需要使用@Preview还需添加
implementation "androidx.compose.ui:ui-tooling:$compose_version"
package io.github.returntmp.dpfk import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.material.Text import androidx.compose.runtime.Composable import androidx.compose.ui.tooling.preview.Preview class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { // Text("Hello world!") MessageCard("Android") } } } @Composable fun MessageCard(name: String) { Text(text = "Hello $name!") } @Preview @Composable fun PreviewMessageCard() { MessageCard("Android") }
manifest.xml 添加启动activity配置
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
遇到问题,可以先clean下再rebuild
或是直接清除缓存重启
不行的话自行google~
当然国内用户build过慢可以换源或是科学上网,这里不赘述~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。