排序
【Gradle-8】Gradle插件开发指南
1、前言 Gradle插件开发在Android进阶知识中是占有一定比例的,特别是在性能优化领域,基本都会涉及,而且跟我们日常的编译打包也息息相关,加上有不少招聘要求里也明确要有Gradle插件开发经验...
玩转ASM | 写个代码扫描插件,再也不怕 log4j 等问题
引言 关于静态代码扫描,大家想必都非常熟悉了,比如 lint、detekt 等,这些也都是常用的扫描工具。但随着隐私合规在国内越来越趋于常态,我们经常需要考虑某些危险api的调用排查等等,此时上述...
如何使用Gradle7.0+的VERSION_CATALOG
把重要补充放在前面(2022年6月17日):该功能测试下来发现,需要把gradle文件夹下的gradle-wrapper.properties中,gradle版本改为7.4.2以上才可以,否则无法解析‘ (2023年8月2日)最新的喜欢...
Android 字节码插桩库,也许有你需要的
公众号:字节数组 希望对你有所帮助 ??? 一、Trace 在最近的一年多时间里,我先后写过六篇关于 Android 字节码插桩的文章,一共对应四个功能点 ASM 字节码插桩:实现双击防抖 ASM 字节码插桩:...
搭建自己的Gradle Build Cache Service(基于阿里云OSS)
在Gradle深入解析 - Task原理(执行篇)中分析过gradle的缓存机制,知道gradle有本地和远程缓存的区分,它会记录下task的输入输出,可以从缓存中恢复输出来避免重新执行,以加快构建速度,那么我...
如何像build scan一样收集gradle构建信息
如果你还没有使用过build scan功能,推荐尝试一下,它用精美的UI展示了gradle构建过程中的详细信息。比如参与构建的project的层级关系,所使用到的插件,项目维度的依赖,task的执行耗时等等等...
提高代码质量!详解在Gradle项目中使用PMD的正确姿势
当今的软件开发需要使用许多不同的工具和技术来确保代码质量和稳定性。PMD是一个流行的静态代码分析工具,可以帮助开发者在编译代码之前发现潜在的问题。在本文中,我们将讨论如何在Gradle中使...
gradle 产出apk文件的全过程
当我给 build.gradle中添加了渠道支持之后,如果我想要输出flavor1渠道的release包, flavorDimensions 'channel' productFlavors { flavor1 { dimension 'channel' ...
App常用依赖管理工具
依赖管理 大到整个App,小到一个函数。只要是能够复用减少重复开发工作量, 就可以抽出为组件库, 以库或包的形式进行复用。 依赖管理工具关注组件或库的名称、版本、仓库源(本地或远程),在配置...
Android Gradle高级自定义
概述 Andorid Gradle支持一些实用的功能,比如:隐藏签名证书文件,降低证书暴露的风险。批量修改apk的名称,让名称一眼就能看出渠道,版本号,生成日期等关键信息。 1. 批量修改生成的apk名称 ...
Gradle 构建工具 #5 又冲突了!如何理解依赖冲突与版本决议?
⭐️ 本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 和 [BaguTree Pro] 知识星球提问。 Gradle 作为官方主推的构建系统,目前已经深度应用于 Android 的多个技术体系中,...
Android – 统一依赖管理 (最新版:version Catalogs)
前言 几个月前,我发布了一个 《Android - 统一依赖管理(config.gradle)》文章,评论区好多帅哥靓女说,这种方式已经过时了。如图: 仔细一想,之前的方式确实是有很多的弊端,并且不太方便。...
自定义Gradle二进制插件
我们出于自己的目的,要开发实际业务场景的插件来辅助项目构建。 自定义二进制插件,可以使用 java,kotlin,或者 groovy 来编码,因为他们都是基于JVM的编程语言,最终都会生成class交给JVM去...
使用 Gradle Kotlin DSL 将 Android aar 发布到 Maven Repository – JFrog 的几点经验
近期正在着手将一些项目中共用组件抽离到底层,封装为组件,发布到公司内网 Jrog 搭建的 Maven 库。并且想要尝试使用 Gradle Kotlin DSL 替代 Gradle Groovy 来构建项目,遇到了一些坑,特此记...
Gradle插件基础(1)
插件的概念 Gradle本身提供了基本的概念和 核心框架,这两样东西,完全不涉及到 业务内容,它们只提供业务可能用到的抽象过程,而业务内容(涉及到真实应用场景的逻辑性质的代码)全部以外来扩...
从开发一个插件看,安卓gradle插件适配AGP8.0
前言 相信很多小伙伴项目还没有升级AGP7.0,可是最新的AGP已经到8.2了,适配AGP8.0也要提上日程了,尤其是一些插件项目,因为8.0删除了transform API,所以需要提前做好适配工作。 如果你是一个...
AOP Gradle插件的仓库地址不稳定,干脆自己来搭建Nexus私服
问题来源 今天研究了下如何将gradle的aop插件打包上传到Nexus私服,本来也想使用第三方的maven仓库,但是发现网上的几乎都关服了,那么没办法,只能自己搭建一下Nexus私服了。 搭建Nexus环境 我...
AGP8.0 ASM 更简单灵活了
前言 在之前 《Gradle Transform + ASM 探索》 一文中讨论了使用 AGP 提供的 Transform 接口自定义 Gradle 插件,通过 ASM 进行代码插桩。实现一些类似方法耗时统计,批量添加点击事件做埋点的...
gradle 实用技巧
前言 总结一些日常开发中非常有用的 gradle 脚本、自定义功能实现。 实现 以下实现基于 AGP 8.0.2 版本 ,AGP 的 API 隔三岔五就会迎来一波破坏性的变更,导致脚本和插件无法使用,因此这里需要...
[应用出海] 使用 Gradle 解决 Android 模块化项目中的多语言支持
[应用出海] 使用 Gradle 解决 Android 模块化项目中的多语言支持 近年来越来越多的开发者和企业把目光聚焦于海外,寻求新的增长机会。然而对于一个“土生土长”的应用,想要在海外分一杯羹面临...