热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

记录一次Android多渠道打包

背景我有一个需求,要求是同一份代码要打两个包出来,只不过包名、logo、名称、签名、部分代码不一样,我是这样做的。第一步app的bu


背景

我有一个需求,要求是同一份代码要打两个包出来,只不过包名、logo、名称、签名、部分代码不一样,我是这样做的。


第一步

app的build.gradle中

android {
compileSdkVersion 29
buildToolsVersion "29.0.3"
defaultConfig {
applicationId "xxx"
minSdkVersion 21
targetSdkVersion 30
versionCode 5
versionName "1.0.4"//
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
//注意这个属性,当然设置在这个闭包的外面也是可以的。不设置会报错All flavors must now belong to a named flavor dimension
flavorDimensions "default"
}
signingConfigs {
//默认的渠道,这里签名的数据配置在项目里,见下图
debug {
// debug和release用的统一的jks避免重新新增MD5
storeFile file(KEY_PATH)
storePassword KEY_PASS
keyAlias ALIAS_NAME
keyPassword ALIAS_PASS
}
release {
storeFile file(KEY_PATH)
storePassword KEY_PASS
keyAlias ALIAS_NAME
keyPassword ALIAS_PASS
}
//新增的渠道签名
debugxiamen {
// debug和release用的统一的jks避免重新新增MD5
keyAlias 'xxxx'
keyPassword 'xxx'
storeFile file('../doc/xxx.jks')
storePassword 'xxx'
}
releasexiamen {
keyAlias 'xxxx'
keyPassword 'xxx'
storeFile file('../doc/xxx.jks')
storePassword 'xxx'
}
}
productFlavors {
//输出两个变体,即最终要打包的两个渠道
hengqin {
//可以单独指定某个渠道的包名,会覆盖manifest里面的packgename,也可以用这样配置 applicationIdSuffix ".demo"
applicationId "com.ly.checkticket4hengqin"
}
xiamen {
applicationId "com.ly.traffic.transport"
}
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
//productFlavors的闭包必须放到这个之前,否则肯定报错,没定义先使用嘛
//还有很多文章上说在不同渠道上只能指定debug签名,relase签名只能用同一个,我这边测试了一下,非也!
productFlavors.hengqin.signingConfig signingConfigs.release
//解决 The application could not be installed: INSTALL_PARSE_FAILED_NO_CERTIFICATES
productFlavors.xiamen.signingConfig signingConfigs.releasexiamen
}
}
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
dataBinding {
enabled = true
}
}

签名配置
图1


第二步

配置不同的logo、appname
在这里插入图片描述


第三步

代码里抹平渠道区分:

when(BuildConfig.FLAVOR){
"xiamen"->{}
"hengqin"->{}
}

第四步

打包
在这里插入图片描述
在这里插入图片描述


本文地址:https://blog.csdn.net/u012346890/article/details/112536211



推荐阅读
  • 概述H.323是由ITU制定的通信控制协议,用于在分组交换网中提供多媒体业务。呼叫控制是其中的重要组成部分,它可用来建立点到点的媒体会话和多点间媒体会议 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 本文介绍了在使用FIS配置过程中遇到的问题以及解决方法。作者发现在配置roadmap时使用命令行参数出现了诡异现象,uglify了js文件后,html中对js的引用没有被修改。经过多次尝试和验证,联系了FIS开发人员后才得知,使用fis.config.merge会导致一些问题。通过将fis.config.merge改为fis.config.get('roadmap.path').unshift()来添加配置,问题得以解决。文章指出FIS官方文档解释不够详细,提供了解决问题的方法。 ... [详细]
  • 在Kubernetes上部署JupyterHub的步骤和实验依赖
    本文介绍了在Kubernetes上部署JupyterHub的步骤和实验所需的依赖,包括安装Docker和K8s,使用kubeadm进行安装,以及更新下载的镜像等。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • 本文讨论了如何使用Web.Config进行自定义配置节的配置转换。作者提到,他将msbuild设置为详细模式,但转换却忽略了带有替换转换的自定义部分的存在。 ... [详细]
  • Linux的uucico命令使用方法及工作模式介绍
    本文介绍了Linux的uucico命令的使用方法和工作模式,包括主动模式和附属模式。uucico是用来处理uucp或uux送到队列的文件传输工具,具有操作简单快捷、实用性强的特点。文章还介绍了uucico命令的参数及其说明,包括-c或--quiet、-C或--ifwork、-D或--nodetach、-e或--loop、-f或--force、-i或--stdin、-I--config、-l或--prompt等。通过本文的学习,读者可以更好地掌握Linux的uucico命令的使用方法。 ... [详细]
author-avatar
比熊--悉尼
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有