androidStudio gradle 配置学习总结

一、compileOnly、implementation、api 三者区别;

总结对比表:

配置 编译时可用 运行时可用 是否传递 使用场景
implementation 普通依赖,默认推荐
api 需要暴露给其他模块使用的依赖
compileOnly 仅编译时需要,如注解、平台 SDK

compileOnly 适合依赖机器存在jar代码时用,如编译的framework.jar,可减小apk体积。

最佳实践建议:

  1. **默认使用 implementation**:避免不必要的依赖传递。
  2. **慎用 api**:只有当多个模块需要共享某个库的 API 时才使用。
  3. **合理使用 compileOnly**:如 Lombok、Dagger 编译时生成代码,或 Android 中的 provided 场景。
  4. 迁移旧项目 :将旧的 compile 改为 implementationapi,根据实际暴露需求决定。

二、混淆配置

本地测试来看,编译aar时,

复制代码
minifyEnabled true  表示开混淆,为true时,proguard-rules.pro才有用;
consumerProguardFiles "consumer-rules.pro"    会将consumer-rules.pro 中的内容打包到aar中proguard.txt 中,类似一个说明作用。
复制代码
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' 

则是按proguard-rules.pro 中的文件来决定哪些类不进行混淆。

但参数类型和注释保留测试不起作用。

相关推荐
y = xⁿ20 分钟前
Redis八股学习日记:布隆过滤器
数据库·redis·学习
d111111111d2 小时前
了解Modbus
网络·笔记·stm32·单片机·嵌入式硬件·学习
charlie1145141912 小时前
通用GUI编程技术——图形渲染实战(三十八)——顶点缓冲与输入布局:GPU的第一个三角形
开发语言·c++·学习·图形渲染·win32
我想我不够好。2 小时前
监控学习 4.29 1.5hour
学习
晓晓hh2 小时前
JavaWeb学习——JUnit和日志
学习·junit·单元测试
小超同学你好2 小时前
Transformer 30. MoCo:用「动量编码器 + 队列字典」把对比学习做成可扩展的“字典查找”
深度学习·学习·transformer
光影少年3 小时前
前端SSR和ssg区别
前端·vue.js·人工智能·学习·react.js
筱_智3 小时前
Docker学习-超详细-通俗易懂(从入门到精通)
学习·docker·容器
噜噜噜阿鲁~3 小时前
python学习笔记 | 8.2、函数式编程-返回函数
笔记·python·学习
小郑加油3 小时前
python学习Day8-9天:函数(def)的基础运用
python·学习