您的位置:

Android Sourcesets:多变体构建的利器

Android开发过程中,经常需要根据不同的需求在同一个应用中实现不同的逻辑或使用不同的资源。比如,在不同的渠道中需要使用不同的图标或logo,在不同的版本中需要使用不同的接口地址,而且这些变化需要在构建时进行配置,因此Android引入了Sourcesets多变体构建的概念。

一、Sourcesets概述

Sourcesets简单来说就是在同一个应用中区分不同变量的组合。在Android开发中,Sourcesets包括了代码源文件、资源文件和Manifest文件等应用程序的全部组成部分。

一个Sourcesets包含了由编译器使用的代码、资源和生成的文件的集合。Sourcesets命名采用如下命名规则:

sourceSet {
    name {
        manifest.srcFile 'file path'
    
        java.srcDirs = ['dir path']
    
        resources.srcDirs = ['dir path']
    
        aidl.srcDirs = ['dir path']
    
        res.srcDirs = ['dir path']
    
        assets.srcDirs = ['dir path']
    }
}

其中,name是自定义的变体名称,manifest、java、resources、aidl、res、assets都是Sourcesets中可以包含的文件类型,可以在每个变量中添加或删除需要包含的文件。

二、Sourcesets的使用

1. Sourcesets的创建

使用gradle来创建Sourcesets非常简单。首先,在buildTypes中添加一个自定义变体:

buildTypes {
    release {
        minifyEnabled false //是否混淆
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
    customType { //自定义变体
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}

然后,在productFlavors中添加需要的变体名称:

productFlavors {
    googleplay {
        applicationIdSuffix ".googleplay" //设定应用ID后缀
        versionCode 1
        versionName "1.0-googleplay"
    }
    taobao {
        applicationIdSuffix ".taobao"
        versionCode 1
        versionName "1.0-taobao"
    }
}

这样我们就创建了两个productFlavor,分别是googleplay和taobao。然后可以在每个productFlavor中定义相关文件。

2. Sourcesets的使用

在Android Studio中,可以通过如下方式来使用Sourcesets:

  • 打开app/build.gradle文件
  • 选择左侧菜单中的"Build Variants";
  • 在变体的下拉列表中选择一个变体,如googleplayDebug;
  • 同步gradle并运行应用程序。

在使用Sourcesets中,可以使用默认变量或自定义变量。如果不使用自定义变量,可以在defaultConfig中添加下面这些配置:

defaultConfig {
    applicationId "package-name"
    minSdkVersion 15
    targetSdkVersion 29
    versionCode 1
    versionName "1.0"

    // 设定默认资源常量值
    buildConfigField "String", "API_BASE_URL", "\"https://www.example.com/\""
    resValue "string", "app_name", "Best App"
}

三、Sourcesets的优势

1. 渠道包定制

当开发者需要为多个平台制作apk时,就需要使用到渠道包。渠道包即按照具体的渠道制作的apk包,每个apk包含有对应的渠道号码。

渠道包定制使用Sourcesets可以实现简单的配置即可,开发者无需修改代码,即可轻松打包并发布不同的apk版本了。

2. 支持多种版本

通过Sourcesets来构建多种版本,开发者可以轻松地支持多种不同的版本,如灰度版本、正式版本和测试版本等等。

使用Sourcesets,开发者可以轻松构建多种版本,而且可以根据版本需求来定制资源、java源码和清单文件等,不会对已有的其他版本产生影响。

3. 方便维护

Sourcesets可以提高应用程序的维护一致性。因为它能够明确的分离出应用程序的不同部分,并且在每个部分中都给予开发者充分的空间进行自定义开发。

此外,Sourcesets还可以轻松地管理应用程序资源,并且可以使应用程序的维护变得更加容易,当应用程序资源发生变化的时候,可以通过Sourcesets轻松实现变化。

四、总结

我们学习了Sourcesets多变体构建的概念、使用方法以及优势。使用Sourcesets,可以方便地构建和发布多种版本的应用程序。此外,它还可以提高应用程序的维护一致性,使应用程序开发更加容易。

Sourcesets可以让你轻松定制apk,不同的渠道包可以有不同的资源和配置,并且不会对其他包有任何影响。

如果你希望在开发过程中轻松地发布不同版本的应用程序,那么Sourcesets是一个非常值得学习的开发工具。

Android Sourcesets:多变体构建的利器

2023-05-14
深入浅出:androidsourcesets全解析

2023-05-20
用VSCode轻松构建Android应用!

随着移动互联网的快速发展,越来越多的人开始加入到移动应用开发的行列中来。对于初学者来说,在Android开发中选择一款好用的开发工具可以事半功倍。本文将介绍如何利用VSCode快速构建Android应

2023-12-08
Android Studio Bumblebee——提高An

2023-05-14
用Python编写Android工具链,轻松构建Androi

2023-05-14
Android Studio NDK详解:加速移动应用的原生

移动应用开发中,各种开发框架和语言多种多样,常用的有Java、Kotlin和Swift等。但有时候,我们需要使用C或C++语言编写一些性能更高的原生代码,以获取更好的用户体验。Android Stud

2023-12-08
Android SDK Tools:提升Android应用开

2023-05-14
学习构建基于Python的Android应用程序

2023-05-14
新版Android Studio——提高开发效率的利器

一、依赖管理 在新版Android Studio中,依赖管理更加方便。可以通过在build.gradle中添加一些依赖库,并通过Gradle系统自动下载相应的依赖项,不再需要手动下载和添加。 depe

2023-12-08
印象笔记记录java学习(Java成长笔记)

2022-11-12
使用CMake构建Android项目的高效方法

一、CMake简介 CMake是一个跨平台的编译工具,它可以生成与平台无关的makefile、Visual Studio等项目文件,快速轻松地构建和管理代码。CMake支持多种编程语言,包括C++、J

2023-12-08
通过Android Studio构建强大的Android应用

2023-05-14
构建高效Android应用的窍门

2023-05-14
提升应用性能的关键:Android App Bundle的多

2023-05-14
android的js框架(android js引擎)

本文目录一览: 1、Android真的推荐用MVI模式?MVI和MVVM有什么区别? 2、在Android上怎样实现JAVA和JS交互 3、android 混合开发 用什么框架好 4、Android如

2023-12-08
Android Gradle:高效构建您的应用程序

2023-05-14
深入了解Android 33

2023-05-22
Android AAR包:提高应用性能的利器

一、什么是Android AAR包? Android AAR(Android Archive)包是一种Android应用程序的二进制发行包。它是由一组编译过的Java类、资源文件和清单文件构成的,可以

2023-12-08
Android Watchdog:保障应用稳定运行的利器

在使用Android手机过程中,我们经常会遇到一些应用卡顿、闪退等问题,这些问题可能是由于应用本身的质量问题、系统兼容性问题等原因所导致。为了解决这些问题,我们需要一种工具来监控应用的运行状况,这时就

2023-12-08
Android Studio 4.0:提升开发效率的利器

2023-05-14