当前位置:   article > 正文

『Android』如何配置 Jetpack-Compose 环境_jetpack compose 支持 安卓7.1吗

jetpack compose 支持 安卓7.1吗

记录配置Jetpack Compose环境的一些坑~

直接创建kotlin项目或创建java项目后再配置均可

根目录 build.gradle
配置kotlin环境构建脚本
buildscript {
    ext.kotlin_version = '1.4.32'
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

注意:里面的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
}
  • 1
  • 2
  • 3
  • 4

apply false 意味着这些插件不会被应用到当前项目中。但是,这里为这些插件指定版本号是有用的,因为在子项目中应用这些插件时,Gradle 将会根据指定的版本号下载和使用相应的插件。如果不指定版本号,Gradle 将会默认使用最新版本的插件,这可能会导致不可预期的问题。

app 子模块
build.gradle 中添加
apply plugin: 'kotlin-android'
  • 1

这里面会指定添加插件kotlin-android的最新版本,但是没有指定版本可能会造成错误

说明
plugins {
    id 'com.android.application'
}
apply plugin: 'kotlin-android'
  • 1
  • 2
  • 3
  • 4
plugins {
    id 'com.android.application'
    id 'org.jetbrains.kotlin.android'
}
  • 1
  • 2
  • 3
  • 4

上面两种写法是影响作用相同,但是推荐使用第一种,因为它更加清晰和简洁,同时也便于维护和修改。第二种方式虽然也能实现同样的功能,但是需要指定更多的插件,并且代码看起来比较冗长。

Q:但是为什么使用apply时为什么没有指定”org.jetbrains“,这不会造成错误吗

在使用 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.pluginorg.gradle.plugin 命名空间下的插件,所以可以省略命名空间。

开启 Compose
android {
	buildFeatures {
    	setCompose(true)
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
导入依赖
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"
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

若是需要使用@Preview还需添加

implementation "androidx.compose.ui:ui-tooling:$compose_version"
  • 1
MainActivity.kt
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")
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

遇到问题,可以先clean下再rebuild

image-20230407221712258

或是直接清除缓存重启

image-20230407221758389

不行的话自行google~

之后教程大家看官网即可:Android Compose 教程

当然国内用户build过慢可以换源或是科学上网,这里不赘述~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/917576
推荐阅读
相关标签
  

闽ICP备14008679号