当前位置: 首页 > ai >正文

Android多渠道打包

一、多渠道打包概念

1.1、多渠道打包概念

多渠道打包(Multi-channel Packaging)是指为同一个应用生成多个不同的安装包(通常是APK文件),每个安装包可以包含不同的配置、资源或元数据。

1.2、多渠道打包相关配置介绍

1.2.1、Variant

Variant中文是变体的意思,变体 (variant) 是指应用可以构建不同的版本

变体由多个构建类型组合而成,例如debug与release,以及构建脚本中定义的产品变种。

1.2.2、productFlavors

productFlavors中文翻译过来是产品变种,用来定义不同变体,每个变体可以有不同的配置和资源,最终打出来的包也会不一样

eg

   productFlavors {external {dimension "app"applicationId "com.test.external.demo"}internal {dimension "app"applicationId "com.test..internal.demo"}}

代表有两个产品变种

1.2.3、flavorDimensions

flavorDimensions表示产品变种的维度(Dimensions),是「组」的概念,同一个维度即为一个产品变种组

1.2.3、buildTypes

buildTypes是构建类型,用来定义构建类型配置,比如是否开启代码混淆、是否开启调试模式等,通常包含debug和release两种类型。

1.2.4、资源合并规则
  • 渠道构建时,渠道变体(external)会跟主变体(main)目录下的资源进行合并;
  • 如有同名配置资源,例如strings.xml文件中的app_name,则优先取渠道(external)配置资源进行覆盖,其他不同名的则进行合并;
  • layout文件、assets文件则是替换,渠道资源(external)优先于主变体(main)资源;

二、多渠道打包实现

在appmodule的build.gradle配置

flavorDimensions "app"productFlavors {external {dimension "app"applicationId "com.test.external.demo"}internal {dimension "app"applicationId "com.test..internal.demo"}}

代表有两个产品变种

 buildTypes {debug {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}release {minifyEnabled trueproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}}

代表有两个buildType

配置不同渠道的AndroidManifest

sourceSets {external{manifest.srcFile 'src/external/AndroidManifest.xml'}internal {manifest.srcFile 'src/internal/AndroidManifest.xml'}}

同时在代码目录新建与main同级的internal和external目录

下边分别放置不同渠道的AndroidManifest.xml

在编译时会将main和不同渠道的AndroidManifest.xml做merge生成不同渠道的AndroidManifest文件

多渠道任务

配置后会生成对应的构建任务,执行对应的构建任务即可生成对应渠道的apk

http://www.xdnf.cn/news/14015.html

相关文章:

  • 14-域名解析DNS 自我总结
  • 【浅谈】Agent 的存在具有什么意义
  • 好用的批量处理软件,免费使用!
  • 鸿蒙Next仓颉语言开发实战教程:订单详情
  • Linux系统下安装RocketMQ5.3
  • 第二十六章 26.Network Automation(CCNA)
  • 居家养老:破解老龄化困局的现实选择
  • 【C/C++】gmock vs mockcpp
  • Server 11 ,⭐通过脚本在全新 Ubuntu 系统中安装 Nginx 环境,安装到指定目录( 脚本安装Nginx )
  • Houdini GPU 云渲染:成本与时间的精准测算
  • 《TCP/IP 详解 卷1:协议》第7章:防火墙和网络地址转换
  • PCB设计教程【大师篇】stm32开发板PCB整体布局
  • LLM之RAG实战(五十五)| 阿里开源新模型,Qwen3-Embedding与Qwen3 Reranker强势来袭!
  • curl 检查重定向的命令总结
  • “窮” 字拆解分析:从字形到文化的深度解构
  • Amazon Linux 2023 配置定时任务完全指南:cronie安装与使用
  • Day53打卡 @浙大疏锦行
  • 淘宝天猫商品数据爬取方案:官方API与非官方接口对比
  • OpenLayers 图层控制
  • 《 第三章-招式初成》 C++修炼生涯笔记(基础篇)程序流程结构
  • 网络原理10 - HTTP完
  • 【Spreadsheet】香港规范结构设计电子表格库开发方案
  • postman Access denied for user‘root‘@‘XXXXXXXX(using password: YES)
  • Flotherm许可管理工具和软件
  • 【强化学习漫谈】4. 从统一视角看 LLM Post-Training
  • 透视黄金窗口:中国有机杂粮的高质量跃迁路径
  • 瑞萨RA-T系列芯片马达类工程TCM加速化设置
  • 爬虫系统异常监控并邮件通知源码
  • 202558读书笔记|《雨季不再来(轻经典)》——日子总有停住的一天,大地要再度绚丽光彩起来
  • 【Create my OS】2 开启中断