flutter项目构建常见问题

最近在研究一个验证码转发的app,原理是尝试读取手机中对应应用的验证码进行自动转发。本次尝试用flutter开发,因为之前没有flutter开发的经验,遇到了诸多环境方面的问题,汇总一些常见的问题如下。希望帮助到入门的flutter开发者,避免踩坑。

problems

1. running failed

1.1. Bug Description

FAILURE: Build failed with an exception.* What went wrong:
Execution failed for task ':gradle:compileGroovy'.
> BUG! exception in phase 'semantic analysis' in source unit 'C:\dev\flutter\packages\flutter_tools\gradle\src\main\groovy\app_plugin_loader.groovy' Unsupported class file major version 65* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.* Get more help at https://help.gradle.orgBUILD FAILED in 31s
Running Gradle task 'assembleDebug'...                             32.3s┌─ Flutter Fix ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐  
│ [!] Your project's Gradle version is incompatible with the Java version that Flutter is using for Gradle.                                      │  
│                                                                                                                                                │
│ If you recently upgraded Android Studio, consult the migration guide at https://flutter.dev/to/java-gradle-incompatibility.                    │  
│                                                                                                                                                │  
│ Otherwise, to fix this issue, first, check the Java version used by Flutter by running `flutter doctor --verbose`.                             │  
│                                                                                                                                                │  
│ Then, update the Gradle version specified in D:\Project\Verify_Code_App\verify_code_app\android\gradle\wrapper\gradle-wrapper.properties to be │  
│ compatible with that Java version. See the link below for more information on compatible Java/Gradle versions:                                 │  
│ https://docs.gradle.org/current/userguide/compatibility.html#java                                                                              │  
│                                                                                                                                                │  
│                                                                                                                                                │  
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

1.2. Solution

执行flutter doctor --verbose发现

Java binary at: D:\Android\Android Studio\jbr\bin\java

说明java地址指向不对,要使用flutter config --jdk-dir <jdk目录>来指定java目录

2. settings.gradle.kts配置

2.1. Bug Description

配置gradle plugin国内镜像源时,使用了

pluginManagement {repositories {maven { url 'https://plugins.gradle.org/m2/' }maven { url 'https://maven.aliyun.com/nexus/content/repositories/google' }maven { url 'https://maven.aliyun.com/nexus/content/groups/public' }maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter'}gradlePluginPortal()google()mavenCentral()}
}

报错如下:

Launching lib\main.dart on sdk gphone64 x86 64 in debug mode...
e: D:\Project\Verify_Code_App\verify_code_app\android\settings.gradle.kts:14:25: Too many characters in a character literal ''https://maven.aliyun.com/nexus/content/repositories/google''
e: D:\Project\Verify_Code_App\verify_code_app\android\settings.gradle.kts:15:25: Too many characters in a character literal ''https://maven.aliyun.com/nexus/content/groups/public''
e: D:\Project\Verify_Code_App\verify_code_app\android\settings.gradle.kts:16:25: Too many characters in a character literal ''https://maven.aliyun.com/nexus/content/repositories/jcenter''FAILURE: Build failed with an exception.* Where:
Settings file 'D:\Project\Verify_Code_App\verify_code_app\android\settings.gradle.kts' line: 14* What went wrong:
Script compilation errors:Line 14:         maven { url=uri('https://maven.aliyun.com/nexus/content/repositories/google') }^ Too many characters in a character literal ''https://maven.aliyun.com/nexus/content/repositories/google''    Line 15:         maven { url=uri('https://maven.aliyun.com/nexus/content/groups/public') }^ Too many characters in a character literal ''https://maven.aliyun.com/nexus/content/groups/public''Line 16:         maven { url=uri('https://maven.aliyun.com/nexus/content/repositories/jcenter')}^ Too many characters in a character literal ''https://maven.aliyun.com/nexus/content/repositories/jcenter''   3 errors

2.2. Solution

网上的教程大多是按build.gradle文件来配置的,然而本项目采用了build.gradle.kts,所以需要修改为

修改为

repositories {maven { url=uri("https://plugins.gradle.org/m2/") }maven { url=uri("https://maven.aliyun.com/nexus/content/repositories/google") }maven { url=uri("https://maven.aliyun.com/nexus/content/groups/public") }maven { url=uri("https://maven.aliyun.com/nexus/content/repositories/jcenter")}gradlePluginPortal()google()mavenCentral()
}

3. 第三方库命名空间NameSpace问题

3.1. Bug Description

运行flutter项目时报错,提示找不到第三方库的命名空间:

Namespace not specified. Specify a namespace in the module's build file

3.2. Solution

build.gradle.kts文件中添加如下代码,来对第三方库进行命名空间指定:

subprojects {afterEvaluate {if (this is org.gradle.api.Project && (plugins.hasPlugin("com.android.library") || plugins.hasPlugin("com.android.application"))) {val androidExtension = extensions.findByType<com.android.build.gradle.BaseExtension>()androidExtension?.let { android ->val currentNamespace = android.namespaceprintln("project: ${this.name} Namespace get: $currentNamespace")val packageName = currentNamespace?: android.defaultConfig.applicationId?: android.sourceSets.getByName("main").manifest.srcFile.readText().let { manifestText ->val regex = Regex("package=\"([^\"]*)\"")regex.find(manifestText)?.groupValues?.get(1)}?: group.toString()android.namespace = packageNameprintln("Namespace set to: $packageName for project: ${this.name}")val manifestFile = android.sourceSets.getByName("main").manifest.srcFileif (manifestFile.exists()) {var manifestText = manifestFile.readText()if (manifestText.contains("package=")) {manifestText = manifestText.replace(Regex("package=\"[^\"]*\""), "")manifestFile.writeText(manifestText)println("Package attribute removed in AndroidManifest.xml for project: ${this.name}")} else {println("No package attribute found in AndroidManifest.xml for project: ${this.name}")}} else {println("AndroidManifest.xml not found for project: ${this.name}")}}}}
}

4. sms_advanced第三方依赖问题

4.1. Bug Description

在编写flutter项目时,引入了sms_advanced第三方库,但是在运行时,出现了如下错误:

* What went wrong:
The Android Gradle plugin supports only Kotlin Gradle plugin version 1.5.20 and higher.
The following dependencies do not satisfy the required version:
project ':sms_advanced' -> org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.50

pubspec.yml中引入的依赖:

dependencies:flutter:sdk: flutterhttp: ^1.3.0shared_preferences: ^2.5.2# The following adds the Cupertino Icons font to your application.# Use with the CupertinoIcons class for iOS style icons.cupertino_icons: ^1.0.8sms_advanced: ^1.1.0

4.2. Solution

网上大多数解决方案是修改android/build.gradle文件,将kotlin版本修改为1.5.20以上,这个方案需要对sms_advanced依赖中的文件进行操作。我尝试前往对应插件库的github项目地址,发现作者最新的更新仅上传了github并未上传到pub,因此无法通过修改版本号的方式解决问题。

在这里插入图片描述

因此我尝试修改dependencies,直接从git仓库中引入依赖,如下:

dependencies:flutter:sdk: flutterhttp: ^1.3.0shared_preferences: ^2.5.2# The following adds the Cupertino Icons font to your application.# Use with the CupertinoIcons class for iOS style icons.cupertino_icons: ^1.0.8sms_advanced:git:url: git@github.com:EddieKamau/sms_advanced.git

最终得以解决。

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

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

相关文章

Classic Control Theory | 12 Real Poles or Zeros (第12课笔记-中文版)

笔记链接&#xff1a;https://m.tb.cn/h.Tt876SW?tkQaITejKxnFLhttps://m.tb.cn/h.Tt876SW?tkQaITejKxnFL

图解感知机(Perceptron)

目录 1.感知机&#xff08;Perceptron&#xff09;介绍 2.网络结构与工作原理 3.模型工作示例 4.总结 1.感知机&#xff08;Perceptron&#xff09;介绍 感知机&#xff08;Perceptron&#xff09;是最早的人工神经网络模型之一&#xff0c;由弗兰克罗森布拉特&#xff08;…

多旋翼+航模+直升机:多型号无人机飞行表演技术详解

多旋翼、航模、直升机等多种型号的无人机飞行表演技术&#xff0c;是现代科技与艺术的完美结合&#xff0c;它们通过精密的编程、高效的通信、先进的定位与导航技术&#xff0c;以及复杂的编队控制算法&#xff0c;共同呈现出令人震撼的视觉效果。以下是对这些无人机飞行表演技…

deepseek 导出导入模型(docker)

前言 实现导出导入deepseek 模型。deepseek 安装docker下参考 docker 导出模型 实际生产环境建议使用docker-compose.yml进行布局&#xff0c;然后持久化ollama模型数据到本地参考 echo "start ollama" docker start ollama#压缩容器内文件夹&#xff0c;然后拷贝…

【MySQL】表的增删查改(CRUD)(上)

个人主页&#xff1a;♡喜欢做梦 欢迎 &#x1f44d;点赞 ➕关注 ❤️收藏 &#x1f4ac;评论 CRUD&#xff1a;Create&#xff08;新增数据&#xff09;、Retrieve&#xff08;查询数据&#xff09;、Update&#xff08;修改数据&#xff09;、Delete&#xff08;修改数据…

Win11作为宿主机,运行VMware 总没有网络

问题&#xff1a; 移动了VMware到新宿主机上后&#xff0c;虚拟机无法连接网络&#xff0c;其实会显示一个圆圈的图标&#xff0c;这是连接上的图标。 造成这个错误的原因是多种多样的。 用下面的方法来查排查错误。 1.控制面板-> 网络连接 安装好虚拟机后&#xff0c;会…

edge浏览器将书签栏顶部显示

追求效果&#xff0c;感觉有点丑&#xff0c;但总归方便多了 操作路径&#xff1a;设置-外观-显示收藏夹栏-始终

快速入门——第三方组件element-ui

学习自哔哩哔哩上的“刘老师教编程”&#xff0c;具体学习的网站为&#xff1a;10.第三方组件element-ui_哔哩哔哩_bilibili&#xff0c;以下是看课后做的笔记&#xff0c;仅供参考。 第一节 组件间的传值 组件可以有内部Data提供数据&#xff0c;也可由父组件通过prop方式传…

代码审计入门学习之sql注入

路由规则 入口文件&#xff1a;index.php <?php // ---------------------------------------------------------------------- // | wuzhicms [ 五指互联网站内容管理系统 ] // | Copyright (c) 2014-2015 http://www.wuzhicms.com All rights reserved. // | Licensed …

基于vue和微信小程序的校园自助打印系统(springboot论文源码调试讲解)

第3章 系统设计 3.1系统功能结构设计 本系统的结构分为管理员和用户、店长。本系统的功能结构图如下图3.1所示&#xff1a; 图3.1系统功能结构图 3.2数据库设计 本系统为小程序类的预约平台&#xff0c;所以对信息的安全和稳定要求非常高。为了解决本问题&#xff0c;采用前端…

QQ登录测试用例报告

QQ登录测试用例思维导图 一、安全性测试用例 1. 加密传输与存储验证 测试场景&#xff1a;输入账号密码并提交登录请求。预期结果&#xff1a;账号密码通过加密传输&#xff08;如HTTPS&#xff09;与存储&#xff08;如哈希加盐&#xff09;&#xff0c;无明文暴露。 2. 二…

【AI算法岗面试八股面经【超全整理】——机器学习】

AI算法岗面试八股面经【超全整理】 概率论【AI算法岗面试八股面经【超全整理】——概率论】信息论【AI算法岗面试八股面经【超全整理】——信息论】机器学习【AI算法岗面试八股面经【超全整理】——机器学习】深度学习【AI算法岗面试八股面经【超全整理】——深度学习】NLP【A…

luci界面开发中的MVC架构——LuCI介绍(二)

想要给openwrt开发应用&#xff0c;虽然直接可执行程序也可以运行&#xff0c;但是没有UI会很不方便&#xff0c;想要开发UI就要用openwrt的那一套&#xff0c;自然就是LuCI&#xff0c;LuCI又用了一套MVC框架&#xff0c;今天就讲讲这是个什么东西。 OpenWrt LuCI 界面开发中…

网络安全监测探针安装位置 网络安全监测系统

&#x1f345; 点击文末小卡片 &#xff0c;免费获取网络安全全套资料&#xff0c;资料在手&#xff0c;涨薪更快 软件简介&#xff1a; SockMon(SocketMonitor)网络安全监控系统是一款为电脑专业人员打造的一款出色的安防监控软件。在如今这个恶意软件&#xff0c;攻击&#…

车载DoIP协议 --- TCP详细解析

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 简单&#xff0c;单纯&#xff0c;喜欢独处&#xff0c;独来独往&#xff0c;不易合同频过着接地气的生活…

DeepSeek-R1本地部署保姆级教程

一、DeepSeek-R1本地部署配置要求 &#xff08;一&#xff09;轻量级模型 ▌DeepSeek-R1-1.5B 内存容量&#xff1a;≥8GB 显卡需求&#xff1a;支持CPU推理&#xff08;无需独立GPU&#xff09; 适用场景&#xff1a;本地环境验证测试/Ollama集成调试 &#xff08;二&a…

2025年SCI一区智能优化算法:真菌生长优化算法(Fungal Growth Optimizer,FGO),提供MATLAB代码

一. 真菌生长优化算法&#xff08;FGO&#xff09; 真菌生长优化算法&#xff08;Fungal Growth Optimizer&#xff0c;FGO&#xff09;是一种新型的自然启发式元启发式算法&#xff0c;其灵感来源于自然界中真菌的生长行为。该算法通过模拟真菌的菌丝尖端生长、分支和孢子萌发…

【人工智能】蓝耘智算平台盛大发布DeepSeek满血版:开创AI推理体验新纪元

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀ 蓝耘智算平台 蓝耘智算平台核心技术与突破元生代推理引擎快速入门&#xff1a;三步调用大模型接口&#xff0c;OpenAI SDK无缝兼容实战用例文…

基于AVue的二次封装:快速构建后台管理系统的CRUD方案

基于AVue的二次封装&#xff1a;快速构建后台管理系统的CRUD方案 在开发后台管理系统时&#xff0c;表格是常见的组件之一。然而&#xff0c;使用原生的Element Plus实现CRUD&#xff08;增删改查&#xff09;功能往往需要编写大量重复代码&#xff0c;过程繁琐。即使借助类似…

Spring全局异常处理

在项目开发中&#xff0c;异常是经常遇到的&#xff0c;但是如何更高效的处理好异常信息&#xff0c;让我们能快速定位到BUG&#xff0c;是很重要的&#xff0c;不仅能够提高我们的开发效率&#xff0c;还能让你代码看上去更舒服&#xff0c;SpringBoot的项目已经对有一定的异常…