Build Variants Android变体构建配置

官方文档

主Module中build.gradle

  • defaultConfig
defaultConfig {
    applicationId "XXX.XXX.com.XXX"
    minSdkVersion 16
    targetSdkVersion 28
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
  • signingConfigs
signingConfigs {
    config {
        keyAlias 'XXX'
        keyPassword 'XXX123'
        storeFile file('D:/XXX/XXX.jks')
        storePassword 'XXXX'
    }
}
  • buildTypes
buildTypes {
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.config
    }
    debug {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.config
    }
}
  • productFlavors
flavorDimensions "fix"
productFlavors {
    online {
        versionCode 1//该风味版本码
        versionName "1.0"//该风味版本名称
        dimension "fix"
    }
    offline {
        versionCode 2//该风味版本码
        versionName "2.0"//该风味版本名称
        dimension "fix"
        applicationIdSuffix ".fix"//设置该风味applicationId,会在原有得applicationId后面追加.fix(至此online风味包与offline风味包可以在同一部机器上共存,相当于马甲包了)
        versionNameSuffix "-fix"//设置该风味版本名称,会在原有得versionName后面追加-fix
    }
}
  • 为打包好的APK重新命名
android.applicationVariants.all { variant ->
    variant.outputs.all {
        outputFileName = "${variant.name}-${variant.versionName}.apk"
    }
}

Sync Now 查看变体类型

在这里插入图片描述

为APP设置不同风味的名字,启动图标

  • 设置不同的app name
    offine/res/values/strings.xml 目录中的文件也会与main/res/values/strings.xml合并在一起。main包中app name值会被风味包中app name值替换掉。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 设置不同的启动图标
    风味包中res/asset/ 目录中的资源将与main包合并,若值相同将以风味包中为准。

  • 清单文件也会被合并

  • java文件合并,若风味包与main包中有相同的java文件,编译时将会报错。解决办法是将该java文件单独放到风味包中,合并时候就会将风味包中的文件并入main包中。

猜你喜欢

转载自blog.csdn.net/MoLiao2046/article/details/85711212