202310715130-Dwifebbryanti-EAS/DEPLOYMENT_GUIDE.md
2026-01-14 21:33:58 +07:00

412 lines
8.3 KiB
Markdown

# 🚀 DEPLOYMENT GUIDE - Sistem Lokasi Absensi
## ✅ Pre-Deployment Checklist
Sebelum build & deploy, pastikan:
```
CODE:
☑️ MainActivity.kt sudah benar
☑️ Koordinat UBH benar (-6.2447, 106.9956)
☑️ Radius konsisten (250m)
☑️ Tidak ada error/warning penting
PERMISSIONS:
☑️ AndroidManifest.xml memiliki:
- ACCESS_FINE_LOCATION
- ACCESS_COARSE_LOCATION
- CAMERA
- INTERNET
DATABASE:
☑️ DatabaseHelper.kt OK (tidak ada perubahan)
☑️ SQLite database ready
GRADLE:
☑️ build.gradle.kts OK
☑️ Dependencies resolved
☑️ SDK version valid
ENVIRONMENT:
☑️ Android Studio latest
☑️ JDK 17+ installed
☑️ Min SDK API 24
☑️ Target SDK API 35
```
---
## 📋 Build Steps
### Step 1: Verifikasi Code
```bash
# Buka Android Studio
# File → Open → Pilih folder Starter-EAS-2025-2026
# Tunggu Gradle sync selesai
```
### Step 2: Build Project
```bash
# Via Terminal di Android Studio (atau Command Line)
# Build APK (Debug)
./gradlew clean build
# Jika ada error, coba:
./gradlew clean
./gradlew build --stacktrace
# Build for Release (optional, untuk production)
./gradlew bundleRelease
```
### Step 3: Check Build Output
```
✓ Tidak ada error (Errors tab kosong)
✓ Warnings boleh, tapi bukan blocker
✓ Output: app/build/outputs/apk/debug/app-debug.apk
```
---
## 📱 Install ke Device
### Option 1: Via Android Studio
```
1. Hubungkan device via USB
2. Build → Run (atau Shift + F10)
3. Pilih device target
4. Tunggu APK install
5. Aplikasi otomatis launch
```
### Option 2: Via Command Line
```bash
# Ensure device connected
adb devices
# Install debug APK
adb install app/build/outputs/apk/debug/app-debug.apk
# Atau dengan gradle:
./gradlew installDebug
# Uninstall jika perlu
adb uninstall id.ac.ubharajaya.sistemakademik
```
### Option 3: Via APK File
```
1. Copy: app/build/outputs/apk/debug/app-debug.apk
2. Transfer ke device (USB/Email/Drive)
3. Buka File Manager → Navigate to APK
4. Tap → Install
5. Buka aplikasi
```
---
## 🧪 Testing Procedure
### Test 1: Login & Navigation
```
Langkah:
1. Buka aplikasi
2. Lihat Login screen
3. Klik "Belum punya akun? Daftar"
4. Registrasi user baru:
- Nama: Test User
- NPM: 12345678
- Password: test1234
5. Klik "Daftar"
6. Kembali ke Login screen
7. Login dengan NPM & Password yang baru dibuat
8. Masuk ke Absensi screen
Expected: ✓ Login berhasil, navigasi lancar
```
### Test 2: GPS Location
```
Langkah:
1. Pastikan GPS aktif di device
2. Buka aplikasi di area luar gedung (outdoor)
3. Lihat card informasi lokasi
4. Tunggu 5-10 detik hingga koordinat muncul
Expected:
✓ Koordinat Lat/Lon tampil
✓ Card berubah warna:
- HIJAU jika jarak ≤ 250m (within radius)
- MERAH jika jarak > 250m (outside radius)
```
### Test 3: Distance Validation
```
Test Case 1 - Within Radius:
1. Buka app di area kampus
2. Lihat card status = "✓ Valid" (HIJAU)
3. Lihat jarak < 250m
4. Tombol Submit jadi ENABLED
Test Case 2 - Outside Radius:
1. Buka app di luar area kampus
2. Lihat card status = "✗ Tidak Valid" (MERAH)
3. Lihat jarak > 250m
4. Tombol Submit DISABLED (abu-abu)
Expected: ✓ Validasi akurat & konsisten
```
### Test 4: Camera & Photo
```
Langkah:
1. Klik tombol "📷 Ambil Foto"
2. Izinkan akses kamera
3. Ambil foto/selfie
4. Lihat preview foto di aplikasi
Expected: ✓ Foto berhasil diambil dan tersimpan
```
### Test 5: Submit & Database
```
Langkah:
1. Pastikan status HIJAU + foto ada
2. Klik "📤 Kirim Absensi"
3. Tunggu notifikasi
Expected:
✓ Toast message "Absensi diterima server"
✓ Klik "Lihat Riwayat"
✓ Lihat record terbaru di history list
Test di Firebase/N8N:
4. Buka N8N webhook URL
5. Lihat data absensi terbaru ada
```
### Test 6: Multiple Locations
```
Test di berbagai lokasi:
1. Kampus (< 250m) → Status HIJAU ✓
2. Pinggir kampus (249m) → Status HIJAU ✓
3. Batas radius (250m) → Status HIJAU ✓
4. Luar radius (251m) → Status MERAH ✗
5. Jauh dari kampus (500m+) → Status MERAH ✗
Expected: ✓ Validasi akurat di setiap lokasi
```
---
## 🔍 Troubleshooting Deployment
### Build Error: "Build Failed"
```
Solusi:
1. Clean project: ./gradlew clean
2. Invalidate cache: File → Invalidate Caches
3. Rebuild: ./gradlew build --stacktrace
4. Jika masih error, cek AndroidManifest.xml
```
### Error: "Gradle Sync Failed"
```
Solusi:
1. Update Gradle: Tools → SDK Manager
2. Update Kotlin: Check plugins version
3. Sync Again: File → Sync Now
```
### Error: "Permission Denied" saat install
```
Solusi:
1. Uninstall app lama: adb uninstall id.ac.ubharajaya.sistemakademik
2. Enable USB Debugging: Settings → Developer Options → USB Debugging
3. Authorize device jika pop-up muncul
4. Coba install lagi
```
### GPS/Location not working
```
Solusi:
1. Device Settings → Location → ON
2. Switch to "High Accuracy" mode
3. Buka app di area terbuka (outdoor)
4. Tunggu 15 detik GPS lock
5. Check Logs: adb logcat | grep "Location"
```
### App Crash saat buka
```
Solusi:
1. Lihat Logcat: Logcat (Alt+6) di Android Studio
2. Search "Exception" atau "Error"
3. Note error message
4. Check MainActivity.kt & DatabaseHelper.kt
5. Rebuild & reinstall
```
---
## 📊 QA Checklist
Sebelum "Production Ready":
```
FUNCTIONALITY:
☑️ Login/Register bekerja
☑️ GPS location berfungsi
☑️ Distance calculation akurat
☑️ Photo capture berfungsi
☑️ Submit ke N8N bekerja
☑️ Database save bekerja
☑️ History display bekerja
UI/UX:
☑️ Layout responsif
☑️ Tidak ada visual glitch
☑️ Button state changes correctly
☑️ Card color changes correct (green/red)
☑️ Text visible & readable
☑️ No crash on navigation
PERMISSIONS:
☑️ Location permission request works
☑️ Camera permission request works
☑️ User dapat deny & app tidak crash
EDGE CASES:
☑️ Offline mode - app tidak crash
☑️ No GPS - error handled gracefully
☑️ No camera - error handled
☑️ Fast switching between screens
☑️ Device rotation - no crash
PERFORMANCE:
☑️ App launch < 3 seconds
☑️ GPS lock < 15 seconds
☑️ Submit < 5 seconds
☑️ Memory usage normal
☑️ No ANR (App Not Responding)
```
---
## 📦 Release Build (Optional)
Jika ingin release ke Play Store:
```bash
# Build signed APK/AAB
./gradlew bundleRelease
# Output akan ada di:
# app/build/outputs/bundle/release/app-release.aab
# Upload ke Google Play Console
# 1. Create signing key (jika belum ada)
# 2. Sign release build
# 3. Upload ke Play Store
# 4. Set as production build
# 5. Submit untuk review
```
---
## 🔐 Security Checklist
Sebelum production:
```
☑️ Password di-hash di database
☑️ Tidak ada hardcoded credentials
☑️ API keys di-obfuscate
☑️ Koordinat di-offset (privacy)
☑️ HTTPS untuk API calls
☑️ Input validation implemented
☑️ SQL injection prevention
☑️ Permissions minimal necessary
```
---
## 📞 Support & Debugging
### Enable Detailed Logging
```kotlin
// Di MainActivity.kt, tambahkan:
android.util.Log.d("LocationDebug",
"Lat: $latitude, Lon: $longitude, Distance: $distance, Valid: $isLocationValid")
```
### View Logs
```bash
# Via Logcat
adb logcat | grep "LocationDebug"
# Or in Android Studio:
View → Tool Windows → Logcat → Filter: "LocationDebug"
```
### Debug GPS Specifically
```bash
# Check location services
adb shell dumpsys location
# View all sensors
adb shell dumpsys sensormanager
```
---
## 📋 Deployment Checklist - Final
```
PRE-DEPLOYMENT:
☑️ Code review selesai
☑️ Build success (no errors)
☑️ Testing passed (all test cases)
☑️ Permissions set correctly
☑️ Database initialized
☑️ N8N webhook configured
☑️ Network connectivity tested
DEPLOYMENT:
☑️ Device connected & recognized
☑️ APK installed successfully
☑️ App launches without crash
☑️ All features working
☑️ No runtime errors
POST-DEPLOYMENT:
☑️ User testing complete
☑️ Feedback collected
☑️ Performance monitored
☑️ Error logs reviewed
☑️ Ready for next update
```
---
## 🎉 DEPLOYMENT COMPLETE!
Jika semua checklist ✓, aplikasi siap untuk:
- ✅ Digunakan oleh pengguna
- ✅ Disebarkan ke device lain
- ✅ Deploy ke production
- ✅ Monitor dan maintenance
---
**Reference Files:**
- `LOKASI_QUICK_START.md` - User guide
- `TECHNICAL_REFERENCE_LOKASI.md` - Tech details
- `LOKASI_TROUBLESHOOTING.md` - Problem solving
**Version**: 2.0
**Date**: 14 January 2026
**Status**: ✅ READY FOR DEPLOYMENT