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 中的文件来决定哪些类不进行混淆。

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

相关推荐
西岸行者2 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意2 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码2 天前
嵌入式学习路线
学习
毛小茛2 天前
计算机系统概论——校验码
学习
babe小鑫2 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms2 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下2 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。2 天前
2026.2.25监控学习
学习
im_AMBER2 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J2 天前
从“Hello World“ 开始 C++
c语言·c++·学习