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