productFlavors簡單使用

最近項目中,不一樣環境須要配置的參數愈來愈多,爲了減小修改代碼次數。研究了一下productFlavors的使用方式,總結以下html

1. as3.0以上版本使用productFlavors時須要指定一個flavorDimensions,用於不一樣組合productFlavors。java

2. 每一個productFlavors中能夠自定義各類變量android

替換manifest中的變量須要注意,若是替換2個以上用逗號分隔。api

<meta-data
            android:name="app_id"
            android:value="${id_value}" />//佔位符
        <meta-data
            android:name="app_key"
            android:value="${key_value}" />
flavorDimensions "api", "mode"

  productFlavors {
    demo {
      dimension "mode"
      buildConfigField("String", "HTTP_BASE", '"https://10.10.10.222/"')//在BuildConfig中添加 String類型的HTTP_BASE 字段 並賦值
      buildConfigField("int", "POSITION_1", "10020")//增長 int型
      resValue("string","flovor_log","this is free log")//替換 res中String裏的flovor_log字段
      ...
    }

    full {
      dimension "mode"
      buildConfigField("String", "HTTP_BASE", '"https://api-hd-huoyun.com/"')
      manifestPlaceholders = [id_value: "1234567890",key_value: "0987654321"]//替換manife中的變量
      ...
    }

    minApi24 {
      dimension "api"
      minSdkVersion '24'
      versionCode 30000 + android.defaultConfig.versionCode//修改版本號
      versionNameSuffix "-minApi24"//版本名稱加後綴
      ...
    }

    minApi23 {
      dimension "api"
      minSdkVersion '23'
      versionCode 20000  + android.defaultConfig.versionCode
      versionNameSuffix "-minApi23"
      ...
    }

    minApi21 {
      dimension "api"
      minSdkVersion '21'
      versionCode 10000  + android.defaultConfig.versionCode
      versionNameSuffix "-minApi21"
      ...
    }
  }
}

若是須要根據不一樣的productFlavors 依賴不用的包則使用app

configurations {
    demo
    full
    minApi24
    ....
}

dependencies中修改成ui

dependencies {

    implementation 'com.android.support:appcompat-v7:26.1.0'
    .....
    demoImplementation(name: 'test-demo', ext: 'aar')
    fullImplementation(name: 'test-full', ext: 'aar')
    minApi24Implementation(name: 'test-minApi24', ext: 'aar')
    .....
}

修改assets路徑,此操做會把指定目錄的文件拷入道工程 assets文件夾中。this

sourceSets {//不一樣  配置 使用不用的 文件  打包時不會 所有打入 assets
        dev.assets.srcDirs = ['./allAssets/dev']
        tes.assets.srcDirs = ['./allAssets/tes']
        pro.assets.srcDirs = ['./allAssets/pro']
        personal.assets.srcDirs = ['./allAssets/personal']
    }

參考:.net

android 多渠道打包的應用code

配置構建變體htm

解決方案:Error:Execution failed for task ':app:processDebugManifest'. > Manifest merger failed with multiple errors, see logs

productFlavors在Lib(Module)中的使用

相關文章
相關標籤/搜索