AndroidStudio使用gradle打包并实现多渠道打包

Android打包脚本和上传apk托管平台 作为Android开发经常需要打包提交测试,多数情况我们都是通过Android studio手动点点进行,后来项目由于环境较多(开发,测试,预发布,发布等),手动打包就容易出错,所以后边就引起通过脚本打包提升效率和准确的需求。 阅读详情
        介绍:

         Google推出了新的开发工具,AndroidStudio,并且采用了新的工程构建工具,Gradle构建。在每个项目中,都会有一个build.gradle文件来构建。这里,主要来讲打包方面常见的操作。默认,会产生2个版本,debug版本和release版本。

        需求:

        打包一个apk十分简单,需要的就是一个密钥。点击build->Generate Signed APK 就会通过图形化界面进行傻瓜式操作了,但Android实际开发中,都需要放到多个应用市场,为了进行统计,会对不同市场上的apk进行区别,友盟也可以统计到不同市场的用户数据,都是需要这个标识,即渠道号。要实现多渠道打包,就需要了解一下gradle中关于打包方面的一些东西了。

        了解gradle打包的基本知识:

        a:签名信息的配置

signingConfigs {
config {
keyAlias 'xxx'
keyPassword 'xxx'
storeFile file('/Users/air/develop/xxx')
storePassword 'xxx'
}
}
        b:构建类型(debug版本和正式版的一些配置,如是不是最小化,是不是混淆代码等)
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.config
}
}

        有了签名信息,就可以进行apk的输出了,说实话,刚开始百度了一些如何使用gradle进行apk打包,说的基本上都是通过命令行来完成,基本上全部是你复制我,我复制他的,很水。AndroidStudio的图形化界面就很好的提供了操作。

        最右边的Gradle就可以看到你工程下的所有项目(如果没有显示就点击刷新一下就有了),点击这个assemble就可以打包了,同样,下面也提供了针对debug或者release版本的构建,非常方便。好了,看一下我们的劳动成果吧。注:gradle默认有输出目录,就是在xxx\build\outputs\apk,xxx是你的项目目录。在这里,就会找到打包好的apk了。
        
        其实,在上面的签名信息配置和构建类型同样提供了图形化的界面,在 Project Structure中,可以进行签名等信息的配置。在这里进行添加,删除都会自动修改build.gradle这个文件的信息的,所以,本人认为在这里更好,傻瓜式操作,多简单。

        如何实现多渠道的打包

        为了方便数据的统计,友盟是常用的第三方sdk,需要我们在 AndroidManifest.xml中配置如下标签。

<meta-data
android:name="CHANNEL"
android:value="channel"
/>
        这个value值就是渠道号。一个个手动改太麻烦了,只需要在gradle中加几行代码就可以了。
productFlavors {
baidu {
}
wandoujia {
}
}
//将value中具体值改为x,在构建的时候改变
<meta-data
android:name="CHANNEL"
android:value="${x}"
/>
productFlavors.all {
flavor -> flavor.manifestPlaceholders = [x: name]
}
        这样,就可以产生baidu,wandoujia,2个渠道的apk包了。同样,productFlavors提供了图形化的界面,就是上图的Flavors选项了。不停的添加就行了,把name替换x就是value了。
        自定义apk的输出路径和名称

        默认的输出路径太麻烦,名称为module名+渠道号+版本信息三部分组成,如:app-baidu-debug.apk。

        下面的代码可以完成自定义。

def outputDir = "/Users/air/Desktop/myapk"
def startName = "start"
android{
……
}
android{
……
android.applicationVariants.all { variant ->
def file = variant.outputs[0].outputFile
def fileParent = new File(outputDir)
// String name = file.name
// String[] arr = name.split("-")
variant.outputs[0].outputFile =
new File(fileParent,startName +"-"+name+"-" + defaultConfig.versionName + ".apk")
}
}
        解释:把apk输出到/Users/air/Desktop/myapk这个目录下,修改名字为前面是start,中间是渠道号,后面是版本号。如:start-baidu-1.0.apk,并且,这里的就是我们需要的版本,什么debug版本不会在这里输出。
        贴一份gradle文件

def outputDir = "/Users/air/Desktop/myapk"
def startName = "start"
android {
signingConfigs {
config {
keyAlias 'xxx'
keyPassword 'xxx'
storeFile file('/Users/air/develop/xxx')
storePassword 'xxx'
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.config
}
}
productFlavors {
baidu {
}
wandoujia {
}
}
productFlavors.all {
flavor -> flavor.manifestPlaceholders = [x: name]
}
android.applicationVariants.all { variant ->
def file = variant.outputs[0].outputFile
def fileParent = new File(outputDir)
// String name = file.name
// String[] arr = name.split("-")
variant.outputs[0].outputFile =
new File(fileParent,startName +"_"+name+"_" + defaultConfig.versionName + ".apk")
}
}
        关于gradle其它的就不显示了,就列出打包的操作,上面都有提到。好了,终于完成的gradle的apk打包了。
        如何更快的打包

        虽然完成了多渠道的打包,上面的每打一个渠道,都会进行一次构建,如果就几十个渠道包的时候,半小时的打包是免不了了。能不能一次构建,就可以实现产生多个不同标识的apk的,答案是可以的,具体百度一下:美团的打包之旅。里面完全讲述了如何更快的打包,需要python来实现。亲测,这个方案非常方便。一次操作,长期使用。这里就不多说了。

android开发之Jenkins+Gradle实现android开发持续集成、多渠道打包 懒惰,只是为了更好的懒惰! 阅读详情

相关推荐

掌握AndroidStudio与Gradle的多渠道打包实践

Gradle是一种基于Apache Ant和Apache Maven概念的项目自动化构建工具,它使用了一种基于Groovy的特定领域语言来声明项目设置,相比其他构建自动化工具,Gradle更加灵活,它支持多语言项目构建,这使得它成为Java开发者的首选工具之一。在移动应用开发领域,多渠道打包是指根据不同的应用市场或分发平台,定制化地构建应用程序的安装包(APK或IPA)。这种方式允许开发者为每个渠道定制特定的版本,例如可以包含不同的广告标识符、追踪代码或特殊功能。

weixin_31938351的博客 963

springboot 基于gradle多模块,jar和resources分离的配置(测试环境为ruoyi-vue)

本文是基于bboss 相关的gradle配置,进行相关的优化后,对ruoyi-vue后端进行gradle多模块配置,并进行jar和resources分离打包,打包后有2种运行方式。基于bootJar的方式,详见我的其他文章。

qq_17230447的博客 1463

土地利用数据从1972到2023:如何利用Landsat和Sentinel数据构建长期变化监测模型

本文详细解析了如何利用1972至2023年的Landsat和Sentinel遥感数据构建土地利用长期变化监测模型。通过多源数据融合策略、时间序列预处理流程和深度学习算法,实现高精度的土地利用分类与变化检测,为生态评估和城市规划提供科学依据。文章还探讨了验证方法和实际应用案例,展示了长期遥感数据在环境建模中的独特价值。

weixin_28720573的博客 445

Android 多渠道打包配置

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。上面分享的腾讯、头条、阿里、美团、字节跳动等公司2019-2021年的高频面试题,博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,上面只是以图片的形式给大家展示一部分。【Android思维脑图(技能树)】知识不体系?

fghis的博客 1033

ldpc编解码器设计与仿真

计算校验节点到变量节点的消息 m_{c \to v}=2 \cdot atanh(\prod_{v’ \in N©\setminus v}tanh(\frac{m_{v’ \to c}}{2}))。计算变量节点到校验节点的消息 m_{v \to c}=L_{v,0}+\sum_{c’ \in M(v)\setminus c}m_{c’ \to v}。◦ 对于每个变量节点 v,计算最终 LLR 值 L_{v,f}=L_{v,0}+\sum_{c \in M(v)}m_{c \to v}。

youngerwang的博客 808

疾病负担研究(GBD)——如何使用joinpoint软件计算AAPC

疾病负担研究(GBD)——如何使用joinpoint软件计算AAPC

weixin_44240228的博客 1万+

Android之Gradle自动化打包实战

解放双手,双击桌面快捷方式生成apk包,基于Gradle、bat文件让开发人员告别打包烦扰!前不久有一个Unity3D研发的小仙女在羽毛球场问我关于Android Studio打apk的一些事情,她说他们运营和测试隔三差五的就坐着她旁边要她重复性的打包(估计是那群痴汉打着工作的幌子实际上干着撩妹的活惹火了这位认真敬业的小姐姐),那么有没有省力一点的办法快速打包?一直以来,对于某些频繁进行打包工作的业务部开发人员来说,打包工作不仅繁琐冗余而且费时费力。

金戈鐡馬 3870

SoC 内的 CPU、GPU、DSP、NPU 协同执行结构图解析:多异构协同的最新实战体系

随着移动端 AI 能力迅速演进,SoC(System on Chip)内部的多种异构计算单元(CPU、GPU、DSP、NPU)之间的协同执行能力成为衡量芯片智能算力的关键指标。本文基于截至 2025 年 5 月最新主流国产芯片(如海思昇腾、地平线旭日、联发科天玑、高通骁龙 8 Gen 系、寒武纪思元等)在实际落地应用中的公开结构与技术资料,深入解析 CPU-GPU-DSP-NPU 协同执行的体系结构、执行路径与调度逻辑。文章结合 Android NNAPI、Vulkan Compute、自定义调度器等工程实

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 8710

gradle 打生产开发两种包

gradle android 标签下 productFlavors{ 测试版 { resValue "string", "app_name", "测试版应用名" resValue "bool", "isrRank", 'true' applicationIdSuffix ".debug" buildConfigFi

w781015928的博客 890

OCR文字识别基础

ocr文字识别

m0_47405013的博客 1755

【Bug已解决】codex file edit fails / Write operation denied — CodeX CLI 文件编辑失败解决方案

CodeX CLI 编辑文件时报写入被拒绝,本质是沙箱限制或权限不足。文中给出配置允许目录、修复权限、Git stash 管理冲突等完整方案。

一键难忘的博客 4300

android studio gradle 多渠道打包之完全详解(打包系列教程之四)

好久没更新了,最近自己有点私事,所以一直没时间写博客,今天就来更新一下打包系列教程,通过前面3篇内容的学习,相信大家对android打包的流程和混淆操作已相当了解了。本篇我们就来分析多渠道自动化打包android的apk。(平台:mac;工具:android studio)         这里我们先了解一下为什么要多渠道打包?现在国内android应用市场特别多,我们每次发布app时都会根

zejian的博客 1万+

基于Simulink的PID控制防抱死制动系统(ABS)建模与仿真

防抱死制动系统(Anti-lock Braking System,简称ABS)是一种用于防止车辆在紧急制动时车轮完全抱死的技术。通过实时监测车轮速度并调节制动力,ABS能够显著提高车辆的制动性能和操控稳定性,从而减少交通事故的发生。PID(比例-积分-微分)控制器因其结构简单、性能稳定且易于实现而被广泛应用于ABS控制系统中。本项目旨在通过MATLAB/Simulink平台设计和验证一个基于PID控制的ABS系统,重点研究PID参数调优方法、系统动态响应特性以及制动过程中的滑移率控制能力。

MHD0815的博客 484

android studio 0.80多渠道打包

环境:window android studio 0.80gradle 插件gradle -v------------------------------------------------------------Gradle 1.10------------------------------------------------------------Build ti...

weixin_33843947的博客 89

YOLOv11改进 | 模型知识蒸馏篇 | 利用模型蒸馏改进YOLOv11进行无损涨点 | 离线蒸馏(附代码 + 完整文件 + 解析教程)

这篇文章给大家带来的最新改进是模型的蒸馏,利用教师模型指导学生模型从而进行模型的涨点,本文的内容不仅可以用于论文中,在目前的绝大多数的工作中模型蒸馏是一项非常重要的技术,所以大家可以仔细学习一下本文的内容,本文从YOLOv8的项目文件为例,进行详细的修改教程,文章内包括完整的修改教程,针对小白我出了视频修改教程,如果你还不会我提供了修改后的文件大家直接运行即可,所以说不用担心不会适用!模型蒸馏真正的无损涨点,蒸馏你只看这一篇文章就足够了!欢迎大家订阅我的专栏一起学习YOLO!

Snu77的博客 4322

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Android Studio系列教程六--Gradle多渠道打包

Android Studio系列教程六--Gradle多渠道打包 2015 年 01 月 15 日devtools         本文为个人原创,欢迎转载,但请务必在明显位置注明出处! 由于国内Android市场众多渠道,为了统计每个渠道的下载及其它数据统计,就需要我们针对每个渠道单独打包,如果让你打几十个市场的包岂不烦死了,不过有了Gradle,这

luyouxin的博客 392

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Gradle 用法

开始学习使用Android Studio 的使用方法,在目录中有一系列的文件: .gradle …像:build.gradle 、settings.gradle 查阅了一系列的资料,差不多搞明白了gradle是干嘛的: Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的内部领域特定(DSL)语言。

ZhangGeng's Blog 2031

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

打包

Eclipse: 步骤:1.android tools-->export signed application package 生成有签名的应用包 Android Studio:多渠道打包 第一步: Project Structure-->Flavors-->加号增加-->Name(xiaomi/baidu/_360)-->OK 第二步:build.grad...

weixin_30636089的博客 70

Android 签名与打包

Android系统要求只有签名后的APK文件才可以安装,因此我们还需要对生成的APK文件进行签名。而平时我们通过Android Studio 将程序安装到手机上,是因为AS使用了一个默认的keystore文件帮我们自动进行了签名。Android Studio提供的可视化工具生成带有正式签名的APK文件,还可以通过Gradle生成。...

WillLiaowh的博客 403

Android Studio重构之路,我们重新来了解一下Google官方的Android开发工具

Android Studio重构之路,我们重新来了解一下Google官方的Android开发工具 记得我的第一篇博客就是写Android Studio,但是现在看来还是有些粗糙了,所有重构了一下思路,覆写了一篇Google主推-Android开发利器——Android Studio,这可能是最全的AS教程! Android Studio,自Google2013年发布以来,就倍受Android开

刘桂林的博客 1万+

手把手教你AndroidStudio多渠道打包

最近不断有朋友向我咨询AndroidStudio多渠道的打包方法,今天整理一下之前积累的打包套路,写一篇文章,手把手的教给大家。

Android研发专栏 6万+

【Android新手指引】Android Studio如何使用Gradle进行多渠道打包?

最近没更新博客了,公司里新手让我指导一下签名和多渠道打包,心血来潮,写篇新手指引博客创建签名文件和多渠道打包。 1.签名文件的创建 2.多渠道打包gradle代码配置 3.使用美团的Walle进行多渠道打包 1.签名文件的创建 首先点击Android Studio的Build菜单下的Genreate Signed Bundle Or APK,如下所示: 接着就会出现以下界面,选择Apk【1处】,然后点击next: 接着出现以下界面: 这个界面是用已存在的签名文件进行签名,并且输入签名文件密码,.

编程语言是方式,而思维是创造。 1962

android studio打包以及gradle配置构建

本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 通过浏览这篇文章,可以学习以下内容: 生成签名文件手动打包 通过配置自动打包 隐藏签名文件敏感信息 通过设置风味实现不同风味包的资源替换 多渠道打包生成签名文件,手动打包首先生成签名文件,点击 Build -> Generate Signed APK:如果还没有签名文件,点击构造一个:图中圈住的三个地方是重要信息,其余随意填。

披萨大叔的博客 1万+

AndroidStudio多渠道打包

Android分包打包 Android多渠道打包

肖旺银的博客 3264

教你如何玩转 AndroidStudio 一键多渠道打包

如果你还在手动的对每个市场进行打包,先不说 Low 不 Low,自己也会觉得很痛苦对吧,甚至有的同学使用 Windows build 打包一次就得 3-5min;打 6 个市场包半个小时就过去了,最重要的是这个过程中还有可能出现错误,增加测试的难度与成本。多渠道打包也有很多种方式;有远程的 jenkins + gradle +github 等方法;网上资料很多,由于这种方式需要的配置环境比较繁琐;适

JackWaiting 2792

AndroidStudio3.0实现多渠道打包

多渠道打包概述 什么是多渠道包 渠道包就是要在安装包中添加渠道信息,也就是channel,对应不同的渠道,例如:小米市场、360市场、应用宝市场等 产品在不同的应用市场可能有不同的统计需求,需要为每个应用市场的Android包设定一个可以区分应用市场的标识,这个为Android包设定应用市场标识的过程就是多渠道打包。 为什么要提供多渠道包 国内存在着有众多的应用市场,产品在不同的渠道可能有不同的统计需求,为此Android开发人员需要为每个应用市场发布一个安装包,这里就引出了Android的多渠道打包。

zly19931101的博客 1589
上一篇: Java泛型详解
下一篇: 微信分享及授权登录
arplay
博客等级 码龄12年 0粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值