Manajemen Konfigurasi dalam Pengembangan Seluler: Apa Itu, Opsi Apa Saja, dan Cara Mengatur

Penulis: IT Sectr Diterbitkan: 2026-05-30 Waktu membaca: 8 mnt

Manajemen konfigurasi adalah salah satu aspek yang paling diremehkan dalam pengembangan seluler. Menurut CloudBees (2025), 47% insiden di produksi terkait dengan konfigurasi build yang salah. Pengaturan yang tepat dari Build Variant, Scheme, dan file .env adalah kunci untuk CI/CD yang stabil dan rilis yang dapat diprediksi.

Poin Utama

  • Manajemen konfigurasi dalam aplikasi seluler dibangun di atas Build Variant (Android), Scheme (iOS), dan .env (lintas platform) — 47% insiden produksi terkait dengan pengaturan yang salah.
  • iOS menggunakan Scheme + .xcconfig. Scheme mengatur pembangunan, pengujian, dan pengarsipan. .xcconfig memindahkan pengaturan build ke file.
  • Alat lintas platform — pubspec.yaml (Flutter), Podfile (CocoaPods), .env (variabel lingkungan) — memusatkan konfigurasi.
  • Kompilasi Bersyarat — memasukkan/mengecualikan kode pada tahap kompilasi. #if DEBUG, BuildConfig.DEBUG — untuk debugging tanpa mengubah perilaku rilis.
  • Kunci API dan rahasia tidak boleh disimpan dalam kode. Gunakan .env, Build Config, atau server proxy. Mendekompilasi .apk/.ipa adalah hal yang sepele.

Manajemen Konfigurasi di Android: Build Variant dan build.gradle

Build Variant — kombinasi dari Build Type (debug/release/staging) dan Product Flavor (free/paid, demo/full). Gradle secara otomatis membuat variant untuk setiap kombinasi: freeDebug, freeRelease, paidDebug, paidRelease. Setiap variant dapat memiliki kode, sumber daya, dan dependensinya sendiri — ini adalah dasar manajemen konfigurasi dalam aplikasi seluler di Android.

Build Variant vs Product Flavor

Build Type — pengaturan build: apakah debugging diaktifkan, penandatanganan, optimasi ProGuard. debug secara default berisi debuggable=true, release — minifyEnabled=true.

Product Flavor — varian aplikasi: gratis (free), berbayar (paid), demo. Flavor dapat memiliki applicationId, sumber daya, dependensi SDK yang berbeda.

groovy
// build.gradle — konfigurasi product flavor Android
android {
    productFlavors {
        free {
            applicationId "com.example.app.free"
            versionName "1.0-free"
        }
        paid {
            applicationId "com.example.app.paid"
            versionName "1.0-paid"
        }
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt')
        }
    }
}

Contoh membuat dua flavor: free dan paid. ApplicationId terpisah ditetapkan untuk free — ini memungkinkan menginstal kedua aplikasi pada satu perangkat. BuildConfig dihasilkan untuk setiap variant: BuildConfig.FLAVOR = "free", BuildConfig.BUILD_TYPE = "debug". Gunakan BuildConfig dalam kode untuk logika bersyarat.

settings.gradle dan Gradle KTS

settings.gradle — file Gradle root yang mendeskripsikan modul proyek.

Gradle KTS — alternatif untuk Groovy menggunakan Kotlin DSL. KTS memberikan pelengkapan otomatis di Android Studio dan pemeriksaan tipe. Direkomendasikan untuk proyek baru.

Manajemen Konfigurasi di iOS: Scheme dan .xcconfig

Manajemen konfigurasi di iOS dibangun di atas Scheme — konfigurasi Xcode yang menentukan apa dan bagaimana membangun: Build Configuration (Debug/Release), pengujian, analisis, pengarsipan. Scheme dapat digandakan untuk berbagai lingkungan (Development, Staging, Production). Scheme disimpan dalam file .xcscheme di folder xcshareddata.

File .xcconfig

.xcconfig — file konfigurasi Xcode yang menyimpan pengaturan build dalam bentuk teks. Untuk manajemen konfigurasi aplikasi seluler, iOS menggunakan .xcconfig: versioning di Git, penggunaan kembali antar proyek, lebih sedikit pengaturan manual. Di .xcconfig diatur SWIFT_ACTIVE_COMPILATION_CONDITIONS, PRODUCT_BUNDLE_IDENTIFIER, CODE_SIGN_IDENTITY.

Info.plist — file metadata aplikasi. Menyimpan versi, pengidentifikasi, izin. Info.plist dapat berbeda untuk setiap Scheme — melalui Info.plist File di Build Settings.

AndroidManifest.xml — padanan Android: menyimpan izin, komponen, meta-data.

Scheme vs Build Configuration

Scheme — skenario build (apa yang harus dilakukan). Build Configuration — kumpulan pengaturan (bagaimana melakukannya). Satu Scheme menggunakan satu Build Configuration (Debug atau Release). Untuk CI/CD: konfigurasikan tindakan Archive ke Release dan tindakan Test ke Debug dalam Scheme yang sama.

Manajemen Konfigurasi di Flutter dan React Native: pubspec.yaml, Podfile, .env

pubspec.yaml — file konfigurasi proyek Flutter. Berisi dependensi, versi, sumber daya. Mendukung variabel lingkungan melalui --dart-define.

Podfile — manajer dependensi CocoaPods untuk iOS. Menentukan versi pustaka dan platform.

.env — file dengan variabel lingkungan untuk semua platform. Flutter dan React Native menggunakan pendekatan berbeda untuk manajemen konfigurasi: dart-define di Flutter, react-native-config di React Native. Manajemen konfigurasi dalam proyek lintas platform melibatkan alat yang berbeda tergantung pada stack.

.env dan Variabel Lingkungan

.env — file teks dengan pasangan kunci=nilai. Jangan di-commit ke Git (tambahkan ke .gitignore). Untuk Flutter — flutter_dotenv, untuk iOS — Config.xcconfig dengan #include, untuk Android — BuildConfig. Variabel env: API_URL, SENTRY_DSN, APP_SECRET. Dalam manajemen konfigurasi pengembangan seluler, .env adalah standar de facto untuk menyimpan rahasia di luar repositori.

Podfile dan pubspec.yaml

Podfile menjelaskan dependensi CocoaPods dan platform (platform :ios, '15.0'). pubspec.yaml untuk Flutter — dependencies dan dev_dependencies. Keduanya mendukung dependensi bersyarat: pod 'Analytics', :configs => ['Release'] atau flutter pub add --flavor free. Di IT Sectr, kami menggunakan .env + BuildConfig untuk rahasia dan Podfile untuk dependensi asli dalam proyek seluler.

Parameter Android iOS Flutter
Unit konfigurasiBuild VariantSchemeFlavor (--flavor)
File buildbuild.gradle.xcconfigpubspec.yaml
Kode bersyaratBuildConfigActive Compilation Conditionsdart-define
RahasiaBuildConfig/NDK.xcconfig.env/dart-define
Manajer dependensiGradle (Maven)SPM/CocoaPodspub (dart)

Tabel menunjukkan perbedaan utama dalam manajemen konfigurasi antar platform seluler. Android menawarkan lebih banyak fleksibilitas melalui Build Variant. iOS lebih sederhana tetapi kurang fleksibel. Flutter memusatkan konfigurasi di dart-define, tetapi dependensi asli masih memerlukan konfigurasi Podfile/build.gradle.

Kompilasi Bersyarat dalam Manajemen Konfigurasi

Kompilasi Bersyarat — memasukkan atau mengecualikan kode pada tahap kompilasi tergantung pada flag. Ini adalah bagian dari manajemen konfigurasi: ini memungkinkan penyematan alat debugging (logging, inspektur) di build debug dan menghapusnya dari rilis. Implementasi berbeda antar platform.

Kompilasi Bersyarat di Swift

#if DEBUG — direktif preprosesor Swift. Kode di dalam blok hanya dikompilasi dalam konfigurasi Debug. Flag lainnya: #if !RELEASE, #if targetEnvironment(simulator). Active Compilation Conditions di Build Settings — tambahkan flag kustom Anda melalui -D FLAG_NAME. Manajemen konfigurasi build melalui kondisi kompilasi adalah praktik standar di iOS.

Kompilasi Bersyarat di Kotlin

BuildConfig.DEBUG — bidang boolean, true di build debug. BuildConfig dihasilkan secara otomatis oleh Gradle. Untuk flag kustom gunakan buildConfigField di build.gradle: buildConfigField "boolean", "REPORT_CRASHES", "true". Dalam kode: if (BuildConfig.REPORT_CRASHES) { ... }.

Kompilasi Bersyarat di Flutter

dart-define — flag kompilasi Flutter: flutter run --dart-define=ENV=staging. Dalam kode: const env = String.fromEnvironment('ENV', defaultValue: 'production'). Untuk build aplikasi seluler bersyarat, gunakan plugin build_runner dengan pembuatan kode.

Pertanyaan yang Sering Diajukan

Bagaimana perbedaan Build Variant dengan Product Flavor di Android?

Build Variant = Build Type (debug/release) + Product Flavor. Flavor adalah varian aplikasi (berbayar/gratis, klien/server), Build Type adalah pengaturan build (debug/optimasi). Kombinasi flavour + type membentuk variant: misalnya, paidDebug.

Apa itu .xcconfig dan mengapa diperlukan di iOS?

.xcconfig adalah file konfigurasi Xcode yang menyimpan pengaturan build dalam bentuk teks. Ini memungkinkan memindahkan pengaturan dari proyek Xcode ke file yang ramah Git, menyederhanakan CI/CD dan kerja tim dalam proyek seluler.

Bagaimana cara menyimpan kunci API dengan aman di aplikasi seluler?

Kunci API tidak boleh disimpan dalam kode — .apk atau .ipa apa pun dapat didekompilasi. Gunakan file .env, proxy backend, atau kebingungan melalui Build Config. IT Sectr merekomendasikan untuk menyimpan rahasia di server dan memberikannya ke klien setelah otentikasi.

Apa itu kompilasi bersyarat dan kapan menggunakannya?

Kompilasi bersyarat adalah memasukkan/mengecualikan kode pada tahap kompilasi tergantung pada flag. Di Swift — #if DEBUG, di Kotlin — BuildConfig.DEBUG. Digunakan untuk mengaktifkan logging di debug dan menonaktifkan di rilis. Ini adalah elemen kunci manajemen konfigurasi dalam pengembangan seluler.

Apakah Podfile diperlukan dalam proyek tanpa CocoaPods?

Podfile hanya digunakan saat bekerja dengan CocoaPods. Tidak diperlukan untuk SPM atau Carthage. Jangan tinggalkan Podfile dalam proyek jika Anda telah meninggalkan CocoaPods — ini membingungkan tim dan sistem CI/CD.

Ringkasan

  • Manajemen konfigurasi dalam aplikasi seluler adalah fondasi CI/CD yang stabil. Android menggunakan Build Variant, iOS menggunakan Scheme, Flutter menggunakan dart-define.
  • Android: Build Variant = Build Type × Product Flavor. BuildConfig dihasilkan untuk setiap variant.
  • iOS: Scheme + .xcconfig mengelola konfigurasi. Info.plist — metadata aplikasi.
  • Flutter: dart-define untuk variabel build. pubspec.yaml untuk dependensi.
  • Kompilasi bersyarat (#if DEBUG, BuildConfig.DEBUG) — bagian dari manajemen konfigurasi, cara standar untuk menghapus kode debug di rilis.
  • .env — penyimpanan rahasia yang aman di luar repositori. Jangan commit .env ke Git.
  • Manajemen konfigurasi dalam proyek seluler perlu perhatian sejak commit pertama — pengaturan build yang tepat menghemat jam debugging di setiap rilis.

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek