live and dev environment on android studio

Cách thiết lập môi trường Live (Production) và Dev (Development) trên Android Studio

Khi phát triển ứng dụng Android, bạn cần tách biệt môi trường Dev (phát triển) và Live (sản phẩm chính thức) để tránh nhầm lẫn dữ liệu, API và cài đặt. Dưới đây là các cách phổ biến để làm điều này trong Android Studio.


1. Sử dụng Build Variants (Product Flavors)

Android Studio cho phép bạn định nghĩa các biến thể (build variants) để có các cấu hình riêng cho môi trường DevLive.

Bước 1: Cấu hình Product Flavors trong build.gradle (Module: app)

Mở build.gradle, thêm đoạn mã sau vào khối android:

gradleCopyEditandroid {
    compileSdk 34

    defaultConfig {
        applicationId "com.example.myapp"
        minSdk 21
        targetSdk 34
        versionCode 1
        versionName "1.0"
    }

    buildTypes {
        debug {
            applicationIdSuffix ".dev"
            resValue "string", "app_name", "MyApp Dev"
        }
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

    flavorDimensions "default"
    productFlavors {
        dev {
            dimension "default"
            applicationIdSuffix ".dev"
            versionNameSuffix "-dev"
            buildConfigField "String", "BASE_URL", "\"https://dev.api.example.com/\""
        }
        live {
            dimension "default"
            buildConfigField "String", "BASE_URL", "\"https://api.example.com/\""
        }
    }
}

Bước 2: Sử dụng Product Flavors trong mã nguồn

Bạn có thể truy xuất URL API dựa vào BuildConfig:

javaCopyEditString apiUrl = BuildConfig.BASE_URL;
Log.d("API URL", apiUrl);

Khi chạy ứng dụng:

  • Nếu chọn dev, API sẽ là "https://dev.api.example.com/"

  • Nếu chọn live, API sẽ là "https://api.example.com/"


2. Tạo các file cấu hình riêng cho từng môi trường

Thay vì hardcode API vào build.gradle, bạn có thể sử dụng file XML riêng biệt.

Bước 1: Tạo thư mục resource riêng

Trong res/values/, tạo hai thư mục:

  • res/values-dev/strings.xml

  • res/values-live/strings.xml

Bước 2: Định nghĩa API URL cho từng môi trường

res/values-dev/strings.xml

xmlCopyEdit<resources>
    <string name="api_url">https://dev.api.example.com/</string>
</resources>

res/values-live/strings.xml

xmlCopyEdit<resources>
    <string name="api_url">https://api.example.com/</string>
</resources>

Bước 3: Truy xuất giá trị trong code

javaCopyEditString apiUrl = getString(R.string.api_url);

3. Tuỳ chỉnh icon và tên ứng dụng theo môi trường

Bạn có thể đặt tên ứng dụng khác nhau cho bản DevLive.

Bước 1: Cấu hình AndroidManifest.xml

xmlCopyEdit<application
    android:label="@string/app_name">
</application>

Bước 2: Chỉnh sửa strings.xml cho từng môi trường

res/values-dev/strings.xml

xmlCopyEdit<resources>
    <string name="app_name">MyApp Dev</string>
</resources>

res/values-live/strings.xml

xmlCopyEdit<resources>
    <string name="app_name">MyApp</string>
</resources>

Ứng dụng Dev sẽ có tên khác với Live trên thiết bị.


4. Chuyển đổi giữa các môi trường trong Android Studio

Bạn có thể chọn môi trường trong Build Variants:

  1. Mở Build Variants: Vào ViewTool WindowsBuild Variants

  2. Chọn biến thể cần build

    • devDebug để chạy môi trường Dev

    • liveRelease để build môi trường Live


5. Sử dụng các file google-services.json riêng biệt cho Firebase

Nếu ứng dụng dùng Firebase, bạn cần có 2 file google-services.json riêng cho Dev và Live:

  • app/src/dev/google-services.json

  • app/src/live/google-services.json

Cấu hình tự động chọn file Firebase trong build.gradle:

gradleCopyEditandroid.applicationVariants.all { variant ->
    def fileName = variant.name.contains("dev") ? "google-services-dev.json" : "google-services-live.json"
    def filePath = "$projectDir/app/src/${variant.flavorName}/$fileName"
    variant.mergeResources.doLast {
        copy {
            from filePath
            into "$buildDir/intermediates/merged_res/${variant.dirName}/google-services.json"
        }
    }
}

6. Tích hợp CI/CD để build theo môi trường

Nếu bạn sử dụng GitHub Actions, GitLab CI/CD hoặc Jenkins, có thể tự động build APK theo môi trường:

yamlCopyEdit- name: Build Dev APK
  run: ./gradlew assembleDevDebug

- name: Build Live APK
  run: ./gradlew assembleLiveRelease

Kết luận

Bằng cách sử dụng Build Variants, Product Flavors, resource files riêng biệt, và Firebase cấu hình động, bạn có thể dễ dàng quản lý môi trường DevLive trên Android Studio.

Last updated