Pengembangan dan Pengujian Aplikasi Android
Dokumen ini menjelaskan langkah-langkah untuk mengembangkan dan menguji aplikasi Android Absensi GPS.
Persiapan Lingkungan Pengembangan
Untuk mengembangkan aplikasi Android Absensi GPS, diperlukan beberapa tools dan software berikut:
- Android Studio: IDE utama untuk pengembangan Android
- JDK (Java Development Kit): Minimal versi 8
- Android SDK: Sudah termasuk dalam instalasi Android Studio
- Emulator atau Perangkat Android: Untuk pengujian aplikasi
Struktur Project
Project Android Absensi GPS menggunakan struktur standar Android dengan Gradle sebagai build system. Berikut adalah struktur utama project:
android/
├── app/
│ ├── src/
│ │ ├── main/
│ │ │ ├── java/com/example/absensigps/
│ │ │ │ ├── AbsensiApp.kt
│ │ │ │ ├── api/
│ │ │ │ ├── ui/
│ │ │ │ └── util/
│ │ │ ├── res/
│ │ │ │ ├── layout/
│ │ │ │ ├── menu/
│ │ │ │ └── values/
│ │ │ └── AndroidManifest.xml
│ │ └── test/
│ ├── build.gradle
│ └── proguard-rules.pro
├── build.gradle
└── settings.gradle
Dependensi Utama
Aplikasi menggunakan beberapa library penting yang didefinisikan di file app/build.gradle:
dependencies {
// Android core libraries
implementation 'androidx.core:core-ktx:1.8.0'
implementation 'androidx.appcompat:appcompat:1.5.0'
implementation 'com.google.android.material:material:1.6.1'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
// Retrofit untuk API calls
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.squareup.okhttp3:okhttp:4.9.3'
implementation 'com.squareup.okhttp3:logging-interceptor:4.9.3'
// Google Play Services untuk Location
implementation 'com.google.android.gms:play-services-location:20.0.0'
// Coroutines
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.1'
// ViewModel dan LiveData
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1'
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.5.1'
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1'
}
Langkah Pengembangan
1. Konfigurasi Project
- Buka Android Studio dan buat project baru
- Konfigurasikan
build.gradledengan dependensi yang diperlukan - Aktifkan View Binding di
app/build.gradle:buildFeatures { viewBinding true }
2. Implementasi Fitur
Implementasi fitur-fitur utama aplikasi:
Pencarian Server:
- Implementasi
NetworkScanneruntuk mencari server dalam subnet - Implementasi
SplashActivityuntuk menangani UI dan logika pencarian server
- Implementasi
Login:
- Implementasi
LoginActivityuntuk menangani UI dan logika login - Implementasi
ApiServicedan model data untuk komunikasi dengan API
- Implementasi
Absensi:
- Implementasi
MainActivityuntuk menampilkan profil dan tombol absensi - Implementasi
LocationHelperuntuk mendapatkan lokasi GPS - Implementasi logika absensi masuk dan keluar
- Implementasi
3. Pengujian
Pengujian Manual
Pengujian Pencarian Server:
- Pastikan aplikasi dapat menemukan server dalam subnet yang sama
- Pastikan aplikasi menampilkan pesan error jika server tidak ditemukan
Pengujian Login:
- Pastikan aplikasi dapat melakukan login dengan kredensial yang valid
- Pastikan aplikasi menampilkan pesan error jika kredensial tidak valid
Pengujian Absensi:
- Pastikan aplikasi dapat mendapatkan lokasi GPS
- Pastikan aplikasi dapat melakukan absensi masuk dan keluar
- Pastikan aplikasi menampilkan status absensi dengan benar
Pengujian Otomatis
Untuk pengujian otomatis, dapat digunakan:
Unit Test: Untuk menguji logika bisnis
@Test fun testLoginValidation() { val viewModel = LoginViewModel() val result = viewModel.validateInput("", "password") assertFalse(result) }Instrumented Test: Untuk menguji interaksi UI
@Test fun testLoginButton() { val scenario = ActivityScenario.launch(LoginActivity::class.java) onView(withId(R.id.etIdSiswa)).perform(typeText("S12345")) onView(withId(R.id.etPassword)).perform(typeText("password")) onView(withId(R.id.btnLogin)).perform(click()) // Verify expected behavior }
Debugging
Untuk debugging aplikasi, dapat digunakan:
Logcat: Untuk melihat log aplikasi
Log.d("MainActivity", "Current location: $location")Network Profiler: Untuk melihat traffic jaringan
Layout Inspector: Untuk melihat hierarki UI
Build dan Release
Debug Build
Untuk membuat debug build:
./gradlew assembleDebug
File APK akan tersedia di app/build/outputs/apk/debug/app-debug.apk
Release Build
Untuk membuat release build:
Buat keystore untuk signing:
keytool -genkey -v -keystore absensi-gps.keystore -alias absensi -keyalg RSA -keysize 2048 -validity 10000Konfigurasikan signing di
app/build.gradle:android { signingConfigs { release { storeFile file("absensi-gps.keystore") storePassword "password" keyAlias "absensi" keyPassword "password" } } buildTypes { release { signingConfig signingConfigs.release minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } }Build release APK:
./gradlew assembleRelease
File APK akan tersedia di app/build/outputs/apk/release/app-release.apk
Troubleshooting
Beberapa masalah umum dan solusinya:
Tidak dapat menemukan server:
- Pastikan server dan device berada dalam subnet yang sama
- Pastikan server berjalan dan endpoint
/api/mobile/statusdapat diakses
Tidak dapat mendapatkan lokasi GPS:
- Pastikan izin lokasi sudah diberikan
- Pastikan GPS diaktifkan di device
- Coba gunakan lokasi mock untuk pengujian
Error saat build:
- Coba Clean Project dan Rebuild
- Pastikan semua dependensi tersedia
- Periksa error log di Gradle Console
Kesimpulan
Pengembangan aplikasi Android Absensi GPS mengikuti standar pengembangan Android dengan Kotlin. Aplikasi menggunakan beberapa library penting seperti Retrofit untuk komunikasi API dan Google Play Services untuk lokasi GPS. Pengujian dilakukan secara manual dan otomatis untuk memastikan aplikasi berfungsi dengan baik.