当前位置: 首页 > 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.dtcms.com/a/300151.html

相关文章:

  • React组件中的this指向问题
  • 三防平板支持DMR对讲有什么用?实现高效集群调度
  • 如何理解“测试场景”与“测试要点”的区别和联系?
  • Linux系统架构核心全景详解
  • 从0到1学Pandas(六):Pandas 与数据库交互
  • KiCad 与 CircuitMaker 使用方法分享:从零开始学电子设计
  • JavaWeb(苍穹外卖)--学习笔记11(Filter(过滤器) 和 Interceptor(拦截器))
  • Windows开发,制作开发软件安装程序(一)
  • MySQL的底层原理--InnoDB数据页结构
  • 关于GateWay网关
  • 基于HMM的词性标注方法详解(HMM+Viterbi,例题分析)
  • 【专业扫盲】电压/电流反馈和串联/并联反馈
  • CSP2025模拟赛2(2025.7.26)
  • 机器人仿真(2)Ubuntu24.04下RTX5090配置IsaacSim与IsaacLab
  • Jenkins持续集成工具
  • swagger基本注解@Tag、@Operation、@Parameters、@Parameter、@ApiResponse、@Schema
  • (1-7-4) MySql 的高级查询
  • 20250726-2-Kubernetes 网络-Service 定义与创建_笔记
  • 【Spring Cloud】微服务学习
  • 超时进行报警例子
  • 在 Windows 系统中实现 WinToGo 的 VHDX 文件切换使用的常见方法
  • 什么是缓存雪崩?缓存击穿?缓存穿透?分别如何解决?什么是缓存预热?
  • Spring AI Alibaba Video 示例
  • 大型微服务项目:听书——12 数据一致性自定义starter封装缓存操作
  • Java设计模式之行为型模式(中介者模式)实现方式与测试方法
  • 大数据之路:阿里巴巴大数据实践——实时技术与数据服务
  • Reeden:跨平台 AI 电子书阅读器
  • leetcode112, 257:二叉树的路径总和、二叉树的所有路径双题对比
  • 【基础完全搜索】USACO Bronze 2020 December - 雏菊链Daisy Chains
  • AI Agent:自主决策的智能助手