当前位置: 首页 > news >正文

【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相关开发账号 (后续补充)

相关文章:

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

当我们从Kotlin Multiplatform Wizard | JetBrains 下载ComposeMultiplatform项目时 会遇到无法正常编译/运行的情况,一般网页和桌面是可以正常编译的, 我这里着重解决如下问题 1:Gradle版本不兼容或者Gradle连接超时 2:JDK版本不兼容 3:Gradle依赖库连…...

《计算机组成及汇编语言原理》阅读笔记:p128-p132

《计算机组成及汇编语言原理》学习第 10 天,p128-p132 总结,总计 5 页。 一、技术总结 1.8088 organization and architecture 8088处理器是16位电脑,寄存器是16位,数据总线(data bus)是8位,地址总线是20位。 (1)g…...

使用 OpenCV 在图像中添加文字

在图像处理任务中,我们经常需要将文本添加到图像中。OpenCV 提供了 cv2.putText() 函数,可以很方便地在图像上绘制文本,支持多种字体、颜色、大小和位置等参数。 本文将详细介绍如何使用 OpenCV 在图像中添加文字,介绍 cv2.putTe…...

实现某海外大型车企(T)Cabin Wi-Fi 需求的概述 - 4

大家好,我是Q,邮箱:1042484520qq.com。 今天我们在上几讲的基础上再扩展下 Cabin Wi-Fi 的功能需求,讲讲如何使能 5G TCU Wi-Fi STA Bridge 模式。 参考: 实现某海外大型车企(T)Cabin Wi-Fi 需求…...

Linux系统:内核态与用户态的深层思考

背景: 我们学习Linux的系统调用经常会遇到一个概念:“内核态和用户态的切换”,一般人只会告诉你说这个切换代价很大,具体是什么情况?为什么需要切换?一定需要切换吗?怎么就会触发切换&#xff1…...

# 光速上手 - JPA 原生 sql DTO 投影

前言 使用 JPA 时,我们一般通过 Entity 进行实体类映射,从数据库中查询出对象。然而,在实际开发中,有时需要自定义查询结果并将其直接映射到 DTO,而不是实体类。这种需求可以通过 JPA 原生 SQL 查询和 DTO 投影 来实现…...

ASP.NET Web应用程序出现Maximum request length exceeded报错

一、问题描述 在ASP.NET的web应用中,导出数据时出现500 - Internal server error.Maximum request length exceeded。 二、原因分析 这个错误通常出现在Web应用程序中,表示客户端发送的HTTP请求的长度超过了服务器配置的最大请求长度限制。这可能是因为…...

HTML——16.相对路径

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title></head><body><a href"../../fj1/fj2/c.html" target"_blank">链接到c</a><!--相对路径&#xff1a;-->…...

windows 默认的消息ID有那些---我与大模型对话

前言&#xff1a; 与大模型交流&#xff0c;提问要尽量简短&#xff0c;突出关键词。否则它的回答就可能事是而非。用它总结和查资料还行&#xff0c;用它解决问题路还很远。它非常注重标准格式并机械的执行标准格式&#xff0c;并且事无巨细&#xff0c;不能灵活简要的回答问…...

CSV vs 数据库:爬虫数据存储的最佳选择是什么

介绍 在爬虫技术中&#xff0c;数据存储是一个不可缺少的环节。然而&#xff0c;选择合适的存储方式对数据分析和结果应用都致关重要。CSV和数据库是常用的两种存储方式&#xff0c;但它们各有优缺。这篇文章将分析两者在爬虫数据存储方面的选择值。 微博热搜是当前网络热点话…...

编译原理学习笔记——CH7-Runtime Environments运行时环境

本章重点&#xff1a; 为什么函数调用可以采用栈式存储&#xff1f; 函数调用和返回过程中需要记录哪些信息&#xff1f;如何记录&#xff1f; 主要知识点&#xff1a;  环境、状态、activation &#xff08;激活&#xff09; of procedures 、elaboration &#xff08;确立…...

机器学习DAY7: 特征工程和特征选择(数据预处理)(完)

本文通过特征提取、特征转换、特征选择三个过程介绍数据预处理方法&#xff0c;特征提取将原始数据转换为适合建模的特征&#xff0c;特征转换将数据进行变换以提高算法的准确性&#xff0c;特征选择用来删除无用的特征。 知识点 特征提取特征转换特征选择 本次实验的一些示…...

vue3动态加载组件

如何在Vue3中动态加载组件 需求根据下拉框的值&#xff0c;加载不同的组件 新建文件aaa.vue&#xff0c;bbb.vue <template><div class"container">我是bbbb组件</div> </template><script lang"ts" setup name"taskPus…...

12.29 redis缓存一致性

更新操作 如果先更新数据库再更新缓存 先更新缓存再更新数据库 更新缓存为1 更新缓存尾2 更新数据库为2 更新数据库为1 那么最后缓存为2 数据库为1 数据不一致 先更新数据库&#xff0c;再更新缓存 数据库为1 数据库为2 缓存为2 缓存为1 还是不一致 于是这种情况我们改为将缓…...

SqlSugar配置连接达梦数据库集群

安装达梦数据库时&#xff0c;会自动在当前操作系统中创建dm_svc.conf文件&#xff0c;可以在其中配置集群信息&#xff0c;不同操作系统下的文件位置如下图所示&#xff1a;   dm_svc.conf文件内的数据分为全局配置区域、服务配置区域&#xff0c;以参考文献1中的示例说明&…...

评分模型在路网通勤习惯分析中的应用——提出问题(1)

1、问题的由来、目标和意义 最近一段时间和公司其它业务部门讨论时&#xff0c;发现一个有趣的交通路网问题&#xff0c;车辆从S点行驶到V点共用时40分钟&#xff0c;这段时间内路网中的卡口摄像头识别到了车辆通过的信息。如下图所示&#xff1a; 设计师需要通过这些有限的路…...

使用 OpenCV 绘制线条和矩形

OpenCV 是一个功能强大的计算机视觉库&#xff0c;它不仅提供了丰富的图像处理功能&#xff0c;还支持图像的绘制。绘制简单的几何图形&#xff08;如线条和矩形&#xff09;是 OpenCV 中常见的操作。在本篇文章中&#xff0c;我们将介绍如何使用 OpenCV 在图像上绘制线条和矩形…...

npm 切换镜像源

设置镜像源 npm config set registry https://mirrors.huaweicloud.com/repository/npm/ npm 官方原始镜像网址是&#xff1a;https://registry.npmjs.org/ 淘宝 NPM 镜像&#xff1a;https://registry.npm.taobao.org 阿里云 NPM 镜像&#xff1a;https://npm.aliyun.com 腾…...

CSS(四)display和float

display display 属性用于控制元素的显示类型&#xff0c;用的 display 值包括&#xff1a; block&#xff1a;块级元素 使元素成为块级元素&#xff0c;占据一整行&#xff0c;前后有换行宽度默认为父容器的 100%&#xff0c;可以设置宽高&#xff0c;支持 margin、padding、…...

MMaudio AI:如何通过 AI 实现精准的视频到音频合成

1. 引言&#xff1a;视频音效制作的新纪元 无论是短视频创作者还是电影后期制作团队&#xff0c;音效始终是提升作品质量的关键。然而&#xff0c;手动调整音效不仅耗时&#xff0c;还容易出错。试想&#xff0c;如果一项 AI 技术能够根据视频内容自动生成与画面完美同步的音效…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...

佰力博科技与您探讨热释电测量的几种方法

热释电的测量主要涉及热释电系数的测定&#xff0c;这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中&#xff0c;积分电荷法最为常用&#xff0c;其原理是通过测量在电容器上积累的热释电电荷&#xff0c;从而确定热释电系数…...