【Compose multiplatform教程06】用IDEA编译Compose Multiplatform常见问题

当我们从Kotlin Multiplatform Wizard | JetBrains 下载ComposeMultiplatform项目时

会遇到无法正常编译/运行的情况,一般网页和桌面是可以正常编译的,

我这里着重解决如下问题

1:Gradle版本不兼容或者Gradle连接超时

2:JDK版本不兼容

3:Gradle依赖库连接超时-替换成国内镜像 

4:Android环境编译

5:Android 运行到手机/模拟器

6:IOS平台(后续补充)

1:Gradle版本不兼容或者Gradle连接超时

The project is using an incompatible version (AGP 8.5.2) of the Android Gradle plugin. Latest supported version is AGP 8.2.0
See Android Studio & AGP compatibility options.
[Experimental] Enable sync with future AGP version.


该项目正在使用不兼容版本(Android Gradle 插件 8.5.2 版)的 Android Gradle 插件。所支持的最新版本是 Android Gradle 插件 8.2.0 版。
查看 Android Studio 与 Android Gradle 插件的兼容性选项。
[实验性] 启用与未来 Android Gradle 插件版本的同步功能。

下载最新版本IntelliJ IDEAIntelliJ IDEA 毫无疑问是软件开发者的首选 IDE。 It makes Java and Kotlin development a more productive and enjoyable experience.icon-default.png?t=O83Ahttps://www.jetbrains.com.cn/idea/promo/?utm_source=baidu&utm_medium=cpc&utm_campaign=cn-bai-br-intellij-ex-pc&utm_content=intellij-core&utm_term=idea

找到gradle/wrapper/gradle-wrapper.properties 文件将修改distributionUrl为合适的版本,我们用由于国外很多gradle依赖链接需要翻墙,我们可以用ai帮我们找合适的地址:

(Gradle国内镜像)南京大学镜像站 下载目录icon-default.png?t=O83Ahttps://mirrors.nju.edu.cn/gradle/我们可以找个相对合适的版本8.9 直接替换链接,如图 右键复制地址

distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip
修改为https://mirrors.nju.edu.cn/gradle/gradle-8.9-bin.ziphttps://mirrors.nju.edu.cn/gradle/gradle-8.9-bin.zip

  然后点击小象load图标 load Gradle Changes 同步 快捷键是(ctrl+shift+o) 

2:JDK版本不兼容

Your build is currently configured to use Java 21.0.2 and Gradle 8.5.

Possible solution:
 - Use Java 17 as Gradle JVM: Open Gradle settings 
 - Upgrade Gradle wrapper to 8.9 version and re-import the project

您的构建当前配置为使用 Java 21.0.2 版本和 Gradle 8.5 版本。

可能的解决方案:

  • 将 Java 17 用作 Gradle 的 Java 虚拟机(JVM):打开 Gradle 设置。
  • 将 Gradle 包装器升级到 8.5 版本,然后重新导入项目。

打开工程结构窗口将SDK修改17 

File->Project Structure->Project->SDK: 选择对应版本17 没有的话选择Edit 选择Add SDK选择本地JDK版本,为什么用官方JDK,因为有时候编译打包会莫名其妙的报错,用官网就没问题(血泪的教训)

JDK17下载(强烈推荐用官网的JDK)icon-default.png?t=O83Ahttps://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html

打开Settings输入Gradle JVM找到Build->BuildTools->Gradle->Gradle JVM将版本改成17

下载JDK1Java Archive Downloadsicon-default.png?t=O83Ahttps://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html下载对应的系统的版本例如

 找到项目根目录local.properties文件添加本地配置属性

org.gradle.java.home=C\:\\Program Files\\Java\\jdk-17

 3:该项目正在使用不兼容版本(安卓 Gradle 插件 8.5.2 版)的安卓 Gradle 插件。

The project is using an incompatible version (AGP 8.5.2) of the Android Gradle plugin. Latest supported version is AGP 8.2.0
See Android Studio & AGP compatibility options.
[Experimental] Enable sync with future AGP version.

该项目正在使用不兼容版本(安卓 Gradle 插件 8.5.2 版)的安卓 Gradle 插件。所支持的最新版本是安卓 Gradle 插件 8.2.0 版。
查看安卓工作室与安卓 Gradle 插件的兼容性选项。
[实验性] 启用与未来安卓 Gradle 插件版本的同步功能。

解决办法1:

[实验性的] 启用与未来 Android Gradle 插件(AGP)版本的同步。我们可以打开Settings勾选

Enable sync with future AGP version (Experimental) 

然后再点击小象load图标 load Gradle Changes 同步 快捷键是(ctrl+shift+o) 

解决办法2:下载最新的IDEA版本

IntelliJ IDEA – 领先的 Java 和 Kotlin IDEicon-default.png?t=O83Ahttps://www.jetbrains.com.cn/idea/promo/?utm_source=baidu&utm_medium=cpc&utm_campaign=cn-bai-br-intellij-ex-pc&utm_content=intellij-core&utm_term=idea

3:Gradle依赖库连接超时-替换成国内镜像 

  • 在 Windows 系统中,hosts 文件位于 C:\Windows\System32\Drivers\etc 文件夹中,以记事本方式打开后,在文件底部添加类似 “20.205.243.166 github.com” 的内容,保存并关闭文件12.
  • 更改 DNS 服务器:可以尝试更改 DNS 服务器地址为公共 DNS 服务,如谷歌的 8.8.8.8 和 8.8.4.4 或Cloudflare的 1.1.1.1 和 1.0.0.1。在计算机的控制面板中找到网络和 Internet 设置,点击正在使用的网络连接,进入其属性设置,在 IPv4 设置中选择 “使用以下 DNS 服务器地址”,输入相应的 DNS 服务器地址并保存设置.
pluginManagement {repositories {// 阿里云镜像maven("https://maven.aliyun.com/release/")// 华为云镜像maven("https://mirrors.huaweicloud.com/repository/maven/")// 腾讯云镜像maven("https://mirrors.cloud.tencent.com/nexus/repository/maven-public/")maven("https://jitpack.io")maven("https://maven.aliyun.com/repository/gradle-plugin")maven("https://maven.aliyun.com/repository/google")maven("https://maven.aliyun.com/repository/central")maven("https://maven.aliyun.com/repository/public")//淘宝镜像源maven("https://registry.npmmirror.com")//腾讯云镜像源maven("https://mirrors.cloud.tencent.com/npm/")//官方 CNPM 镜像maven("https://r.cnpmjs.org")google {mavenContent {includeGroupAndSubgroups("androidx")includeGroupAndSubgroups("com.android")includeGroupAndSubgroups("com.google")}}mavenCentral()gradlePluginPortal()}
}dependencyResolutionManagement {repositories {// 阿里云镜像maven("https://maven.aliyun.com/release/")// 华为云镜像maven("https://mirrors.huaweicloud.com/repository/maven/")// 腾讯云镜像maven("https://mirrors.cloud.tencent.com/nexus/repository/maven-public/")maven("https://jitpack.io")maven("https://maven.aliyun.com/repository/gradle-plugin")maven("https://maven.aliyun.com/repository/google")maven("https://maven.aliyun.com/repository/central")maven("https://maven.aliyun.com/repository/public")//淘宝镜像源maven("https://registry.npmmirror.com")//腾讯云镜像源maven("https://mirrors.cloud.tencent.com/npm/")//官方 CNPM 镜像maven("https://r.cnpmjs.org")google {mavenContent {includeGroupAndSubgroups("androidx")includeGroupAndSubgroups("com.android")includeGroupAndSubgroups("com.google")}}mavenCentral()}
}

 不管是运行Gradle的task哪个任务(kotlin browser->wasmJsBrowserRun)还是运行(other->wasmJsRun),提示的错误,都可以用以上国内镜像源代替:

Could not resolve com.yarnpkg:yarn:1.22.17.
     Required by:
         project :
      > Could not resolve com.yarnpkg:yarn:1.22.17.
         > Could not get resource 'https://github.com/yarnpkg/yarn/releases/download/v1.22.17/yarn-v1.22.17.tar.gz'.
            > Could not HEAD 'https://github.com/yarnpkg/yarn/releases/download/v1.22.17/yarn-v1.22.17.tar.gz'.
               > Got socket exception during request. It might be caused by SSL misconfiguration
                  > Connect to github.com:443 [github.com/20.205.243.166] failed: Connection timed out: no further information

Connect to https://github.com:443 [github.com/20.205.243.166] failed: Connection timed out: no further information. If you are behind an HTTP proxy, please configure the proxy settings either in IDE or Gradle

4:Android环境编译

Could not find compile target android-34 for modules :composeApp, :shared

点击composeApp\src\androidMain\AndroidManifest.xml

会在右上角显示Install Android plugin 点击后依照提示Next就会自动下载安装,然后重启IDE就可以使用了

SDK location not found. Define a valid SDK location with an ANDROID_HOME environment variable or by setting the sdk.dir path in your project's local properties file at 'D:\pro\ComposeMultiplatform\local.properties'.
 

找到项目根目录local.properties文件添加本地配置属性,输入你的Android SDK本地路径

org.gradle.java.home=C\:\\Program Files\\Java\\jdk-17
sdk.dir=D\:\\Program Files\\Android\\sdk

Cannot locate tasks that match ':composeApp:compileJava' as task 'compileJava' is ambiguous in project ':composeApp'. Candidates are: 'compileDebugAndroidTestJavaWithJavac', 'compileDebugJavaWithJavac', 'compileDebugUnitTestJavaWithJavac', 'compileReleaseJavaWithJavac', 'compileReleaseUnitTestJavaWithJavac'.
Clear Project 清除IDEA缓存 重启IDEA

打开settings配置Android SDK Manager

5:Android 运行到手机/模拟器

打开Gradle  task列表点击android->sourceSets和signingReport

点击Idea的Run 运行栏打开EditConfigurations

 

Run/Debug configurations选择android ,如下图所示,如果你的本地安装了android adb 现在你就可以在自己android手机上运行compose

6:IOS环境编译 (后续补充)

打开iosApp.xcodeproj 的projec.pb.xpbxproj 在右边会显示Install Multi-OS Engine plugin

点击安装以后 然后重启idea 

在Run/Debug configuratios就可以看到 Multi-OS Engine plugin的配置不过博主没有ios和注册ios相关开发账号 (后续补充)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/65566.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python + 深度学习从 0 到 1(02 / 99)

希望对你有帮助呀!!💜💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦 欢迎关注、订阅专栏 【深度学习从 0 到 1】谢谢你的支持! ⭐ Keras 快速入门: 神经网络的基本数据结…

MySQL 数据库基础

目录 什么是数据库 数据库分类 关系型数据库 非关系型数据库 SQL子语言 MySQL MySQL 存储数据的组织方式 数据库操作 显示当前数据库 创建数据库 使用数据库 删除数据库 什么是数据库 数据库 是一个用于存储、管理和检索数据的系统,可以组织和保存大量…

《Vue3 二》Vue 的模板语法

在 React 中,想要编写 HTML,是使用 JSX,之后通过 Babel 将 JSX 编译成 React.createElement 函数调用;在 Vue 中,也支持 JSX 的开发模式,但大多数情况下都是使用基于 HTML 的模板语法,在模板中允…

高级技巧-使用Mysql 实现根据条件过滤整个分组数据

博客-mysql exists实现过滤所属条件对应分组的全部数据 在数据查询中,有时需要根据某一条件来过滤整个分组的数据,尤其是当某条记录满足特定条件时,需要将该组内的所有记录排除。本文将介绍如何使用 MySQL 的 EXISTS 关键字来实现这种分组过滤…

游戏引擎学习第67天

reviewing “apron”概念以更新区域 我们正在进行模拟区域的扩展工作,目标是通过增加一个更大的区域来支持更丰富的互动,尤其是那些可能超出摄像机视野的内容。现有的模拟区域包括摄像机能看到的区域和其周围的环境区域,但为了保证更高效的游…

计算机网络|数据流向剖析与分层模型详解

文章目录 一、网络中的数据流向二、计算机网络通信模型1.OSI 模型2.TCP/IP 模型3.TCP/IP五层模型3.1 分层架构描述3.2各层地址结构3.3UDP数据包报头结构 三、总结 一、网络中的数据流向 在计算机网络中,数据的流向是指数据从发送端到接收端的传输路径。数据流向涉及…

如何在 Spring Boot 微服务中设置和管理多个数据库

在现代微服务架构中,通常需要与多个数据库交互的服务。这可能是由于各种原因,例如遗留系统集成、不同类型的数据存储需求,或者仅仅是为了优化性能。Spring Boot 具有灵活的配置和强大的数据访问库,可以轻松配置多个数据库。在本综…

【Raven1靶场渗透】

文章目录 一、基础信息 二、信息收集 三、暴力破解 四、提权 一、基础信息 Kali IP :192.168.20.146 靶机IP :192.168.20.153 二、信息收集 nmap -sS -sV -p- -A 192.168.20.153 开放了22,80,111,58305端口 访…

视频监控平台:Liveweb视频汇聚融合平台智慧安防视频监控应用方案

Liveweb是一款功能强大、灵活部署的安防视频监控平台,支持多种主流标准协议,包括GB28181、RTSP/Onvif、RTMP等,同时兼容海康Ehome、海大宇等厂家的私有协议和SDK接入。该平台不仅提供传统安防监控功能,还支持接入AI智能分析&#…

Pytorch | 利用SMI-FGRM针对CIFAR10上的ResNet分类器进行对抗攻击

Pytorch | 利用I-FGSSM针对CIFAR10上的ResNet分类器进行对抗攻击 CIFAR数据集SMI-FGRM介绍SMI-FGRM算法流程 SMI-FGRM代码实现SMI-FGRM算法实现攻击效果 代码汇总smifgrm.pytrain.pyadvtest.py 之前已经针对CIFAR10训练了多种分类器: Pytorch | 从零构建AlexNet对CI…

基于PREEvision的UML设计

众所周知,PREEvision是一款强大的电子电气架构协同开发及管理软件,可以很好地帮助架构工程师完成架构开发工作,其功能包括需求管理、定义功能逻辑、系统软件开发、网络设计、线束设计及整体工程的产品线管理和变形管理等。随着工程师们越来越…

闲谭Scala(2)--安装与环境配置

1. 概述 Java开发环境安装,需要两步,第一安装JDK,第二配置环境变量。 Scala的话,也是两步,第一安装Scale环境,第二配置环境变量。 需要注意的是,配置环境变量,主要是想让windows操…

智慧地下采矿:可视化引领未来矿业管理

图扑智慧地下采矿可视化平台通过整合多源数据,提供实时 3D 矿井地图及分析,提升了矿产开采的安全性与效率,为矿业管理提供数据驱动的智能决策支持,推动行业数字化转型。

王鹤棣新剧《大奉打更人》开播 数据亮眼刷新招商纪录

临近年末,各类国产剧集仍频上新,档期竞争格外激烈。而由王鹤棣领衔主演的古装悬疑轻喜剧《大奉打更人》已于12月28日在CCTV-8和腾讯视频同步播出,开播即横扫各大榜单。该剧从定档官宣到开播,热度一路攀升,开播后更是掀…

数据中台从centos升级为国产操作系统后,资源增加字段时,提交报500错误

文章目录 背景一、步骤1.分析阶段2.查看nginx3.修改用户(也可以修改所有者权限) 背景 故障报错: nginx报错信息: 2024/12/19 15:25:31 [crit, 500299#0: *249 onen0 " /var/lib/nginx/tmp/cient body/0000000001" f…

BLE core 内容整理解释

本文内容比较杂散,只是做记录使用,后续会整理的有条理些 link layer 基本介绍 **Link Layer Control(链路层控制)**是蓝牙低功耗(BLE)协议栈的核心部分,负责实现设备间可靠、安全、低功耗的数…

【疑难杂症】 HarmonyOS NEXT中Axios库的响应拦截器无法拦截424状态码怎么办?

今天在开发一个HarmonyOS NEXT的应用的时候,发现http接口如果返回的状态码是424时,我在axios中定义的拦截器失效了。直接走到了业务调用的catch中。 问题表现: 我的拦截器代码如下: 解决办法: 先说解决办法&#xff…

聚类评价指标

聚类评价指标分为 内部指标 和 外部指标 两大类,用于评估聚类算法的性能。 一、内部评价指标 内部评价指标不依赖真实标签,主要通过聚类结果本身的紧凑性和分离性进行评估。 轮廓系数(Silhouette Coefficient, SC) 衡量数据点与其…

flask后端开发(1):第一个Flask项目

目录 一、Helloworddebug、host、port的配置 gitcode地址: https://gitcode.com/qq_43920838/flask_project.git 一、Helloword 一般是会创建两个文件夹和app.py app.py from flask import FlaskappFlask(__name__)app.route(/) def hello_world():return Hello…

一文复盘:RAG技术-大模型

原文:https://zhuanlan.zhihu.com/p/13962398269 RAG(Retrieval-Augmented Generation)之所以被关注,有两方面原因: 1、没有跑大模型的资源:大多数人没有GPU集群搞LLM的预训练。 2、大模型缺乏知识&…