Absensi GPS
Arsitektur Sistem
Backend
Frontend
API
  • Struktur
  • Alur Kerja
  • Implementasi GPS
  • Pengembangan dan Pengujian
Deployment
Pengujian
Arsitektur Sistem
Backend
Frontend
API
  • Struktur
  • Alur Kerja
  • Implementasi GPS
  • Pengembangan dan Pengujian
Deployment
Pengujian
  • Pengembangan dan Pengujian Aplikasi Android

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:

  1. Android Studio: IDE utama untuk pengembangan Android
  2. JDK (Java Development Kit): Minimal versi 8
  3. Android SDK: Sudah termasuk dalam instalasi Android Studio
  4. 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

  1. Buka Android Studio dan buat project baru
  2. Konfigurasikan build.gradle dengan dependensi yang diperlukan
  3. Aktifkan View Binding di app/build.gradle:
    buildFeatures {
        viewBinding true
    }
    

2. Implementasi Fitur

Implementasi fitur-fitur utama aplikasi:

  1. Pencarian Server:

    • Implementasi NetworkScanner untuk mencari server dalam subnet
    • Implementasi SplashActivity untuk menangani UI dan logika pencarian server
  2. Login:

    • Implementasi LoginActivity untuk menangani UI dan logika login
    • Implementasi ApiService dan model data untuk komunikasi dengan API
  3. Absensi:

    • Implementasi MainActivity untuk menampilkan profil dan tombol absensi
    • Implementasi LocationHelper untuk mendapatkan lokasi GPS
    • Implementasi logika absensi masuk dan keluar

3. Pengujian

Pengujian Manual

  1. Pengujian Pencarian Server:

    • Pastikan aplikasi dapat menemukan server dalam subnet yang sama
    • Pastikan aplikasi menampilkan pesan error jika server tidak ditemukan
  2. Pengujian Login:

    • Pastikan aplikasi dapat melakukan login dengan kredensial yang valid
    • Pastikan aplikasi menampilkan pesan error jika kredensial tidak valid
  3. 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:

  1. Unit Test: Untuk menguji logika bisnis

    @Test
    fun testLoginValidation() {
        val viewModel = LoginViewModel()
        val result = viewModel.validateInput("", "password")
        assertFalse(result)
    }
    
  2. 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:

  1. Logcat: Untuk melihat log aplikasi

    Log.d("MainActivity", "Current location: $location")
    
  2. Network Profiler: Untuk melihat traffic jaringan

  3. 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:

  1. Buat keystore untuk signing:

    keytool -genkey -v -keystore absensi-gps.keystore -alias absensi -keyalg RSA -keysize 2048 -validity 10000
    
  2. Konfigurasikan 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'
            }
        }
    }
    
  3. Build release APK:

    ./gradlew assembleRelease
    

File APK akan tersedia di app/build/outputs/apk/release/app-release.apk

Troubleshooting

Beberapa masalah umum dan solusinya:

  1. Tidak dapat menemukan server:

    • Pastikan server dan device berada dalam subnet yang sama
    • Pastikan server berjalan dan endpoint /api/mobile/status dapat diakses
  2. Tidak dapat mendapatkan lokasi GPS:

    • Pastikan izin lokasi sudah diberikan
    • Pastikan GPS diaktifkan di device
    • Coba gunakan lokasi mock untuk pengujian
  3. 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.

Last Updated:: 5/15/25, 10:00 PM
Contributors: Nur Wahyudin