【Android】Jetpack Compose 环境配置

Android开发配置Jetpack Compose环境踩坑笔记​

根目录 build.gradle
配置kotlin环境构建脚本
buildscript <span class="token punctuation">{
   </span>
    ext<span class="token operator">.</span>kotlin_version <span class="token operator">=</span> <span class="token string">'1.4.32'</span>
    dependencies <span class="token punctuation">{
   </span>
        classpath <span class="token string">"org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"</span>
    <span class="token punctuation">}</span>
<span class="token punctuation">}</span>

注意:里面的kotlin版本需要和自己的 gradle 版本 对应的Compose Complier版本适配,如果不适配,build时会提示适配版本,然后改为相应版本即可

提醒
plugins <span class="token punctuation">{
   </span>
    id <span class="token string">'com.android.application'</span> version <span class="token string">'7.1.2'</span> apply <span class="token boolean">false</span>
    id <span class="token string">'com.android.library'</span> version <span class="token string">'7.1.2'</span> apply <span class="token boolean">false</span>
<span class="token punctuation">}</span>

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

app 子模块

build.gradle 中添加
apply plugin<span class="token punctuation">:</span> <span class="token string">'kotlin-android'</span>

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

说明
plugins <span class="token punctuation">{
   </span>
    id <span class="token string">'com.android.application'</span>
<span class="token punctuation">}</span>
apply plugin<span class="token punctuation">:</span> <span class="token string">'kotlin-android'</span>
plugins <span class="token punctuation">{
   </span>
    id <span class="token string">'com.android.application'</span>
    id <span class="token string">'org.jetbrains.kotlin.android'</span>
<span class="token punctuation">}</span>

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

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 <span class="token punctuation">{
   </span>
    buildFeatures <span class="token punctuation">{
   </span>
        <span class="token function">setCompose</span><span class="token punctuation">(</span><span class="token boolean">true</span><span class="token punctuation">)</span>
    <span class="token punctuation">}</span>
<span class="token punctuation">}</span>
导入依赖
dependencies <span class="token punctuation">{
   </span>
    <span class="token keyword">def</span> compose_version <span class="token operator">=</span> <span class="token string">"1.0.4"</span>
    implementation <span class="token string">"androidx.compose.ui:ui:$compose_version"</span>
    implementation <span class="token string">"androidx.compose.material:material:$compose_version"</span>
    implementation <span class="token string">"androidx.compose.ui:ui-tooling-preview:$compose_version"</span>
    implementation <span class="token string">"androidx.activity:activity-compose:1.3.0"</span>
<span class="token punctuation">}</span>

里面的1.0.4版本也需要试着看

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

implementation <span class="token string">"androidx.compose.ui:ui-tooling:$compose_version"</span>
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")
}

manifest.xml 添加启动activity配置

<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>activity</span>
    <span class="token attr-name"><span class="token namespace">android:</span>name</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>.MainActivity<span class="token punctuation">"</span></span>
    <span class="token attr-name"><span class="token namespace">android:</span>exported</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>true<span class="token punctuation">"</span></span><span class="token punctuation">&gt;</span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>intent-filter</span><span class="token punctuation">&gt;</span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>action</span> <span class="token attr-name"><span class="token namespace">android:</span>name</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>android.intent.action.MAIN<span class="token punctuation">"</span></span> <span class="token punctuation">/&gt;</span></span>

        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>category</span> <span class="token attr-name"><span class="token namespace">android:</span>name</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>android.intent.category.LAUNCHER<span class="token punctuation">"</span></span> <span class="token punctuation">/&gt;</span></span>
    <span class="token tag"><span class="token tag">intent-filter</span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag">activity</span><span class="token punctuation">&gt;</span></span>

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

或是直接清除缓存重启

不行的话自行google~

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

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

文章来源于互联网:【Android】Jetpack Compose 环境配置

下载说明:
1、本站所有资源均从互联网上收集整理而来,仅供学习交流之用,因此不包含技术服务请大家谅解!
2、本站不提供任何实质性的付费和支付资源,所有需要积分下载的资源均为网站运营赞助费用或者线下劳务费用!
3、本站所有资源仅用于学习及研究使用,您必须在下载后的24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担!
4、本站站内提供的所有可下载资源,本站保证未做任何负面改动(不包含修复bug和完善功能等正面优化或二次开发),但本站不保证资源的准确性、安全性和完整性,用户下载后自行斟酌,我们以交流学习为目的,并不是所有的源码都100%无错或无bug!如有链接无法下载、失效或广告,请联系客服处理!
5、本站资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您的合法权益,请立即告知本站,本站将及时予与删除并致以最深的歉意!
6、如果您也有好的资源或教程,您可以投稿发布,成功分享后有站币奖励和额外收入!
7、如果您喜欢该资源,请支持官方正版资源,以得到更好的正版服务!
8、请您认真阅读上述内容,注册本站用户或下载本站资源即您同意上述内容!
原文链接:https://www.dandroid.cn/19758,转载请注明出处。
0

评论0

显示验证码
没有账号?注册  忘记密码?