从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()