环境配置
安装前准备
- 需要 Git for Windows](https://gitforwindows.org/) 2.27 或更高的版本
- Android Studio 2023.3.1 及以上
- 开发工具 Visual Studio Code 1.77,IntelliJ IDEA 2023.3,Android Studio 2023.3.1 三个选一个
- 安装 Flutter SDK
Mac 版
安装 Fluter SDK
下载 Flutter SDK
解压后放入用户目录 thell:/Users/thell/flutter
打开终端,输入:
bashvim ~/.bash_profile
添加环境变量
bashexport PATH=/Users/thell/flutter/bin:$PATH source ~/.bash_profile
查看配置是否成功
bashflutter -h
允许协议
bashflutter doctor --android-licenses
出现以下提示就是成功
dartthell@hailongdeMacBook-Air ~ % flutter doctor Doctor summary (to see all details, run flutter doctor -v): [✓] Flutter (Channel stable, 2.2.3, on macOS 11.4 20F71 darwin-arm, locale zh-Hans-CN) [✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2) [✓] Xcode - develop for iOS and macOS [✓] Chrome - develop for the web [✓] Android Studio (version 4.2) [✓] VS Code (version 1.58.2) [✓] Connected device (1 available)
安装 Android Studio 及 SDK,AVD
创建 Flutter 命令
flutter create xxxx(项目名称)
Unable to locate adb
- 报错是 x 项目的 SDK 没有设置,能打开虚拟机,但是每次打开报错,在项目的 adv 也没有虚拟机打开选项
- 在 android studio File=>Project Structure=>Project=>Project SDK=>打开创建的虚拟机目录即可
错误信息
Android sdkmanager not found. Update to the latest Android SDK and ensure that the cmdline-tools are
在 SDK 安装 Tools 下安装
cmdline-tools
Windows
安装 Flutter SDK
本次安装的是 Flutter3.22.2,android-studio 版本是:android-studio-2024.1.1.11-windows.exe
Windows官网
Mac官方
获取 Flutter SDK
Windows官网
Mac官方
windows 环境变量添加
window+R 输入:
sysdm.cpl
找到高级环境变量->系统变量->我的
flutter-SDK
放在D:\flutter\bin
,换将变量添加如下命令->新建->添加复制的路径
D:\flutter\bin
安装 java SE
检测 java 是否安装,cmd 输入 java 出现以下提示表示安装成功
C:\Users\Administrator>java
用法: java [-options] class [args...]
(执行类)
或 java [-options] -jar jarfile [args...]
(执行 jar 文件)
其中选项包括:
-d32 使用 32 位数据模型 (如果可用)
-d64 使用 64 位数据模型 (如果可用)
-server 选择 "server" VM
默认 VM 是 server.
-cp <目录和 zip/jar 文件的类搜索路径>
-classpath <目录和 zip/jar 文件的类搜索路径>
用 ; 分隔的目录, JAR 档案
和 ZIP 档案列表, 用于搜索类文件。
-D<名称>=<值>
设置系统属性
-verbose:[class|gc|jni]
启用详细输出
-version 输出产品版本并退出
-version:<值>
警告: 此功能已过时, 将在
未来发行版中删除。
需要指定的版本才能运行
-showversion 输出产品版本并继续
-jre-restrict-search | -no-jre-restrict-search
警告: 此功能已过时, 将在
未来发行版中删除。
在版本搜索中包括/排除用户专用 JRE
-? -help 输出此帮助消息
-X 输出非标准选项的帮助
-ea[:<packagename>...|:<classname>]
-enableassertions[:<packagename>...|:<classname>]
按指定的粒度启用断言
-da[:<packagename>...|:<classname>]
-disableassertions[:<packagename>...|:<classname>]
禁用具有指定粒度的断言
-esa | -enablesystemassertions
启用系统断言
-dsa | -disablesystemassertions
禁用系统断言
-agentlib:<libname>[=<选项>]
加载本机代理库 <libname>, 例如 -agentlib:hprof
另请参阅 -agentlib:jdwp=help 和 -agentlib:hprof=help
-agentpath:<pathname>[=<选项>]
按完整路径名加载本机代理库
-javaagent:<jarpath>[=<选项>]
加载 Java 编程语言代理, 请参阅 java.lang.instrument
-splash:<imagepath>
使用指定的图像显示启动屏幕
有关详细信息, 请参阅 http://www.oracle.com/technetwork/java/javase/documentation/index.html。
Windows 开发
安装步骤
下载并运行 Visual Studio 安装程序。
在安装程序中,选择 "Desktop development with C++" 工作负载。
安装完成后,启动 Visual Studio。
确认 C++ 编译工具链
确保你的系统上已经安装了适用于 Windows 的 C++ 编译工具链。在安装了“Desktop development with C++”工作负载之后,工具链应该已经配置好。你可以通过命令行检查 C++ 编译器是否可用:
bashcl
如果返回类似如下信息,则表示已正确安装 C++ 编译器:
bashMicrosoft (R) C/C++ Optimizing Compiler Version X.X.X for X86
安装 Android Studio
安装 SDK,安装前关闭所有杀毒软件,360 和管家
必装几个 sdk:
Android14,安装后核对是否为 x64:Google APls Intel x86 Atom_64 System lmage
Android SDK Build-Tools 35
需要安装 35.0.0、35.0.0-rc4、30.0.3 才可以
Android Emulator、Android Emulator hypervisor driver
lntel x86 Emulator Accelerator (HAXM installer)
Android SDK Platform-Tools
Google USB Driver
Android SDK Command-line Tools 13.0 安装最新的即可
Sources for Android 35
Intel x86 Emulator Accelerator(HAXM installer)
安装 flutter 插件
安装 Android 证书
在使用 Flutter 之前,按照指南安装所有必要的条件之后,再同意 Android SDK 平台的许可证。
flutter doctor --android-licenses #全部算则Y
进行 Flutter doctor 检测环境
按 windows 键+R,打开运行,输入: cmd 回车 输入 flutter doctor
注意:
Dart SDK已经在捆绑在Flutter里了,没有必要单独安装Dart。找到flutter存放路径flutter- > bin-> cache- > lockfile删除lockfile文件
C:\Users\Administrator>flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel stable, 2.2.3, on Microsoft Windows [Version 10.0.19042.1110],
locale zh-CN)
[√] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
[√] Chrome - develop for the web
[!] Android Studio (not installed)
[√] VS Code (version 1.59.0)
[√] Connected device (3 available)
! Doctor found issues in 1 category.
Vscode 运行 Flutter
新建 bat 文件输入:
C:\Android\AndroidSDK\emulator\emulator.exe -netdelay none -netspeed full -avd Pixel4XLAPI30
Pixel4XLAPI30
为Andorid Studio
的AVD
名称Vscode 安装 Flutter 插件
打开项目运行 Flutter run 即可在模拟器打开
按 F5 实现热更新
设置模拟器
配置 sdk 路径
添加 ANDROID_HOME
变量:
- 在“系统变量”部分,点击“新建”按钮。
- 在“变量名”字段中输入
ANDROID_HOME
。 - 在“变量值”字段中输入
C:\Users\thell\AppData\Local\Android\Sdk
。 - 点击“确定”保存。
更新 PATH
变量:
在“系统变量”部分,找到并选择
Path
变量,然后点击“编辑”按钮。在“编辑环境变量”窗口中,点击“新建”按钮,然后添加以下路径:
perlCopy code%ANDROID_HOME%\platform-tools %ANDROID_HOME%\tools %ANDROID_HOME%\tools\bin
点击“确定”保存所有更改。
配置模拟器
打开 VS Code 的命令面板(按 Ctrl + Shift + P
),输入 Flutter: Launch Emulator
并选择你刚刚创建的模拟器。
命令行配置
flutter emulators
flutter emulators --launch <emulator_id>
flutter devices
flutter run
创建项目
打开 vscode 安装 Flutter 插件
打开 vscode 按 F1 输入 Flutter:New Project,创建新项目,等待下载完成创建
安装运行即可
gradle 报错处理
Could not locate aapt. Please ensure you have the Android buildtools install
此问题需要安装
Android SDK Build-Tools 35、35.0.0-rc4、30.0.3 三个才可以
gradle 报销
查看 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-7.6.3-all.zip
手机下载https\://services.gradle.org/distributions/gradle-7.6.3-all.zip
,把\去掉直接输入到浏览器下载
在用户名下的.gradle 中找到 wrapper
下载好后解压到相应版本的目录下
手动复制.zip.lck 文件更名为.zip.ok 重新运行项目即可
设置代理
运行 gradle 时会报错,需要配置代理,路径 android/gradle.properties 配置增加代理
org.gradle.jvmargs=-Xmx4G -XX:MaxMetaspaceSize=2G -XX:+HeapDumpOnOutOfMemoryError
android.useAndroidX=true
android.enableJetifier=true
systemProp.http.proxyHost=127.0.0.1
systemProp.http.proxyPort=7890
systemProp.https.proxyHost=127.0.0.1
systemProp.https.proxyPort=7890
mavenRepositoryUrl=https://maven.aliyun.com/nexus/content/groups/public/
修改包名
android/app/build.gradle
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId = "com.example.oilie"
// You can update the following values to match your application needs.
// For more information, see: https://flutter.dev/to/review-gradle-config.
minSdk = flutter.minSdkVersion
targetSdk = flutter.targetSdkVersion
versionCode = flutter.versionCode
versionName = flutter.versionName
}
改为
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId = "com.rh.oilie"
// You can update the following values to match your application needs.
// For more information, see: https://flutter.dev/to/review-gradle-config.
minSdk = flutter.minSdkVersion
targetSdk = flutter.targetSdkVersion
versionCode = flutter.versionCode
versionName = flutter.versionName
}
因为 Flutter 和较新版本的 Gradle 不再支持在 AndroidManifest.xml
中通过 package
属性设置命名空间,而是需要将命名空间配置移动到 build.gradle
文件中
android {
namespace = "com.example.oilie"
compileSdk = flutter.compileSdkVersion
ndkVersion = flutter.ndkVersion
改为
android {
namespace = "com.rh.oilie"
compileSdk = flutter.compileSdkVersion
ndkVersion = flutter.ndkVersion
设置了不设置 android/app/src/main/AndroidManifest.xml
android/app/src/main/AndroidManifest.xml
老版本的设置此方式,新版本按以上的 android 设置即可,此方法不设置
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application
android:label="oilie"
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher">
改为
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.rh.oilie">
<application
android:label="oilie"
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher">
android/app/src/debug/AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>
改为
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.rh.oilie">
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>
android/app/src/main/kotlin/com/example/oilie/MainActivity.kt
package com.example.oilie
import io.flutter.embedding.android.FlutterActivity
class MainActivity: FlutterActivity()
改为
package com.rh.oilie
import io.flutter.embedding.android.FlutterActivity
class MainActivity: FlutterActivity()
kotlin/com 下的包名
改为