2980 字
15 分钟
Flutter环境配置
2022-01-01

安装前准备#

  • 需要 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#

  1. 下载 Flutter SDK

  2. 解压后放入用户目录 thell:/Users/thell/flutter

  3. 打开终端,输入:

     vim ~/.zshrc
     source ~/.zshrc
     
     vim ~/.bash_profile
     source ~/.bash_profile
     
     vim ~/.zshenv
     source ~/.zshenv
    
  4. 添加环境变量

    export PATH=/Users/rh/flutter/bin:$PATH
    source ~/.bash_profile
    
  5. 查看配置是否成功

    flutter -h
    

    查看目录

    which flutter
    /Users/rh/flutter/flutterenv/flutter3.27.2/bin/flutter
    
  6. 允许协议

    flutter doctor --android-licenses
    
  7. 出现以下提示就是成功

    thell@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 也没有虚拟机打开选项
    1. 在 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

![image-20240710122522388](data/svg+xml,%3Csvg xmlns=“http://www.w3.org/2000/svg” viewBox=“0 0 1060 559”%3E%3C/svg%3E)

Windows官网

Mac官方

  1. 获取 Flutter SDK

    Windows官网

    Mac官方

  2. windows 环境变量添加

    window+R 输入:sysdm.cpl找到高级环境变量->系统变量->

    我的flutter-SDK放在D:\flutter\bin,换将变量添加如下命令->新建->添加复制的路径

D:\flutter\bin

![image-20240710122556454](data/svg+xml,%3Csvg xmlns=“http://www.w3.org/2000/svg” viewBox=“0 0 1206 747”%3E%3C/svg%3E)

image-20240710122725329

image-20240710122812449

安装 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 开发#

下载 C++环境

安装步骤#

  • 下载并运行 Visual Studio 安装程序。

  • 在安装程序中,选择 “Desktop development with C++” 工作负载。

  • 安装完成后,启动 Visual Studio。

  • 确认 C++ 编译工具链#

    确保你的系统上已经安装了适用于 Windows 的 C++ 编译工具链。在安装了“Desktop development with C++”工作负载之后,工具链应该已经配置好。你可以通过命令行检查 C++ 编译器是否可用:

    cl
    

    如果返回类似如下信息,则表示已正确安装 C++ 编译器:

    Microsoft (R) C/C++ Optimizing Compiler Version X.X.X for X86
    

安装 Android Studio#

下载地址#

  • 安装 SDK,安装前关闭所有杀毒软件,360 和管家

    必装几个 sdk:

    1. Android14,安装后核对是否为 x64:Google APls Intel x86 Atom_64 System lmage

    2. Android SDK Build-Tools 35

      需要安装 35.0.0、35.0.0-rc4、30.0.3 才可以

    3. Android Emulator、Android Emulator hypervisor driver

    4. lntel x86 Emulator Accelerator (HAXM installer)

    5. Android SDK Platform-Tools

    6. Google USB Driver

    7. Android SDK Command-line Tools 13.0 安装最新的即可

    8. Sources for Android 35

    9. Intel x86 Emulator Accelerator(HAXM installer)

  • 安装 flutter 插件

    image-20240710122924240

image-20240710122952803

安装 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#

  1. 新建 bat 文件输入:

    C:\Android\AndroidSDK\emulator\emulator.exe -netdelay none -netspeed full -avd Pixel4XLAPI30 Pixel4XLAPI30Andorid StudioAVD名称

  2. Vscode 安装 Flutter 插件

  3. 打开项目运行 Flutter run 即可在模拟器打开

  4. 按 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

完全卸载Android Studio#

要完全删除 Android Studio,包括所有相关文件和设置,可以按照以下步骤操作:

首先,通过系统的控制面板卸载 Android Studio

Windows:

  1. 打开 控制面板
  2. 点击 程序 > 程序和功能
  3. 找到 Android Studio,右键点击并选择 卸载
  4. 按照提示完成卸载过程。

macOS:

  1. 打开 Finder
  2. 找到 应用程序 文件夹,找到 Android Studio
  3. Android Studio 拖到 废纸篓

Windows:#

  1. 删除 Android Studio 配置文件:
    • 打开文件资源管理器,进入以下目录:
      • C:\Users\你的用户名\.android
      • C:\Users\你的用户名\AppData\Local\Google\Android Studio
      • C:\Users\你的用户名\AppData\Roaming\Google\Android Studio
    • 删除这些文件夹中的所有文件。
  2. 删除 SDK 文件夹(如果你不再需要 Android SDK):
    • 默认路径:C:\Users\你的用户名\AppData\Local\Android\Sdk
    • 如果你不再需要 SDK,可以直接删除这个文件夹。
  3. 删除缓存:
    • C:\Users\你的用户名\.gradle

macOS:#

  1. 删除 Android Studio 配置文件:

    • 打开终端,执行:

      bash复制编辑rm -rf ~/.android
      rm -rf ~/Library/Preferences/AndroidStudio*
      rm -rf ~/Library/Application\ Support/Google/AndroidStudio*
      rm -rf ~/Library/Caches/Google/AndroidStudio*
      rm -rf ~/Library/Logs/Google/AndroidStudio*
      
  2. 删除 SDK 文件夹(如果不再需要):

    • 默认路径:~/Library/Android/sdk

创建项目#

命令行增加包名

flutter create projectname --org com.ronhai

打开 vscode 安装 Flutter 插件Flutter

打开 vscode 按 F1 输入 FlutterProject,创建新项目,等待下载完成创建

image-20241211155414670

安装运行即可

image-20241211151939855

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 三个才可以

查看 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

手动配置gradle包#

手动下载https\://services.gradle.org/distributions/gradle-7.6.3-all.zip,把\去掉直接输入到浏览器下载

在用户名下的.gradle 中找到 wrapper

image-20250210173503863

下载好后解压到相应版本的目录下,我的目录是在C:\Users\ronhai\.gradle\wrapper\dists\gradle-7.6.3-all\aocdy2d2z8kodnny3rsumj8i8解压下载到直目录

手动复制.zip.lck 文件更名为.zip.ok 重新运行项目即可,目录和文件保持以下结构

image-20250227145811720

设置代理#

运行 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/

settings.gradle配置代理

  repositories {
        // google()
        // mavenCentral()
        // gradlePluginPortal()
        maven { url 'https://maven.aliyun.com/repository/google' }
        maven { url 'https://maven.aliyun.com/repository/public' }
        maven { url 'https://maven.aliyun.com/nexus/content/groups/public' }
        maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter' }
        maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
    }

build.gradle配置代理

allprojects {
    repositories {
        // google()
        // mavenCentral()
               maven { url 'https://maven.aliyun.com/repository/public' }
        maven { url 'https://maven.aliyun.com/repository/google' }
        maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter' }
        maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
    }
}

清除用户名下的C:\Users\ronhai\.gradle\cachesC:\Users\ronhai\.gradle\wrapper文件夹重新打包

更改gradle包#

更改android下的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
distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-all.zip

gradlew清除缓存#

在android目录下执行以下命令,清除缓存,会重新下载gradle的包

./gradlew clean build --refresh-dependencies

报java版本错误#

官方文档 :https://docs.flutter.dev/release/breaking-changes/android-java-gradle-migration-guide

出现此错误的原因是 Android Studio Flamingo 将其捆绑的 Java SDK 从 11 更新到 17。Flutter 使用与 Android Studio 捆绑的 Java 版本来构建 Android 应用。使用 Java 17 时, 7.3 之前的Gradle 版本无法运行。

错误类似于Unsupported class file major version 65,这表明您的 Java 版本比您正在运行的 Gradle 版本要新。AGP、Java 和 Gradle 之间存在一组不明显的依赖关系。

flutter运行跟自己电脑装的java版本没有关系,调用的是Android Studio的java来打包,版本是在Android Studio中控制,简单的方式是下载相对应的Android Studio版本,下载地址:https://developer.android.google.cn/studio/archive切换为英文下载

查看运行的版本

flutter doctor -v

修改包名#

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 下的包名#

image-20241231151111320

改为

image-20241231151137225

重新生成ios和安卓#

更换了flutter的版本需要重新生成目录

生成android#

移除android目录,重新创建指定语言的android目录

# 进入工程目录,删除android目录
rm -rf android
 
# 重新创建java语言的android目录
flutter create -a java .
 
# 重新创建kotlin语言的android目录
flutter create -a kotlin .

生成ios#

移除ios目录,重新创建指定语言的ios目录

# 进入工程目录,删除ios
rm -rf ios 
 
# 重新创建指定swift语言的ios目录
flutter create -i swift .
 
# 重新创建指定objective-c 语言的ios目录
flutter create -i objc .  

pub使用#

flutter pub cache clean#

这个命令用于清理 Flutter 的包缓存。在使用 Flutter 进行开发时,会下载和缓存一些第三方依赖包,这些包会被保存在 Flutter 的包缓存中。flutter pub cache clean 命令可以清除这些缓存,当你需要清理缓存并重新下载依赖包时,可以使用这个命令

flutter clean#

这个命令用于清理 Flutter 项目的构建文件。当你在 Flutter 项目中进行构建时,会生成一些构建文件和输出目录,例如生成的 APK 文件、构建缓存等。flutter clean 命令可以清除这些构建文件,当你需要清理构建文件并重新构建项目时,可以使用这个命令

总结来说,flutter pub cache clean 主要用于清理 Flutter 包缓存,而 flutter clean 主要用于清理项目的构建文件。它们的使用场景和目的不同,根据具体的需求选择使用适当的命令。

使用flutter clean打开pubspec.yaml保存会自动下载依赖,

flutter pub get#

下载依赖

Flutter环境配置
https://www.tanghailong.com/posts/flutter/env/
作者
唐海龙
发布于
2022-01-01
许可协议
CC BY-NC-SA 4.0