---
title: Flutter Environment Setup
description:
image:
tags: Flutter, Android SDK
---
# Android SDK + AVD
## Install Java 8
Download and install Java SDK (Recommended JDK version 8)
[Link1](https://javadl.oracle.com/webapps/download/AutoDL?BundleId=242029_3d5a2bb8f8d4428bbe94aed7ec7ae784) [Link2](https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html)
```bash
# Run
java -version
```
## Download tools package
1. Download [Command line tools](https://dl.google.com/android/repository/commandlinetools-win-6200805_latest.zip)
2. Extract zip and get a folder called `tools`
3. Upgrade binaries to latest, go to path `tools\bin` in **cmd**, run `sdkmanager --sdk_root=android-sdk tools`. accept? `y`
```bash
# If error occured, java version not compatible
# Exception in thread "main" java.lang.NoClassDefFoundError: ...
# Run
set SDKMANAGER_OPTS=--add-modules java.se.ee
# If error still orccur
# Open sdkmanager.bat in editor
# Add "-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee"
@Rem Execute sdkmanager
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% -XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee %JAVA_OPTS% %SDKMANAGER_OPTS% -classpath "%CLASSPATH%" com.android.sdklib.tool.sdkmanager.SdkManagerCli %CMD_LINE_ARGS%
```
4. move `android-sdk` folder to anywhere for **ANDROID_HOME**, `Z:\android-sdk`
6. Add environment variable
```
ANDROID_HOME = Z:\android-sdk
ANDROID_SDK_ROOT = Z:\android-sdk
Path = %ANDROID_HOME%\tools\bin
%ANDROID_HOME%\emulator
%ANDROID_HOME%\platform-tools
```
6. List all installed and available packages
```bash
sdkmanager --list
```
7. Download package
```bash
sdkmanager "platform-tools"
sdkmanager "patcher;v4"
sdkmanager "emulator"
sdkmanager "platforms;android-28"
sdkmanager "build-tools;28.0.3"
# System images is for AVD
sdkmanager "system-images;android-28;google_apis;x86_64"
```
Accept all licenses `sdkmanager --licenses`
## Create AVD device
```bash
avdmanager create avd -n "pixel-28" -d "pixel" -k "system-images;android-28;google_apis;x86_64"
avdmanager list avd
```
Run emulator
```bash
emulator -avd pixel-28
```
## References
[SDK & AVD Manager](https://medium.com/michael-wallace/how-to-install-android-sdk-and-setup-avd-emulator-without-android-studio-aeb55c014264)
### Download and Install intel HAXM
```bash
# emulator: ERROR: x86_64 emulation currently requires hardware acceleration!
# Please ensure Windows Hypervisor Platform (WHPX) is properly installed and usable.
sdkmanager extras;intel;Hardware_Accelerated_Execution_Manager
```
Go to `android-sdk\extras\intel\Hardware_Accelerated_Execution_Manager`, run `intelhaxm-android.exe`
# Flutter
## Download Futter
[flutter_windows_1.17.1-stable.zip](https://storage.googleapis.com/flutter_infra/releases/stable/windows/flutter_windows_1.17.1-stable.zip)
Extract zip file and place `flutter` in the desired installation location for the Flutter SDK, `D:\flutter`
Add environment variable
``` bash
Path = D:\flutter
# Run
flutter doctor
# [√] Flutter (Channel stable, v1.17.0, on Microsoft Windows # [Version 10.0.18363.778], locale en-US)
# [√] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
# [!] Android Studio (not installed)
# [√] VS Code (version 1.45.1)
# [!] Connected device
# ! No devices available
```
## Create Flutter Project
```
flutter create <project-name>
cd <project-name>
```
```bash
# --org : defines the applicationId for the app (PRODUCT_BUNDLE_IDENTIFIER in case of iOS).
# --description : adds a brief description of the app to the pubspec.yaml file.
flutter create
--org com.app.messio
--description 'Messio is a modern messaging app'
messio
```
## Enable web
```bash
flutter channel beta
flutter upgrade
flutter config --enable-web
# list the devices available
flutter devices
flutter run -d chrome
```
> Note: The flutter upgrade command silently fails when origin points to a personal fork. To validate that origin points to https://github.com/flutter/flutter.git, run the following commands in the root directory of your local copy of the https://github.com/flutter/flutter repository:
```
cd <your flutter repo>
git remote get-url origin https://github.com/flutter/flutter.git
```
## Switching channel
```
flutter channel
flutter channel stable
flutter upgrade
flutter config --no-enable-web
```
## References
1. [Enable Web](https://flutter.dev/docs/get-started/web)
# Dart
## Packages
`pubspec.yaml` is a yaml file to add dependencies packages that hosted on [pub.dev site](https://pub.dev)
Example of a pubspec that declares dependencies on two packages (`js` and `intl`)
```bash
name: my_app
dependencies:
<package-name>: <version>
js: ^0.6.0
intl: ^0.15.8
# run pub get from the top directory of your application
# to get the packages declare on pubspec
cd <path-my_app>
flutter pub get
```
## References
1. [Packages](https://dart.dev/guides/packages)