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文件。
  • pluginManagementdependencyResolutionManagement块中添加国内镜像源。例如,使用阿里云的镜像地址:
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:loginfeatures/login/
  • :libs:baselibs/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
相关推荐
xiangpanf9 小时前
Laravel 10.x重磅升级:五大核心特性解析
android
robotx12 小时前
安卓线程相关
android
消失的旧时光-194312 小时前
Android 面试高频:JSON 文件、大数据存储与断电安全(从原理到工程实践)
android·面试·json
dalancon13 小时前
VSYNC 信号流程分析 (Android 14)
android
dalancon13 小时前
VSYNC 信号完整流程2
android
dalancon13 小时前
SurfaceFlinger 上帧后 releaseBuffer 完整流程分析
android
用户693717500138414 小时前
不卷AI速度,我卷自己的从容——北京程序员手记
android·前端·人工智能
程序员Android15 小时前
Android 刷新一帧流程trace拆解
android
墨狂之逸才15 小时前
解决 Android/Gradle 编译报错:Comparison method violates its general contract!
android
阿明的小蝴蝶16 小时前
记一次Gradle环境的编译问题与解决
android·前端·gradle