Requirements: Android SDK API 34, Java 17
Minimum Target: Android 5.0 (API 21+)
Flutter SDK: 3.38.5+ (Dart 3.10.4+)
Android SDK: API Level 34
Build Tools: 34.0.0
Java: OpenJDK 17 or later
cd $ANDROID_HOME
# Download cmdline-tools from:
# https://developer.android.com/studio#command-line-tools-only
# Extract to correct location
unzip commandlinetools-*.zip
mkdir -p cmdline-tools/latest
mv cmdline-tools/* cmdline-tools/latest/export ANDROID_HOME=/path/to/Android/Sdk
export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools
# Update SDK
sdkmanager --update
# Install API 34 components
sdkmanager "platforms;android-34" "build-tools;34.0.0" "platform-tools"
# Accept licenses
flutter doctor --android-licensesflutter doctor -vExpected output:
[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
flutter build apk --debugOutput: build/app/outputs/flutter-apk/app-debug.apk
Requires signing configuration (see Release Signing section).
flutter build apk --releaseOutput: build/app/outputs/flutter-apk/app-release.apk
flutter build appbundle --releaseOutput: build/app/outputs/bundle/release/app-release.aab
# Download from https://developer.android.com/studio
# Or use snap:
sudo snap install android-studio --classic
# Launch
android-studio- First launch: "Install Type" → "Standard"
- Accept licenses
- Wait for SDK download (6-8 GB)
- Tools → SDK Manager → Install:
- Android SDK Platform 34
- Android SDK Build-Tools 34.0.0
- Android Emulator (optional, for testing)
# In Android Studio:
# File → Settings → Plugins → Install "Flutter" plugin
# Restart Android Studiocd /path/to/sleepy_ui
flutter build apk --releaseOR build from Android Studio:
- Open project in Android Studio
- Build → Flutter → Build APK
Already added by flutter create:
<uses-permission android:name="android.permission.INTERNET" />Needed for SSE connection ✅
Default: com.example.sleepy_ui
Change before release:
# Edit android/app/build.gradle.kts
namespace = "com.artemiscloud.sleepy_ui" # Change this
applicationId = "com.artemiscloud.sleepy_ui" # And this# Edit android/app/src/main/AndroidManifest.xml
android:label="SLEEPY UI" # Change from "sleepy_ui"# Edit pubspec.yaml
version: 1.0.0+1 # Format: X.Y.Z+buildNumberFlutter converts this to Android versionCode and versionName automatically.
flutter build apk --debug
# Output: build/app/outputs/flutter-apk/app-debug.apk
# Size: ~60-80 MB (includes debug symbols)
# Use for: Testing, development
# Install: adb install app-debug.apkflutter build apk --release
# Output: build/app/outputs/flutter-apk/app-release.apk
# Size: ~20-30 MB (optimized)
# Use for: Sideloading, direct distribution
# Install: adb install app-release.apkflutter build appbundle --release
# Output: build/app/outputs/bundle/release/app-release.aab
# Size: ~18-25 MB
# Use for: Google Play Store upload only
# Cannot install directly - Play Store generates APKs-
Enable Developer Options:
- Settings → About Phone → Tap "Build Number" 7 times
-
Enable USB Debugging:
- Settings → Developer Options → USB Debugging
-
Connect device via USB:
flutter devices
-
Run app:
flutter run
License errors: flutter doctor --android-licenses
Build failures: flutter clean && flutter pub get
Device not detected: Enable USB debugging, check cable