Flutter从安装到跑起来

从FlutterSDK的下载安装,到各种环境变量配置,网络问题的处理,以及模拟器和真机跑起来过程中的问题记录。不过这里只是针对Windows。有些部分,其他系统也是一样的,只是环境变量设置可能不同。

获取最新SDK

1、看文档Using Flutter in China:docs.flutter.dev/community/c...

2、SDK下载地址:flutter.cn/docs/get-st...

3、将SDK解压到任意目录,比如:M:\softback\developer\flutter

设置环境变量(Windows)

1、在path这个条目中增加以下路径:M:\softback\developer\flutter\bin,如果还下载DartSDK,可以将DartSDK的路径放置在FlutterSDK路径的下方,如下图:

其实,在FlutterSDK中已经包含了DartSDK了。

2、重新打开一个命令行窗口,输入以下命令查看FlutterSDK(DartSDK)路径

shell 复制代码
where.exe flutter dart

输出的flutter在dart之前就对了。

3、设置依赖镜像地址

在系统变量中增加以下两个变量:

PUB_HOSTED_URL = pub.flutter-io.cn

FLUTTER_STORAGE_BASE_URL = storage.flutter-io.cn,如下图

这里将pub的地址改为了国内的,所以在你要向pub推送自己的dart/flutter package的时候,你还需要将其改回去,如

shell 复制代码
flutter pub publish --server=https://pub.dartlang.org

运行flutter doctor

如果有什么问题,按照上面的提示进行处理即可。

安装javaSDK,配置环境变量

创建以下环境变量:

JAVA_HOME = C:\Program Files\Java\jdk-20

然后再Path变量中加入:%JAVA_HOME%\bin

安装Android Studio,从其安装Android SDK,Android SDK Platform-Tools以及Android SDK Build-Tools,然后创建安卓模拟器

这些按照步骤来,没有什么特别的,忽略先。

同意安卓协议(如果提示有问题)

shell 复制代码
flutter doctor --android-licenses

这一步很可能提示如下错误:

shell 复制代码
this version of the java runtime only recognizes class file versions up to 52.0

你只需要升级一下你的JavaSDK版本到最新即可。

创建应用

经过以上步骤后,没有意外,你可以通过一下命令创建flutter项目

shell 复制代码
flutter create xxx_xxx

运行程序

查看你前面创建的Android模拟器

shell 复制代码
flutter emulators

在命令行执行以下命令,启动模拟器

shell 复制代码
flutter emulators --launch Android10

上面的"Android10"你可以换成其他的模拟器id,上面列出来的那些。上面的命令如果正常,你会看到一个模拟器被启动了。

查看设备

shell 复制代码
flutter devices

这里会列出刚刚启动的模拟器(如果没有启动任何模拟器,这里不会列出模拟器,就是说这里只会列出当前互动的设备),还有链接在电脑上的真机。

如果要在模拟器中运行,执行下面的命令

shell 复制代码
flutter run -d emulator-5554

如果要在真机上运行,执行下面的命令

shell 复制代码
flutter run -d V2031A

上面命令中的参数是对应的模拟器id和真机id,可以从设备列表中看到。到此你已经可以运行flutter应用了。

不过,由于国内的网络环境,你可能会遇到各种问题,导致上面的命令运行失败,比如出现:

shell 复制代码
Running Gradle task 'assembleDebug'...

这里会一直卡住,直到永远。。。。

解决网络问题

找到flutterSDK的目录,需要修改两个文件

git 复制代码
@@ -58,20 +58,30 @@ class FlutterExtension {
     /** Allows to override the target file. Otherwise, the target is lib/main.dart. */
     String target
 }
 
 buildscript {
     repositories {
-        google()
-        mavenCentral()
+        // google()
+        // mavenCentral()
+		maven { url 'https://maven.aliyun.com/repository/google' }
+        maven { url 'https://maven.aliyun.com/repository/jcenter' }
+        maven {
+            url 'http://maven.aliyun.com/nexus/content/groups/public'
+            allowInsecureProtocol = true
+        }
+        maven { 
+            url 'http://download.flutter.io'
+            allowInsecureProtocol = true
+        }
     }
     dependencies {
         /** When bumping, also update ndkVersion above, as well as the Android Gradle Plugin
          * version in ../lib/src/android/gradle_utils.dart.
          */
-        classpath 'com.android.tools.build:gradle:7.3.0'
+        classpath 'com.android.tools.build:gradle:7.2.0'
     }
 }
 
 /**
  * Some apps don't set default compile options.
  * Apps can change these values in android/app/build.gradle.
@@ -84,13 +94,13 @@ android {
     }
 }
 
 apply plugin: FlutterPlugin
 
 class FlutterPlugin implements Plugin<Project> {
-    private static final String DEFAULT_MAVEN_HOST = "https://storage.googleapis.com";
+    private static final String DEFAULT_MAVEN_HOST = "https://storage.flutter-io.cn/download.flutter.io";
 
     /** The platforms that can be passed to the `--Ptarget-platform` flag. */
     private static final String PLATFORM_ARM32  = "android-arm";
     private static final String PLATFORM_ARM64  = "android-arm64";
     private static final String PLATFORM_X86    = "android-x86";
     private static final String PLATFORM_X86_64 = "android-x64";

第二个

git 复制代码
@@ -14,16 +14,25 @@
 
 import java.nio.file.Paths
 
 String storageUrl = System.getenv('FLUTTER_STORAGE_BASE_URL') ?: "https://storage.googleapis.com"
 
 repositories {
-    google()
-    mavenCentral()
+    // google()
+    // mavenCentral()
+    // maven {
+       // url "$storageUrl/download.flutter.io"
+    // }
+	maven { url 'https://maven.aliyun.com/repository/google' }
+    maven { url 'https://maven.aliyun.com/repository/jcenter' }
     maven {
-        url "$storageUrl/download.flutter.io"
+            url 'http://maven.aliyun.com/nexus/content/groups/public'
+            allowInsecureProtocol = true
+        }
+    maven {
+        url "https://storage.flutter-io.cn/download.flutter.io"
     }
 }
 
 File flutterRoot = projectDir.parentFile.parentFile.parentFile
 
 assert flutterRoot.isDirectory()
相关推荐
孤鸿玉9 小时前
Fluter InteractiveViewer 与ScrollView滑动冲突问题解决
flutter
叽哥15 小时前
Flutter Riverpod上手指南
android·flutter·ios
BG1 天前
Flutter 简仿Excel表格组件介绍
flutter
zhangmeng1 天前
FlutterBoost在iOS26真机运行崩溃问题
flutter·app·swift
恋猫de小郭1 天前
对于普通程序员来说 AI 是什么?AI 究竟用的是什么?
前端·flutter·ai编程
卡尔特斯1 天前
Flutter A GlobalKey was used multipletimes inside one widget'schild list.The ...
flutter
w_y_fan2 天前
Flutter 滚动组件总结
前端·flutter
醉过才知酒浓2 天前
Flutter Getx 的页面传参
flutter
火柴就是我3 天前
flutter 之真手势冲突处理
android·flutter
Speed1233 天前
`mockito` 的核心“打桩”规则
flutter·dart