多渠道打包gradle方式(解决类似'360'纯数字渠道名)

Android-Gradle-自动化多渠道打包 我见过很多技术leader在面试的时候,遇到处于迷茫期的大龄程序员,比面试官年龄都大。这些人有一些共同特征:可能工作了5、6年,还是每天重复给业务部门写代码,工作内容的重复性比较高,没有什么技术含量的工作。问到这些人的职业规划时,他们也没有太多想法。其实30岁到40岁是一个人职业发展的黄金阶段,一定要在业务范围内的扩张,技术广度和深度提升上有自己的计划,才有助于在职业发展上有持续的发展路径,而不至于停滞不前。不断奔跑,你就知道学习的意义所在! 阅读详情
    1、AndroidManifest.xml文件中定义一个CHANNEL_NAME,打包的时候、这个值会用自己设定的渠道号替换
    <meta-data
        android:name="CHANNEL_NAME"
        android:value="${CHANNEL_VALUE}"/>
        //在java代码中读取meta-data
        /*ApplicationInfo appInfo = this.getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);
            String channel=appInfo.metaData.get("CHANNEL_NAME")+"";*/

    2、build.gradle配置
    defaultConfig {
        manifestPlaceholders = [CHANNEL_VALUE: "2000"]//这里2000是默认值
    }    
    productFlavors {//设置不同的渠道值
        xiaomi{
            manifestPlaceholders = [MACHAT_CHANNEL_VALUE:'2001']
        }
        baidu{
            manifestPlaceholders = [MACHAT_CHANNEL_VALUE:"2002"]
        }
        huawei {
            manifestPlaceholders = [MACHAT_CHANNEL_VALUE:"2003"]
        }
        yingyongbao {
            manifestPlaceholders = [MACHAT_CHANNEL_VALUE:"2004"]
        }
   }  
   //定制生成的apk的名字 ${defaultConfig.versionName}  
   applicationVariants.all { variant ->
    variant.outputs.each { output ->
        def outputFile = output.outputFile
        if (outputFile != null && outputFile.name.endsWith('.apk')) {
                def fileName = 
                outputFile.name.replace(".apk", "-${defaultConfig.versionName}-"+releaseTime()
                +".apk")//
            output.outputFile = new File(outputFile.parent, fileName)
        }
    }
    //这样得到的名字是test-xiaomi-release-1.4.2-201802061701.apk
}
def releaseTime() {//打包时间
    return new Date().format("yyyyMMddHHmm", TimeZone.getDefault())
}
3、另外还有一种配置方式,这和方式2是等价的
defaultConfig {
        manifestPlaceholders = [CHANNEL_VALUE: "2000"]//这里2000是默认值
} 
productFlavors {
    "2001"{}
   "2002"{}
   "2003"{}
   "2004"{}
}
productFlavors.all { flavor ->
    flavor.manifestPlaceholders = [CHANNEL_VALUE: name]
}
       //定制生成的apk的名字 ${defaultConfig.versionName}  
   applicationVariants.all { variant ->
    variant.outputs.each { output ->
        def outputFile = output.outputFile
        if (outputFile != null && outputFile.name.endsWith('.apk')) {
                def fileName = 
                outputFile.name.replace(".apk", "-${defaultConfig.versionName}-"+releaseTime()
                +".apk")//
            output.outputFile = new File(outputFile.parent, fileName)
        }
    }
    //这样得到的名字是test-2001-release-1.4.2-201802061701.apk

studio 3.0以上的配置

    /*默认为2000
    小米 2001
    百度开发者平台 2002
    华为 2003
    应用宝 2004*/

    flavorDimensions "default"
    productFlavors {
        '2001' { dimension "default" }
        "2002" {dimension "default"}
        "2003" {dimension "default"}
        "2004" { dimension "default" }
    }

    productFlavors.all {
        flavor -> flavor.manifestPlaceholders = [CHANNEL_VALUE: name]
    }

    android.applicationVariants.all { variant ->
        variant.outputs.all {
            outputFileName = "milu-${defaultConfig.versionName}_${releaseTime()}_${variant.productFlavors[0].name}.apk"
        }
    }
Android Studio之Gradle多渠道打包 在这里我和身边一些朋友特意整理了一份快速进阶为Android高级工程师的系统且全面的学习资料。涵盖了Android初级——Android高级架构师进阶必备的一些学习技能。附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题(含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。 阅读详情

相关推荐

360的多渠道打包工具

360的多渠道打包工具 具体使用可以看我的博文

AndroidStudio 多渠道打包及获取渠道值以及如何转义纯数字

Build配置 在android{}内加 productFlavors { sanxing { manifestPlaceholders = [CHANNEL_VALUE: "32d2sss"] } guanwang { manifestPlaceholders = [CHANNEL_VALUE: "\\00000...

a940659387的博客 870

新手必看:5分钟搞定Unitree Go1机器狗Gazebo仿真运动控制(附按键图解)

本文为新手提供了Unitree Go1机器狗在Gazebo仿真环境中实现运动控制的快速指南。通过5分钟极简配置和按键图解,帮助开发者快速掌握宇树科技明星产品的基础操作,包括环境搭建、仿真启动和运动控制技巧,适合零基础用户快速上手。

weixin_42550597的博客 300

Android 通知用法

1、首先创建一个NotifyManager对通知进行管理,调用Context的 getSystemService() 方法。getSystemService() 方法用于接收一个字符串来确定从系统获取什么服务:Context.NOTIFICATION_SERVICE 代表获取系统的通知服务。 val manager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager if (Build.VERSION.SDK_I

Tefuir111的博客 2819

YOLO11实战 第056期-基于yolo11的无人机航拍铁路障碍物检测实战-数据集&源码&系统

召回率曲线帮助评估模型在目标检测任务中,检测到真正目标的能力。通过这条曲线,可以评估模型在目标检测任务中的整体性能,并找到合适的置信度阈值,以在精确率和召回率之间做出最佳平衡。PR曲线越接近右上角,模型性能越好,曲线下方的面积越大,说明模型在不同置信度下的。这条曲线显示了随着置信度的增加,每个类别的召回率先变化较小,然后在某个点之后迅速下降。通过这条曲线,可以选择合适的置信度阈值,以优化模型的检测结果,平衡精确率和召回率。曲线都显示了随着召回率的增加,精确度略有下降的趋势,但整体上精确度保持在很高的水平。

深度学习算法工程师,专注于前沿算法研究与实战应用。在这里,我将分享深度学习领域的实战经验、优质数据集资源以及最新论文解读与精度分析,旨在与广大技术爱好者共同探索人工智能的奥秘,助力技术成长与创新。 157

Linux -- 图形界面配置Samba;system-config-samba工具

图形界面配置Samba6.6.1 system-config-sambasystem-config-samba是Red Hat公司专门为Samba服务器管理编写的图形界面的管理工具,通过system-config-samba几乎可以完成对Samba服务器的所有配置,所以在只希望通过Samba服务器实现一些简单的资源共享时,system-config-samba是一个不错的选...

weixin_33695450的博客 2200

Android studio之多渠道打包

最近做项目,接收了一项任务——多渠道打包 于是乎找找google,一搜一大堆,不外乎就是用友盟进行多渠道打包。 看了一堆博客,自己总结一下经验,纯当做下笔记。首先呢,多渠道打包,为的就是统计各个渠道的下载数量,或者新增用户、日活跃量用户的一些相关数据,这就与友盟统计相关了。所以我们用友盟进行多渠道打包就可以了。那么如何做呢,首先我们进入友盟的官网https://www.umeng.com/ 选

Caben_的博客 2147

MobileNet V3 图像分类

MobileNet V3

Henry的博客 1768

安卓多渠道打包(五)360加固walle多渠道打包

安卓360加固walle多渠道打包

motosheep的博客 1503

硬件测试之—纹波测试为什么不要使用接地夹子

示波器为什么不推荐使用接地夹

qq_19294353的博客 2988

手把手教你用MOS管设计双电源自动切换电路(附零压降方案)

本文详细介绍了使用MOS管设计双电源自动切换电路的完整方案,包括基础电路拓扑、零压降优化设计及实战调试技巧。针对外接电源与电池供电的无缝切换需求,提供低损耗MOS管选型建议和性能实测数据,帮助工程师解决传统二极管方案的压降与漏电问题。

h0i1j2k3l的博客 1443

使用360打包、多渠道打包

3.在工具包一栏选择渠道打包,选择加固好的文件和配置好的渠道文件.txt。360一键加固已经收费了,但是仍然提供了免费的通道。1.在工具包一栏配置打包路径和签名文件。2.在应用加固一栏对签名的文件进行加固。4.对多渠道包进行签名。

shusheng_qiye的博客 637

Node-RED教程(二):Node-RED的面板的操作

Node-RED系列(二):Node-RED的面板的操作 要使用Node-RED去搭建一个物联网平台,链接设备,设备通信,就必须要先熟悉Node-RED的这种面板,对于一个新的项目,在动手做之前一点想对这个的技术的文档有足够的了解做起来才能游刃有余。本期我给大家介绍一下Node-RED的各种面板,熟悉这些面板后,在后续的搭建Iot服务中,会举重若轻,同时该系列的文档,难度会逐步加深,知道了本章解释的名称后对后续文章的理解有很大帮助。 面板1:默认节点选项列表 安装Node-RED后默认的节点分为这5大类

知无涯 1万+

Android的多渠道打包

渠道包就是要在安装包中添加渠道信息,也就是channel,对应不同的渠道,例如:小米市场、360市场、应用宝市场等产品在不同的应用市场可能有不同的统计需求,需要为每个应用市场的Android包设定一个可以区分应用市场的标识,这个为Android包设定应用市场标识的过程就是多渠道打包。

2401_83817916的博客 1743

手把手教你学Simulink——基于Simulink的无感FOC(滑模观测器+PLL)实战

本文详细介绍了基于Simulink的无感FOC(滑模观测器+PLL)实现方法。主要内容包括:1)SMO+PLL原理精讲,阐述滑模观测器核心思想和PLL的作用;2)系统架构全景图展示;3)Simulink建模全流程,从基础FOC框架到SMO和PLL模块的实现;4)关键参数整定指南和工程实践要点;5)仿真结果分析及常见问题解决方案。该方法可有效替代机械传感器,降低成本并提高可靠性,适用于空调压缩机、电动汽车水泵等工业场景。文章还提供了详细的调试建议和动手实践指导。

MHD0815的博客 83

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

当360多渠道打包开始收费之后、、

不得不说,唯利是图绝对是商人的本质,亘古不变、、就这么一个小功能,居然也成了收费的好手段、、因此做了个简单的多渠道打包小工具供大家使用,替大家免去烦恼、

hsh279138244的博客 247

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

360多渠道打包总结

360多渠道打包总结,优缺点,原理,实现步骤。

弱水三千只取一瓢饮 5012

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Android多渠道打包(四):360多渠道打包

本章将介绍360多渠道打包方法 Android多渠道打包(一):原始多渠道打包 Android多渠道打包(二):友盟多渠道打包 Android多渠道打包(三):美团多渠道打包 Android多渠道打包(四):360多渠道打包 Android多渠道打包(五):360多渠道打包+ Android多渠道打包(六):maven+gradle Android多渠道打包(七):多渠道打包总结来源这个

李燕西的博客 6070

Android多渠道打包(五):360多渠道打包+

本章将介绍360多渠道打包的进阶方法 Android多渠道打包(一):原始多渠道打包 Android多渠道打包(二):友盟多渠道打包 Android多渠道打包(三):美团多渠道打包 Android多渠道打包(四):360多渠道打包 Android多渠道打包(五):360多渠道打包+ Android多渠道打包(六):maven+gradle Android多渠道打包(七):多渠道打包总结来

李燕西的博客 4453

Android多渠道打包三种方式

前言:现在市场上很多app应用存在于各个不同的渠道,大大小小几百个,当我们想要在发布应用之后统计各个渠道的用户下载量,我们就要进行多渠道打包。 01.应用的打包签名什么是打包?打包就是根据签名和其他标识生成安装包。签名是什么?1.在android应用文件(apk)中保存的一个特别字符串2.用来标识不同的应用开发者:开发者A,开发者B3.一个应用开发者开发的多款应用使用同一个签名 就好比是一个人写文

Kiven 每天都需要有所获,每天都需要进步......... 1万+

Android 多渠道打包汇总(友盟、美团、360)

多渠道打包 1 友盟多渠道打包 补充知识 Flavors:产品渠道,通过productFlavors针对不同的渠道进行配置 flavorDimensions: flavors的作用是扩大维度,flavorDimensions则是将维度再次扩大。 举个例子,flavors渠道有小米,但是小米有分收费和免费版。这时候可以通过flavorDimensions来扩大维度(具体的可以找下博客很多的)。 B...

chen_changtui的博客 1675

Apk加固后多渠道打包

apk 加固后,多渠道打包。

better的博客 2426

android渠道编号,Android如何获取渠道名

public static StringgetChannelName(Context context) {if (context ==null) {return null;}String channelName =null;PackageManager packageManager = context.getPackageManager();if (packageManager !=null) {...

weixin_31600859的博客 669

Android通知和通知Channel

Android为Notification提供了Notification.Builder类,通过该类允许开发者更轻松的创建Notification对象。Notification.Builder提供了如下方法。 setDefault():设置通知LED灯,音乐,震动。 setAutoCancel():设置点击通知后,状态栏自动删除通知。 setContentTitle():设置通知标题。 se...

lytcoding的博客 1859
上一篇: Failure [INSTALL_FAILED_INVALID_APK]
下一篇: studio 3.0.1下载依赖库地址不对(Failed to resolve: com.kochava.base:tracker)
SeekSage
SeekSage 领域专家: 操作系统技术领域 领域专家: 操作系统技术领域
博客等级 码龄13年 364粉丝 286原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值