专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

《Gradle for Android》核心总结(二)构建Variant

Variant的定义

Variant是构造类型和不同的定制类型(product flavor)的组合。构造类型在Android studio中默认有debugrelease;而定制类型(product flavor)在国内一般用于不同的分发渠道,例如小米、华为等,或者免费和付费版。

下面我们来构建免费的预览版、发布版和付费的预览版、发布版应用。

构建类型

Android studio中构造类型默认有debugrelease。如果不够,我们可以自定义其他构造类型,这里我们创建一个preview的预览构造类型,代码如下:

buildTypes {
        release {
            //是否移除未引用的资源
            minifyEnabled false
            //用于混淆
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }

        preview{
           //这里是我们自定义的预览版
        }

注:这里的构造类型和下面的定制类型的代码都是放在app模块下的android代码块中

定制类型

创建免费版和定制版的类型,代码如下

flavorDimensions("type")//维度
productFlavors{
        free{
            applicationId "com.easy.free"
            versionCode 1
        }
        pro{
            applicationId "com.easy.pro"
            minSdkVersion 19
            versionCode 1
        }
    }

如上所示,可以为不同的定制类型设置不同的属性

源集

源集是Gradle用来构建apk的资源位置。构造类型、定制类型、Variant都有源集,如下图所示:

61_1.png

上图中previewrelease是构造类型的源集,free是定制类型的源集,而proPreviewproReleasefreePreview是Variant类型的源集。

创建源集

创建源集就是创建存放资源的文件夹,构造类型和定制类型的源集文件名就是定义的文件名,如previewfree。创建源集有两种方式:

  • 手动创建,就是手动创建所需文件夹
  • 通过Android studio创建

通过Android studio创建源集的步骤如下:

1、 打开 Project 窗格,并从窗格顶部的下拉菜单中选择 Project 视图
2、 导航至 MyProject/app/src/
3、 右键点击 src 目录并选择 New > Folder ,在之中选择要创建的文件
4、 从 Target Source Set 旁边的下拉菜单中,选择构造类型
5、 点击 Finish

使用源集

通过源集,我们可以在特定的版本使用特定的资源文件,下面以构造类型的源集为例,其他的和这个相同:

61_2.png

preview版本中,string.xml中的内容为:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="default_title">预览版</string>
</resources>

release版本中,string.xml中的内容为:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="default_title">发布版</string>
</resources>

main中的MainActivity中显示default_title的值:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TextView textView = findViewById(R.id.text);
        textView.setText(R.string.default_title);

    }

点击Build Variants视图,切换不同的build类型来构建apk

61_3.png

结果如下图:

61_4.png

61_5.png

源集的优先级

如果在不同的源集中存在冲突的内容,例如在free源集中存在<string name="default_title">免费版</string>,那么Gradle就会按照如下优先级来使用资源。

61_6.png

注意:源集的Java文件名不能和main中的冲突,否则会构建失败。

配置签名

直接在build文件中配置:

android {
    signingConfigs {
        release {//直接把密码放在这里是不安全的,这里是为了方便
            keyAlias 'test'
            storeFile file('D:/key/test.jks')
            keyPassword '123456789'
            storePassword '123456789'
        }
        preview {
            keyAlias 'test'
            keyPassword '123456'
            storeFile file('D:/key/test.jks')
            storePassword '123456'
        }
    }

     buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        preview{
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    flavorDimensions("type")
    productFlavors {
        free {
            applicationId "com.easy.free"
            signingConfig signingConfigs.preview
        }
        pro {
            applicationId "com.easy.pro"
            signingConfig signingConfigs.preview
        }
    }
...
}

通过Android studio配置:

打开Build->edit build type,如图:

61_7.png

根据需求进行配置。

参考自:

google官方文档
AndroidStudio打包全攻略—Gradle-Build Variants构建定制版App
Gradle for Android

文章永久链接:https://tech.souyunku.com/28226

未经允许不得转载:搜云库技术团队 » 《Gradle for Android》核心总结(二)构建Variant

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们