免费获取学习方案
ARTICLE DETAIL

资讯详情

深耕编程基础知识与建站技术分享的一线实战洞察。

Android Studio - 构建变体 Build Variants

Android Studio - 构建变体 Build Variants 官方页面一、概念Gradle 通过组合构建类型Build Types和产品风味Product Flavors 来生成构建变体Build Variants以此从单个项目创建不同版本的应用如免费版与付费版、调试版与发布版。命名规则为 产品风味构建类型 例如 freeDebug、paidRelease 等。构建类型Build Types定义应用的构建和打包方式主要面向开发者。例如debug 类型包含调试选项并使用调试密钥签名而 release 类型则可能启用代码压缩和混淆用于正式发布。产品风味Product Flavors定义应用的不同功能版本主要面向用户。例如你可以创建 free免费和 paid付费两种风味它们可以有不同的应用 ID、资源或功能代码。1.1 选型BuildType 管怎么编译混淆、签名、日志Product Flavors 管连哪里baseUrl、各环境特有的 key。debug 包也需要连线上排查线上问题、对照环境差异release 构建也需要测试版正式签名 混淆 测试服发布前最后一轮验证构建类型只有两种可能不够还有预发布版。dev 开发板staging 预发布版prod 正式版debug 可调式devDebugstagingDebugprodDebugrelease 混淆、签名devReleasestagingReleaseprodRelease二、配置构建类型android { buildTypes { // 默认的 发布构建 release { isMinifyEnabled false proguardFiles(getDefaultProguardFile(proguard-android-optimize.txt), proguard-rules.pro) buildConfigField(Boolean, DEBUG, false) } //默认的 调试构建 debug { buildConfigField(Boolean, DEBUG, true) } //创建 测试构建 create(demo) { initWith(getByName(release)) // 可以从其它构建复制配置 applicationIdSuffix .releaseDemo // 应用ID后缀便于共存 } } }三、配置产品风味android { flavorDimensions version // 必须指定一个风味维度给产品风味 productFlavors { // 免费版 create(free) { dimension version // applicationId com.example.myapp // 风味可以重新定义应用ID推荐用下面的后缀 applicationIdSuffix .demo // 应用ID后缀便于共存 versionNameSuffix -demo // 版本名后缀 // 不同版本切换连接环境 BaseUrl buildConfigField(String, BASE_URL, \https://free.api.example.com/\) } // 专业版 create(pro) { dimension version applicationIdSuffix .pro versionNameSuffix -pro buildConfigField(String, BASE_URL, \https://pro.api.example.com/\) } } }四、切换构建变体在侧边栏、或者菜单栏 Build Select Build Variant 中可切换想要构建的变体。五、加载不同代码和资源Android Studio 支持为不同的构建类型或产品风味创建源集 (Source Sets)。Gradle 在构建时会按照优先级构建变体 构建类型 产品风味 main合并这些源集的文件。例如src/free/ 下的代码只会被 free 变体使用。要为 pro 风味添加专属资源可以在 src/pro/ 目录下创建相应的 res 或 java 文件夹。手动创建目录src目录下右键 → New → Directory → 下拉选择侧边栏选中的是哪个变体哪个才会出现在这里。自动创建目录src目录下右键 → New → XML → Values XML File → Target Source Set 下拉选择侧边栏选中的是哪个变体哪个才会出现在这里。优先级源代码集对应目录最高构建变体src/freeDebug/↓构建类型src/debug/↓产品风味src/free/最低主src/main/5.1 声明依赖项dependencies { // 将本地 “mylibrary” 模块作为依赖项添加到 “free” 风味flavor中。 freeImplementation(project(:mylibrary)) }
返回列表