前言
如题,这篇博客的目的是主要是为了分享作者自己在安装Flutter框架中所遇到的一些问题和可能的解决方案。如果有写的不对的地方还请大家指正。
作者是一名大一新生,试图通过Flutter框架来构建自己的Android应用。
那么,为什么我会选择Fultter?
- 我个人非常喜欢谷歌 MD 3 的设计语言,说白了就是喜欢他的颜值。
- Flutter是一个跨平台框架,可以用一套代码打包多个平台的应用。
- 我个人正在使用的一些优秀的软件都是基于Flutter框架的,如,动漫之家X,kazumi。
作者现在撰稿的时间是北京时间 2024/12/17 19:25:26
为什么要强调这个?
因为我发现很多关于Flutter的文章都已经是几年前的了,有些文章对于现有的问题的解决方案已经失效了,所以我才决定抽时间来写这么一篇文章来帮助那些想入坑Flutter的新人们(虽然我也是一个接触Flutter一天多的萌新,但是我感觉我在安装的过程中几乎把能踩的坑都踩了,所以希望这篇文章能帮助大家!!)
安装
这里建议大家可以直接去Flutter中文官网阅读官方的安装指南就行。下图是Flutter中文官网的截图
点击右上角的开始使用,按照指示一步一步安装就好。
下载Flutter SDK建议使用 自行下载安装 ,因为 使用VSCode安装 是在Clone Flutter在Github的仓库,下载速度将会非常慢。
下载完成后可以尝试在CMD中执行
flutter --version
来确定是否安装成功。(确定环境变量配置好之后,可能需要重启一下电脑才能生效)
然后执行
flutter doctor
安装成功应该会显示如下内容:
这里我们主要关注Android那一栏是不是完全打勾的,如果不是就要根据上面的解决提示去排查。
这里主要会出现问题的原因多半是Android Studio里面的没有下载要求的SDK所导致的。需要你在Android Studio的Settings - SDK Manager中按照文档要求下载SDK。
如果你在下载Android SDK的过程中更改到了其他位置,如我的位置就是 D:\dev\android\sdk
那么你需要执行以下的命令来更改SDK位置的配置:
flutter config --android-sdk D:\dev\android\sdk
至此,Flutter的安装就应该完成了。
(如果你想打包Windows软件的话,你需要去安装一下Visual Studio中 使用C++的桌面开发 部分,如下图)
换源
Flutter在打包软件的过程中会依赖很多国外的软件包,其中包括Google。所以想在国内不使用加速器来运行Flutter基本是不可能的,所以我们需要换源。
这里使用的清华Tuna的官方镜像:Flutter | 镜像使用帮助
同样你也可以使用官方社区的源,但是不建议使用阿里云的源,不知道为什么,我是用阿里云的源就会报错(见下文)。
我这里主要介绍一下我自己的设置。
环境变量
添加以下两项:
FLUTTER_STORAGE_BASE_URL
https://mirrors.tuna.tsinghua.edu.cn/flutter
PUB_HOSTED_URL
https://mirrors.tuna.tsinghua.edu.cn/dart-pub
./android/build.gradle
allprojects {
repositories {
// 添加这一段
maven { url 'https://mirrors.tuna.tsinghua.edu.cn/git/flutter/download.flutter.io' }
google()
mavenCentral()
}
}
./android/gradle/wrapper/gradle-wrapper.properties
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
# distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-all.zip
# 直接把对应的包下载下来保存在本地
distributionUrl=file:///D:/dev/gradle/gradle-8.3-all.zip
这里直接去阿里云的镜像站可以下载:Gradle安装包下载
flutter/packages/flutter_tools/gradle/src/main/groovy/flutter.groovy
buildscript {
repositories {
// 在这里插入
maven { url 'https://mirrors.tuna.tsinghua.edu.cn/git/flutter/download.flutter.io' }
google()
mavenCentral()
}
dependencies {
// When bumping, also update:
// * ndkVersion in FlutterExtension in packages/flutter_tools/gradle/src/main/groovy/flutter.groovy
// * AGP version in the buildscript block in packages/flutter_tools/gradle/src/main/kotlin/dependency_version_checker.gradle.kts
// * AGP version constants in packages/flutter_tools/lib/src/android/gradle_utils.dart
// * AGP version in dependencies block in packages/flutter_tools/gradle/build.gradle.kts
classpath("com.android.tools.build:gradle:7.3.0")
}
}
代码对应的位置在100行以后
问题解决
主要是现在作者已经完成了Flutter的安装,很多的问题也难以复现了,所以我就按照我的印象来写这部分,帮大家避坑。
(这里面主要列了一些本人遇到的有代表性的报错,有些不重要的,或者是由我手贱造成的就没有列在里面)
重要提示!!!
如果你使用下面的各种解决方法,仍然没有解决问题的,你可能需要初始化以下工程依赖,具体的方法在文章的最后一部分。
No Connected Devices Found
这个是因为你没有启动虚拟机。如果你是熟悉Android Studio的同学,这个问题应该很轻松就能解决。不过我这里还是讲一下:
通过Android Studio启动
通过CMD启动
分别输入下面的两条命令就可以启动
flutter emulators
flutter emulators --launch <emulator Id>
这里建议,如果大家使用Android Studio开发的话,就用第一种;如果用VS Code开发的话用第二种。(其实我更加建议大家使用第一种方法)
卡 Running Gradle task 'assembleDebug'...
这个问题的出现一般是没有配置好源引起的。这里咱们需要检查一下上面换源所讲的内容大家是否完成了。
如果完成之后问题还没有解决,那就需要去清理一下Gradle的缓存,方法如下:
在工程所在的目录的终端输入:
cd android
./gradlew clean build
如果这里报错显示无法完成的话,有几种情况:(具体的报错代码我记不清了,所以这里主要靠我自己的描述,同样的,你也可以根据报错内容来自行判断)
在初始化的过程中会下载一个50mb的文件,这里可能需要使用加速器。
- 在下载这个文件之前报错:这个问题主要是因为你没有安装Java环境,关于这个的安装我就不介绍了,在优快云上有很多相关的文章
- 在下载这个文件之后报错BULID FAILED:这个问题主要是因为你的Gradle版本和Java版本不匹配。官方的最新的Flutter框架使用的是Gradle 8.3最高支持到Java 20,这点请大家注意。
这是我找知乎老哥要的图:原地址
Could not find kotlinx-coroutines-core-jvm-1.7.1.jar (org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.7.1). Searched in the following locations: https://maven.aliyun.com/repository/jcenter/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.7.1/kotlinx-coroutines-core-jvm-1.7.1.jar
这个问题是我在使用阿里云的仓库时遇见的,如果你按照我的步骤,应该是不会遇到这个问题的。
Error: Gradle task assembleDebug failed with exit code 1
这个的可能原因是因为你没有同意Flutter的相关协议,可以通过以下的方法解决:
flutter doctor --android-licenses
然后一路输入'y'即可。
Gradle threw an error while downloading artifacts from the network.
这个问题的原因是你没有正确的换源,导致无法下载对应的依赖。
(其实换不换源都没有一个加速器来的方便,中国的开发者太难了。。。)
����: [options] Դֵ 8 �ѹ�ʱ������δ�����а���ɾ�� ����: [options] Ŀ��ֵ 8 �ѹ�ʱ������δ�����а���ɾ�� ����: [options] Ҫ�����й��ѹ�ʱѡ��ľ���, ��ʹ�� -Xlint:-options�� 3 ������
奇怪的报错,不明所以,但是并不影响运行。
Warning: SDK processing. This version only understands SDK XML versions up to 3 but an SDK XML file of version 4 was encountered. This can happen if you use versions of Android Studio and the command-line tools that were released at different times.
这个警告通常是由于你使用的 Android Studio 和 命令行工具 的版本不一致。具体来说,你的 SDK XML 文件 的版本高于当前工具所支持的最新版本。
但是这个问题一般也不影响调试代码。
Flutter assets will be downloaded from https://mirrors.tuna.tsinghua.edu.cn/flutter. Make sure you trust this source!
信任你在清华Tuna的源,这一点毋庸置疑。。。
初始化工程依赖
在工程的根目录终端输入以下命令即可:
flutter clean
flutter pub get
这时候你就可以使用右上角的运行按钮来调试你的工程了。
可能遇到的小问题
你可能在打包工程的时候会一直卡 Running Gradle task 'assembleDebug'... ,这个问题我只遇到了一次,不知道是什么原因引起的,多尝试几遍就好了。
下面列一下可能的问题和解决方案:(来源于Copilot)
这个问题可能是由于多种原因引起的。通过Ctrl + F5(热重载)和flutter build apk(完整构建)使用的流程和工具链略有不同。以下是一些可能的原因和解决方法:
- 依赖问题:确保所有依赖项都已正确安装和配置。你可以运行 flutter pub get 来获取所有的依赖项。
- 缓存问题:Flutter的缓存有时候会导致构建问题。你可以尝试清理缓存,然后重新构建项目。
- Gradle配置问题:确保你的Gradle配置正确,特别是 android/build.gradle 和 android/app/build.gradle 文件中的配置。
- 日志信息:运行 flutter build apk --verbose 来获取更详细的日志信息。这可以帮助你更好地了解是什么原因导致构建失败。
- 环境变量:确保你的环境变量配置正确,例如 ANDROID_HOME 和 JAVA_HOME 。
- Flutter和Dart版本:确保你使用的是最新版本的Flutter和Dart SDK。你可以运行 flutter up来检查和更新Flutter:
- 权限问题:有时候权限问题会导致构建失败。确保你有足够的权限来访问和修改项目目录和依赖项。
关于上面的第5点的解决方案:
要确保你的环境变量配置正确,特别是`ANDROID_HOME`和`JAVA_HOME`,你可以按照以下步骤操作:
1. 设置ANDROID_HOME:
打开你的系统环境变量设置:
在Windows上,右键点击"此电脑"(或"计算机"),选择"属性",然后点击"高级系统设置"。
在"系统属性"窗口中,点击"环境变量"。
在"系统变量"部分,点击"新建"按钮,创建一个新的变量:
变量名:ANDROID_HOME
变量值:你的Android SDK安装路径
找到Path变量,然后点击"编辑"。在路径列表中添加以下路径:
%ANDROID_HOME%\platform-tools
%ANDROID_HOME%\tools
2. 设置JAVA_HOME:
同样在"系统变量"部分,点击"新建"按钮,创建一个新的变量:
变量名:JAVA_HOME
变量值:你的JDK安装路径
找到Path变量,然后点击"编辑"。在路径列表中添加以下路径:
%JAVA_HOME%\bin
3. 验证设置:
打开一个新的命令提示符窗口,输入以下命令以确保环境变量已经正确设置:
echo %ANDROID_HOME%
echo %JAVA_HOME%
如果配置正确,命令应该返回你的Android SDK和JDK安装路径。
结尾
希望这篇文章能够帮助到你,如果你还遇到其他的问题,可以在评论区留言,我们可以一起探讨。
对于大学生的话,现在应该也临近期末考试了,希望我和大家都能考出好成绩!!!