当前位置: 首页 > news >正文

安卓学习记录1——持续更新ing

        该篇文章主要用于记录个人在使用AS打包安卓apk阶段遇到的各种问题、疑惑以及解决方式,因为问题比较杂没有什么系统性,所以暂时就按照流水线的方式进行记录吧,方便自己后续回溯问题。

        博主之前已经处理过了部分安卓配置,包括JDK、SDK、NDK,所以下面的文章中很少关于此部分的内容,主要是对于AS工程项目配置的梳理。



一、Gradle配置:

        Gradle是什么?它是一个开源的构建自动化工具,专为管理浮渣的软件项目而生的。在安卓开发中,它扮演者项目构建者的角色,其核心作用包含但不仅限于:

  1. 自动化构建流程:将源码(Java/Kotlin)、资源文件、库依赖等编译、打包成可运行的apk、aab文件。
  2. 依赖管理:自动从远程仓库(如Maven Central)下载第三方库,例如Retrofit、Glide
  3. 任务编排:执行自定义任务,流入代码检测、测试、代码混淆、发布
  4. 多项目支持:管理包括多个模块(Module)的大型项目,例如App模块、Library模块
  5. 插件扩展:通过插件(例如Android Gradle Plugin,即AGP)提供安卓专属能力,例如打包、签名等。

        在任意一个安卓项目中,都有一个配置文件gradle-wrapper.properties文件用于进行Gradle的配置:

        该配置文件确定了整个安卓工程的Gralde配置,下面从我对该配置的认识来进行详细的分析,以及自己如何进行自定义配置:

1、Gradle用户根目录:

        该目录定义了Gralde的根目录,通过一个环境变量GRADLE_USER_HOME来定义路径,在windows系统下,它的默认值是:C:\Users\<用户名>\.gradle,如下所示:

自定义根目录位置:

        默认存储位置在C盘,但是这个目录文件是比较大的,一般好几个G,但是C盘空间有限,我不太想放在这里,所以想着改放D盘。对于自定义根目录位置有两种方式:方式一,更改环境变量GRADLE_USER_HOME的指向进行全局配置(推荐);方式二,修改AS的全局配置。

方法二:

        使用方式一会对所有的项目生效,配置之后需要重启AS;方式二仅对于当前的AS工程生效,如果新建AS项目依然会使用默认的路径。博主开始使用的是第二种方式,发现新建的项目依然在C盘生成了.gradle目录,而且重复下载了大量内容。所以为了节省C盘空间并且避免资源的重复下载,建议使用方式一进行全局的配置。

2、Gradle的下载路径:

# 指定下载的Gralde的版本
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip

        这个路径的配置默认从官网的去下载对应的发行版本,Gradle发行包的下载可以通过在线和离线的方式进行。如果在线下载,从官网的下载的速度比较慢,可以适用国内的阿里云、腾讯云等镜像进行加速下载;如果采用离线的方式,需要先去官网下载下来放在本地,然后描述方式改为使用本地离线包。

# 指定下载的Gralde的版本(官网)
#distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
# 使用阿里云镜像下载
#distributionUrl=https\://mirrors.aliyun.com/gradle/gradle-8.11.1-bin.zip
# 使用腾讯云镜像下载
#distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.11.1-bin.zip
# 使用本地离线地址
# 使用相对路径(推荐)
# distributionUrl=gradle/wrapper/gradle-8.11.1-bin.zip
# 或绝对路径
distributionUrl=file\:///D:/SoftInstall/Android/Gradle/offlineVersion/gradle-8.11.1-bin.zip



二、Gradle用户根目录结构:

        接下来博主将解析一下Gradle根目录的目录结构,充分认识了解各个目录的功能作用



三、加速下载、配置镜像:

        为了解决从官网下载插件、依赖缓慢的问题,可以配置国内的阿里云、腾讯云镜像地址。

1、项目级配置:

如果想要只对当前的项目生效,可以在当前项目的根目录下build.gradle(项目级,非模块级)文件中进行配置:

        配置之后进行构建,发现报错内容如下:

        原因是因为在AS的Gradle配置中,优先使用了settings.gradle中定义的仓库,但是项目却在build.gradle中重复添加了仓库。冲突的根源在于当前的安卓版本比较新,在Gradle7.0+引入了dependencyResolutionManagement,强制要求仓库在settings.gradle中进行集中管理,如果在build.gradle中重复添加仓库,会触发此错误。(低版本应该没有这个问题)

        解决方式:统一仓库到settings.gradle中,删除在build.gradle中的仓库配置。

        或者如果一定想要在项目的build.gradle中进行配置,可以修改setting.gradle中配置,以此来降低仓库的检查强度。

// settings.gradle
dependencyResolutionManagement {repositoriesMode.set(RepositoriesMode.PREFER_PROJECT) // 允许项目级仓库
}

2、全局配置:

        如果想要是对所有的项目生效,可以进行全局配置,在Gradle的根目录的init.gradle文件中(如果没有可以自己新建一个),但是主要不要重复配置,依然可能存在重复配置导致的冲突问题。(所以个人建议是在项目级别进行配置即可)

http://www.lryc.cn/news/600640.html

相关文章:

  • Java基础day17-LinkedHashMap类,TreeMap类和集合工具类
  • linux下变更mysql的数据文件目录
  • 基于粒子群算法优化高斯过程回归(PSO-GPR)的多输出回归
  • 基于MySQL实现基础图数据库
  • React入门指南——指北指南(第二节)
  • SpringMVC相关基础知识
  • RustFS for .NET 演示项目深度解析:构建 S3 兼容的分布式存储应用
  • 计划任务(at和cron命令介绍及操作)
  • 《用于几何广义断层触觉传感的图结构超分辨率:在仿人面部的应用》论文解读
  • 一款基于react-native harmonyOS 封装的【文档】文件预览查看开源库(基于Harmony 原生文件预览服务进行封装)
  • 深入剖析 MetaGPT 中的提示词工程:WriteCode 动作的提示词设计
  • Blender入门笔记(一)
  • 简单实现支付密码的页面及输入效果
  • Sql server查询汇总补缺月份
  • 【iOS】网易云仿写
  • 基于深度学习的胸部 X 光图像肺炎分类系统(七)
  • springboot 前后端,基于票据+SHA派生密钥+SM4加解密
  • 经典IDE之Turbo C
  • 基于MC9S12XEP100的整车控制器(VCU)设计
  • 【Zephyr】Window下的Zephyr编译和使用
  • Redis的数据淘汰策略是什么?有哪些?
  • 资产负债表及其数据获取
  • 【LeetCode 热题 100】79. 单词搜索——回溯
  • 进阶数据结构:用红黑树实现封装map和set
  • element-plus安装以及使用
  • 机器人仿真(2)Ubuntu24.04下RTX5090配置IsaacSim与IsaacLab
  • Java实现大根堆与小根堆详解
  • 【数据结构】栈和队列的实现
  • 基于DataX的数据同步实战
  • 详解力扣高频SQL50题之1141. 查询近30天活跃用户数【简单】