Android-->产物收集(含apk文件重命名, aab文件重命名)

news2024/9/21 22:29:10

以前写过修改apk生成路径和文件名的文章, 如下:

AS–›Gradle 7.0.0/4.1.0/4.0/3.3/3.0 修改APK生成路径和文件名(附AAR修改方式以及分析过程)_com.android.build.gradle.internal.api.libraryvaria-CSDN博客

这种方法入侵了gradle,破坏了原有的gradle环境, 经常会导致如下问题的产生:

  • Error loading build artifacts from: ...app/intermediates/apk_ide_redirect_file/debug/redirect.tx
  • In plugin 'com.android.internal.version-check' type 'com.android.build.gradle.internal.tasks.ListingFileRedirectTask' property 'listingFile'
  • 'output-metadata.json' which doesn't exist.

这一次, 换一种思路实现, 以便达到相同效果.

这次通过监听assembleXXX任务(用于生成apk)和bundleXXX任务(用于生成aab), 在任务结束之后, 通过脚本复制对应的产物到指定的目录(顺便修改文件名),即可达到相同的效果.

android {
    tasks.whenTaskAdded { task ->
        tasks.create('收集产物任务') {
            doLast {
               //开始收集产物
            }
        }
        task.finalizedBy('收集产物任务')//挂载任务
    }
}

怎么设置对应的产物名称

这里通过applicationVariants拿到flavorbuildType, 将产物名称关联到这2个参数上.

android {
    applicationVariants.all { variant ->
        variant.flavorName //关键信息flavor
        variant.buildType.name //关键信息buildType
    }    
}
    

使用flavorbuildType按照一定规则, 生成唯一的key, 然后把产物名称通过ext对象存储,rootProject.ext.setProperty(key, name), 方便之后在task中读取.

怎么读取设置的产物名称

Android打包时, 都有对应的打包gradle task, 这个task.name就会包含flavorbuildType信息, 只要从任务名称中分离出这2个参数, 然后和上一步对应上, 就可以取出设置好的产物文件名了.

思路大体就是上述内容, 我已封装成了在线脚本, 一键食用.

脚本支持特性

  • 支持收集apk,并支持重命名
  • 支持收集aab,并支持重命名
  • 收集mapping.txt
  • 收集usage.txt
  • 收集seeds.txt
  • 收集R.txt
  • 收集configuration.txt
  • 支持AGP 8.0+
  • 支持AGP 8.0-

使用方式

apply脚本之前, 先配置产物名称:

ext {
    APP_NAME = "xxx"
    apkName = "#an-#vn_#fn_#bn_#ka"
}

//可用参数: #an:app名字APP_NAME; #vn:版本名; #d:当天日期yyyy-MM-dd; #t:当天时间yyyy-MM-dd_HH-mm; #fn:风味名; #bn:编译类型名;
//         #sn:使用的签名名称; #ka:使用的签名别名;

在工程的build.gradle中加入脚本:

国内

apply from: 'https://gitee.com/angcyo/CollectProduct/raw/master/app/collectProduct.gradle'

国外

apply from: 'https://raw.githubusercontent.com/angcyo/CollectProduct/master/app/collectProduct.gradle'

参数配置

gradle.properties文件中配置产物输出目录, 默认为根目录下的.apk文件夹:

apk_path='.apk'

群内有各(pian)种(ni)各(jin)样(qun)的大佬,等你来撩.

联系作者

点此QQ对话 该死的空格 点此快速加群

在这里插入图片描述

开源地址

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2037955.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024年8月中国数据库排行榜:OceanBase攀升再夺冠,达梦跃入三甲关

在这个炽热的季节,随着巴黎奥运会的盛大开幕,全球将目光聚集在了体育的无限魅力和竞技的巅峰对决上。如同奥运赛场上的激烈角逐,中国数据库界也上演着一场技术与创新的较量,各个数据库产品正在中国乃至全球舞台上展示着它们的实力…

mitmproxy 抓包工具的使用

motmproxy 是一个支持 HTTP/HTTPS 协议的抓包程序, 和 Fiddler, Charles 有些类似的功能,只不过它以控制台的形式操作 mitmproxy 还有两个关联组件。 一个是 mitmdump , 这是 mitmproxy 的命令接口, 利用它我们可以对接 Python …

企业用的文件加密软件有哪些?2024年最好用的十款文件加密软件

随着数字化转型的深入,企业数据安全成为了一个日益重要的议题。文件作为企业日常运营和知识管理的核心载体,其安全性直接关系到企业的商业机密和知识产权保护。为了应对日益严峻的数据安全挑战,市场上出现了多款功能强大、操作简便的文件加密…

从0开始搭建vue + flask 旅游景点数据分析系统(十):Element-UI消息插件封装

上一期我们使用过了elementui的Message来弹出消息提示框,但是上期的写法每次都要在vue文件中引入Message,并且要写不少重复代码,这一期就以插件方式将message封装到Vue的实例中。 创建plugins/message.js 这边加了判断的作用是,…

备忘录内容可以隐藏内容吗 备忘录内容在哪隐藏

在现代忙碌的生活中,备忘录成为了我们不可或缺的助手。它帮助我们记录重要的事项、想法和灵感,确保我们不会错过任何关键信息。然而,随着备忘录里积累的内容越来越多,很多人开始担心这些私密信息的安全。毕竟,如果备忘…

光影漫游者:品牌推广与产品发布的理想展示空间—轻空间

在竞争日益激烈的市场环境中,品牌推广和产品发布会不仅要传递信息,更要留下深刻印象。而光影漫游者作为创新展示空间的典范,以其现代感十足的外观设计与高科技内饰配置,为企业提供了一个完美的展示平台,最大限度地吸引…

Steinberg SpectraLayers Pro for Mac:专业音频频谱编辑的巅峰之作

Steinberg SpectraLayers Pro for Mac是一款专为音频专业人士设计的专业音频频谱编辑器,它以其强大的频谱编辑功能和直观的操作界面,在音频处理领域树立了新的标杆。该软件不仅为音频编辑工作带来了前所未有的精确度和灵活性,还极大地提升了音…

map/set和unordered_map/unordered_set的区别及使用情况

map/set和unordered_map/unordered_set的区别 容器底层数据结构是否有序实现版本复杂度迭代器map/set红黑树有序C98O(logN)双向迭代器unordered_map/unordered_set哈希表/散列表无序C11O(1)单向迭代器 unordered_set无序的(VS下) void uno…

文件长度超出芯片容量, 超出部份将被忽略!ch341a编程器报错解决方法

出现这个错误提示,说明你正在刷的是华硕主板的cap格式BIOS文件。 编程器不支持这种文件,需要转换成编程器专用版本BIOS文件。 华硕cap格式BIOS转编程器bios文件,转换工具下载地址:https://download.csdn.net/download/baiseled/88…

CentOS 7设置静态IP地址的详细指南

CentOS 7设置静态IP地址的详细指南 配置静态IP地址是服务器或虚拟机管理的重要步骤之一,特别是在需要稳定、可预测的网络环境时。本文将详细介绍如何在CentOS 7上设置静态IP地址,帮助确保你的系统网络配置符合需求。 1. 查看当前网络配置 在进行任何更…

【SpringMVC】详细了解SpringMVC中WEB-INF 目录资源,视图解析器和静态资源放行的使用。

目录 1. 回顾SpringMVC请求转发和重定向 2. WEB-INF资源目录 3. 视图解析器 4. 静态资源放行 1. 回顾SpringMVC请求转发和重定向 概念:在一个项目中功能非常多,也就意味着有非常多的Servlet,不同的Servlet的职不 同 ,而用户发起…

开源网络评论引擎Comentario

什么是 Comentario ? Comentario 是一个轻量级评论平台,您可以使用 Docker 轻松自行托管。这一切都是为了简单和隐私。Comentario 是用 Go 编写的,使其快速且易于使用。支持 Markdown 语法、Disqus 导入、评论投票、垃圾邮件和毒性过滤器、审…

【python】python中如何通过ddddocr来识别验证码,突破滑块移动验证

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…

zdpgo_cobra_req 新增解析请求体内容

zdpgo_cobra_req 使用Go语言开发的,类似于curl的HTTP客户端请求工具,用于便捷的测试各种HTTP地址 特性 1、帮助文档都是中文的2、支持常见的HTTP请求,比如GET、POST、PUT、DELETE等 下载 git clone https://github.com/zhangdapeng520/z…

Handler 消息处理机制总结

和你一起终身学习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: 一、Handler 简介二、Handler 消息处理机制原理三、Handler 机制处理的4个关键对象四、 Handler常用方法五、子线程更新UI 异常处理六、主线程给子线程…

1.Java基础概念-注释和关键字

欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 Facts speak louder than words! 注释是在程序的指定位置…

Shell脚本发送邮件的详细步骤与配置方法?

Shell脚本发送邮件的进阶技巧?怎么配置Shell脚本发信? 使用Shell脚本发送邮件是一种高效的自动化手段,特别是在需要定期发送报告、通知或警告信息时。AokSend将详细介绍Shell脚本发送邮件的步骤与配置方法,帮助您更好地掌握这一技…

java: 程序包org.springframework.boot.autoconfigure不存在

通过 mvn -U idea:idea 命令重新加载maven包,具体操作是这样的: 打开cmd窗口cd 到 工程根目录,比如我的工程是:D:\IdeaProjects\demo, 执行 mvn -U idea:idea 命令,完了以后重新运行项目就正常了&#xff…

2024年哪家蓝牙耳机性价比高?分享四款高性价比精品耳机产品

随着科技的发展,蓝牙耳机在市场上非常火爆,但很多人不知道该如何选一款适合自己的蓝牙耳机,经常被商家所迷惑,所以常入手到了导致品质低劣甚至买了与价格不匹配的耳机,所以说2024年哪家蓝牙耳机性价比高?作…

可调恒流电子负载如何实现的

可调恒流电子负载是模拟真实负载的电子设备,它可以在电源电压和电流范围内提供恒定的电流或电压。其工作原理主要基于欧姆定律和功率守恒定律。欧姆定律指出,电流通过一个电阻体时,电流的大小与电压的大小成正比,与电阻的大小成反…