Android productFlavors多渠道 打包

发布时间:2026/10/7 3:04:27

Android productFlavors多渠道 打包 一、不同渠道引用不同 dependencies方法如下build.gradle文件所示1.先定义productFlavors 渠道channelA和channelB2.然后通过getTaskNames 获取当前编译的渠道,并赋值给变量 channel3.dependencies 中判断当前 channel 依赖不同的mudule或者jar--------------------build.gradle文件def channel gradle.startParameter.getTaskNames().each { task -if (task.toLowerCase().contains(channelA)) {channel channelA} else if (task.toLowerCase().contains(channelB)) {channel channelB}}android {productFlavors {channelA {buildConfigField(String, PROJECT_NAME, \channelA\)versionCode rootProject.ext.android[versionCode]versionName rootProject.ext.android[versionName]}channelB {buildConfigField(String, PROJECT_NAME, \channelB\)versionCode rootProject.ext.android[versionCode]versionName rootProject.ext.android[versionName]}}}dependencies {println(**********channel: channel)if (channel channelA) {//依赖不同的module} else if (channel channelB) {//依赖不同的module}}--这样做代码编辑模式下识别不到引用的包只有编译时才可以识别到引用的包可以做如下修改例如implementation androidx.appcompat:appcompat:1.2.0//如果只是channelA渠道引用该jar 可以改成channelAImplementation androidx.appcompat:appcompat:1.2.0这样就可以做到不同渠道引用不同的modulejar或aar了二、多渠道重命名输出apk例如在build variant 选择 versionCode1Abi1releasevariant.baseName为 versionCode1-abi1-release生成的apk名称为myapp-versionCode1-abi1-release.apk-------build.gradle文件配置如下android {flavorDimensions(versionCode, abi)productFlavors {versionCode1 {dimension versionCode}versionCode2 {dimension versionCode}abi1 {dimension abi}abi2 {dimension abi}}android.applicationVariants.all { variant -variant.outputs.all {println(**********applicationVariants variant.baseName: variant.baseName)def appName myappoutputFileName appName - variant.baseName .apkprintln output app : outputFileName}}}三、风味渠道缺失默认匹配例如 如果app 定义的 了flavorDimensions demoproductFlavors {flavor1 {dimension demo}flavo2 {dimension demo}}在其他module中没有定义可以定义匹配的的风味渠道可以通过missingDimensionStrategy 默认匹配missingDimensionStrategy demo, flavor1注意这里只要写一个flavor1就可以了不要写成missingDimensionStrategy demo, flavor1, flavor2因为最终 App 会覆盖它所以选哪个都无所谓纯粹是让 Gradle 编译时不报错。一句话总结Library 模块的 missingDimensionStrategy编译必须写运行时不生效。App 模块的 missingDimensionStrategy编译必须写运行时也生效。可以理解为 missingDimensionStrategy 对 library 模块来说是给 Gradle 的一个占位声明——告诉编译器我知道我缺少维度先按这个选但最终 App 作为顶层模块会统一拍板
延伸阅读

更多相关文章

2026/10/7 3:06:57

C++:前言与入门

前言:欢迎各位进入c++的学习与探讨,c++是c语言的升级与扩展。要想学精,难度也是非常大的。希望大家能循序渐进,保持这份热情,终有一天,我们会达到彼岸。 什么是C++ C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽…

2026/10/7 3:07:06

AI 正在重构安防 IPC,中小厂商的机会在哪里?

一、安防 IPC 市场越来越大,产品却越来越像安防 IPC 市场这几年并不冷。智能家居、电池摄像头、可视门铃——几个品类持续扩张,蛋糕在变大。但吃蛋糕的方式没变。Sensor、镜头、补光灯,上游供应链高度集中,来去就那几家供应商。方…

2026/10/7 3:07:08

本地repo与远程库部署 | 5分钟速成版

最近学到了git三剑客与github上的pull request,适用于多人多次修改的项目。其实询问AI,就会发现TA讲解得很详细了,而我这里主要做个总结与记录。以下为Linux使用场景。 目录 Git / GitHub 协作主要流程 Git中主要命令 1. 获取仓库&#xf…

2026/10/7 16:11:40

autocad2025下载安装教程

AutoCAD 2025是Autodesk推出的最新版工程设计软件,专为建筑师、工程师及建筑专业人员打造,集成了强大的二维绘图与三维建模工具。该版本首次引入机器学习技术,可自动识别图纸中的重复元素并建议转换为块,显著提升设计效率与准确性…

2026/10/5 6:32:56

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/7 8:18:33

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/6 17:46:51

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:05:03

ESP32免重刷固件:浏览器直接修改NVS键值实现WiFi配置更新

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:05:03

SAP HANA查询结果导出CSV:避开乱码、性能与权限的实用指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:05:03

数字后端Placement阶段Density与Congestion控制实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑