最近考虑跨平台开发,无奈不太了解 Objective-C 和 Swift 语言,手头也没有 macOS 设备,故尝试 Flutter,顺便学习一下 Dart 语言。接下来聊聊开发过程中的一些坑。
Android license status unknown
底下还有一条详情:“Try re-installing or updating your Android SDK Manager.”。
在网上搜索,得到的结果大多如下:将 SDK 目录下 emulator 的 bin 目录直接替换 tools 的 bin 目录。当然,可以这样操作最好,但我不属于这种情况,我的 emulator 目录下压根没有 bin。
于是我想,要是我把 Android Emulator 卸载重装呢?
事实证明这种方法是不可取的。在我这样操作之后,emulator 目录下不仅依然没有 bin,反倒是 tools 目录直接消失了。
众所周知,我是一个很喜欢折腾的人,于是我尝试了多种方法,最后发现:
Android Studio 把 SDK Tools 列为过时的软件包了。淦。
只需要在 Android Studio 的设置 – Appearance & Behavior – System Settings – Android SDK – SDK Tools 里把底下的“Hide Obsolete Packages”取消勾选,再找到“Android SDK Tools”,安装即可。
pub get failed (server unavailable)
我是用 Visual Studio Code 建的项目,不然连报错提示都没有。
这个问题是由于 Google 的下载站被墙了,导致拉不到资源。解决方法倒也容易。
打开 PowerShell,输入:
PUB_HOSTED_URL ===== https://pub.flutter-io.cn
FLUTTER_STORAGE_BASE_URL ===== https://storage.flutter-io.cn
Linux 的话……打开终端,输入:
export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
macOS 也同样适用。
操作过后,再把你的 Flutter SDK 目录下的 pub-cache 目录给删了,重新新建项目就行。
Running Gradle task ‘assembleDebug’…
这句话本身没什么问题,但是一直卡在这里就有问题了。问题的根源还是 Gradle 服务器在国外,不是被墙就是访问奇慢。把源更换为阿里云就好。
主要是改 工程目录/android/build.gradle 和 Flutter SDK 目录/packages/flutter_tools/gradle/flutter.gradle 两个文件。
将这两个文件里 buildscript 和 allprojects 对象下的 repositories 中的 google() 和 jcenter() 删除或注释掉,然后分别加入:
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' }
重启 IDE,重新编译即可。