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

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

相关推荐
一条小小yu12 分钟前
基于数据库唯一索引 + 过期时间的分布式锁
学习
传奇开心果编程31 分钟前
【ArkUI 练中学】第15课:UI 界面设计与实战
学习·ui·华为·harmonyos
传奇开心果编程2 小时前
【springboot基础语法学与练】第 1 课:从零开始
java·spring boot·后端·学习
扶风ff2 小时前
练题簿小程序:家庭在线练题,课后复习更简单
学习·小程序
传奇开心果编程2 小时前
【Flutter入门练中学】第2课:布局系统
学习·flutter·ui
彧azz3 小时前
Linux 网络编程学习总结
linux·网络·笔记·学习·面试
一尘之中3 小时前
指挥控制中心与指控系统:概念、应用、厂商与DDS技术全景
学习·架构·ai写作
一条破秋裤4 小时前
测试A学习顺序
学习
传奇开心果编程4 小时前
【Jetpack Compose基础语法学与练】第8课 rememberSaveable,页面旋转/系统重建保留状态
android·学习·ui·kotlin·android jetpack
迪丽热爱4 小时前
多媒体应用16-830(补)
学习