Android 开发工程常识

环境配置

配置 gradle 源

打开 gradle/wrapper/gradle-wrapper.properties

找到distributionUrl这一行,将其修改为国内的镜像地址。例如,使用腾讯云的镜像地址:

properties 复制代码
distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.11.1-bin.zip


# 或者使用阿里云 Gradle 镜像

distributionUrl=https\://mirrors.aliyun.com/gradle/gradle-8.2-all.zip

注意:URL中的斜杠需要转义,使用\代替/。

配置插件仓库源

settings.gradle.kts文件用于配置插件仓库源。将默认的仓库地址替换为国内镜像地址,可以加速插件的下载和更新。

  • 打开项目根目录下的settings.gradle.kts文件。
  • 在pluginManagement和dependencyResolutionManagement块中添加国内镜像源。例如,使用阿里云的镜像地址:
kts 复制代码
pluginManagement {
    repositories {
         // 使用阿里云镜像替代默认仓库
        maven { url=uri ("https://maven.aliyun.com/repository/google")}
        maven { url=uri ("https://maven.aliyun.com/repository/central")}
        maven { url=uri ("https://maven.aliyun.com/repository/gradle-plugin")}
        maven { url=uri ("https://maven.aliyun.com/repository/public")}

        google()
        mavenCentral()
        gradlePluginPortal()
    }
}


dependencyResolutionManagement {
    # repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        // 使用阿里云镜像替代默认仓库
        maven { url=uri ("https://maven.aliyun.com/repository/google")}
        maven { url=uri ("https://maven.aliyun.com/repository/central")}
        maven { url=uri ("https://maven.aliyun.com/repository/gradle-plugin")}
        maven { url=uri ("https://maven.aliyun.com/repository/public")}

        google()
        mavenCentral()
        gradlePluginPortal()
    }
}

使用代理工具加速下载

在 gradle.properties中加入以下:

properties 复制代码
systemProp.http.proxyHost=127.0.0.1
systemProp.http.proxyPort=7890
systemProp.https.proxyHost=127.0.0.1
systemProp.https.proxyPort=7890

模块管理

默认新建的模块(File -> New -> New Module)只能全部平铺在项目根目录下,实际我们需要将多个功能模块(Module)按业务或类型归类到子文件夹中,目录结构参考如下:

csharp 复制代码
MyApp (Project Root)
├── app/                          # 主模块
├── features/                     # 业务功能模块统一放在这个文件夹
│   ├── login/
│   ├── profile/
│   └── home/
├── libs/                         # 基础库模块
│   ├── base/
│   ├── network/
│   └── ui/
├── build.gradle
├── settings.gradle
└── gradle.properties

这种情况我们可以通过 settings.gradle 配置模块路径。

Android 项目通过 settings.gradle 文件来注册所有参与构建的模块。你可以在这里指定模块的 目录路径 和 模块名称。

步骤 1:创建文件夹并移动模块

  1. 创建文件夹:features/login
  2. 将原来的 feature-login 模块整个移动进去,重命名为 login

步骤 2:在 settings.gradle 中注册模块

修改 settings.gradle(或 settings.gradle.kts):

gradle 复制代码
include ':app'
include ':features:login'
include ':features:profile'
include ':libs:base'
include ':libs:network'

或者:

kts 复制代码
include(":app")
include(":features:login")
include(":features:profile")
include(":libs:base")
include(":libs:network")

这样 Gradle 就会去对应路径查找模块:

  • :features:login → features/login/
  • :libs:base → libs/base/

步骤 3:确认模块内的 build.gradle 正确

确保 features/login/build.gradle 中的配置正常,比如:

gradle 复制代码
android {
    namespace 'com.example.login'  // 包名
    compileSdk 34
    ...
}

步骤 4:在其他模块中引用该模块

例如在 app/build.gradle 中依赖 login 模块:

gradle 复制代码
dependencies {
    implementation project(':features:login')
}

注意事项:

  1. 模块名:称用
  2. 路径是相对于项目根目录的,不需要写完整路径,Gradle 自动查找

推荐的结构:

csharp 复制代码
.
├── app/                      # 主应用模块
├── features/                 # 业务功能模块
│   ├── auth/                 # 登录/注册
│   ├── home/                 # 首页
│   ├── profile/              # 个人中心
│   └── shop/                 # 商城
├── libs/                     # 公共库
│   ├── base/                 # 基础组件(BaseActivity、Theme 等)
│   ├── network/              # 网络封装
│   ├── data/                 # 数据层(Room, Repository)
│   └── ui/                   # 通用 UI 组件(Compose 组件库)
├── build.gradle
├── settings.gradle(.kts)
└── gradle.properties
相关推荐
stevenzqzq1 小时前
Android Jetpack Compose 列表开发指南:为什么你不需要再为底部 Item 写额外间距
android·android jetpack
撩得Android一次心动9 小时前
Jetpack Compose 知识点整理2【个人用】
android·笔记·学习·kotlin·compose
是真的小外套10 小时前
2024年软考中级信息安全工程师|选择题考点+案例分析真题解析(含答案)
android·网络
用户20187928316712 小时前
一文讲透 Android Native Heap 监控原理:一间"只进不出"的仓库,和总部派来的侦探
android
YB137513 小时前
Jetpack Compose 动画animate*AsState
android
高晶13 小时前
Android 通讯录应用开发实战:从零搭建 SQLite 数据持久化完整项目
android·设计模式·前端框架
隐擎fox14 小时前
深入 Android 移动端风控与协议层对抗:内核级虚拟环境检测、网络堆栈特征伪装与住宅 IP 协同实战
android·网络·python·网络协议·tcp/ip
换元不配限16 小时前
从 AsyncTask 到现代并发:Android 异步方案的演进与替代实践
android·asynctask·异步编程·方案对比·asynctask替代方案
用户20187928316716 小时前
你的 App 为什么是「电量刺客」?——从一条 WakeLock 追到 Linux 内核的 Android 省电原理全解
android