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
相关推荐
锅拌饭21 小时前
saveEnabled导致的Fragment大量泄露
android
叽哥21 小时前
Kotlin学习第 3 课:Kotlin 流程控制:掌握逻辑分支与循环的艺术
android·java·kotlin
CYRUS_STUDIO21 小时前
别让 so 裸奔!移植 OLLVM 到 NDK 并集成到 Android Studio
android·android studio·llvm
尚久龙21 小时前
安卓学习 之 图片控件和图片按钮
android·java·学习·手机·android studio·安卓
东风西巷1 天前
Don‘t Sleep:保持电脑唤醒,确保任务不间断
android·电脑·软件需求
tangweiguo030519871 天前
FlutterActivity vs FlutterFragmentActivity:全面对比与最佳实践
android·flutter
葱段1 天前
【Flutter】TextField 监听长按菜单粘贴点击事件
android·flutter·dart
用户091 天前
Gradle 现代化任务依赖方案
android·kotlin
东坡肘子1 天前
从开放平台到受控生态:谷歌宣布 Android 开发者验证政策 | 肘子的 Swift 周报 #0101
android·swiftui·swift
脚踏实地,坚持不懈!1 天前
ANDROID,Jetpack Compose, 贪吃蛇小游戏Demo
android