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
相关推荐
启雀AI2 小时前
培训平台移动端离线学习方案设计与实现:视频缓存、断点续传与进度同步的工程实践
android·学习·缓存·音视频·企业lms
2601_966563525 小时前
愤怒的小鸟单机版 去广告 安卓+PC端离线纯净版 益智耐玩小游戏 不需联网 老旧手机都可以玩 怀旧手机小游戏
android·智能手机
hunterandroid5 小时前
[Android 从零到一] Retrofit 请求取消与生命周期绑定:从 Call.cancel 到协程可取消设计
android
爱跑马的程序员5 小时前
安卓专有的通信子系统-Binder IPC
android·binder·ipc·安卓间通信机制
ue星空6 小时前
【安卓逆向】为什么用Frida?
android
小驰行动派6 小时前
Camx架构全景图:从V4L2到Pipeline的完整拆解
android·camera·android camera
hunterandroid7 小时前
[Android 从零到一] Custom View 触摸反馈与手势冲突解决
android
coderSong25688 小时前
Android | 四大组件之 BroadcastReceiver(广播接收器)
android
爱笑鱼11 小时前
Android 系统启动机制(二):init.rc 不是普通脚本,service、action 和 property 怎样驱动启动?
android
新鲜势力呀11 小时前
深入理解 Elliot CUDA 编程核心:PHP 实现 CUDA 并行计算思想与实践
android·开发语言·php