用途
该技能用于指导使用 Java 语言开发 Android 应用,强调采用 MVVM 分层架构、ViewBinding 视图绑定以及 Espresso 测试。资料以项目结构、构建配置、代码样例与规范清单的形式,给出可参考的工程骨架与实现模式。
项目结构
资料展示的目录结构将代码划分为若干层:
- data 层:包含 local(Room 数据库、SharedPreferences)、remote(Retrofit 服务、API 客户端)与 repository(仓库实现)。
- di 层:依赖注入(Hilt/Dagger)。
- domain 层:业务逻辑,细分为 model(领域模型)、repository(仓库接口)与 usecase(用例)。
- ui 层:表现层,包含 feature(各功能界面的 Activity、Fragment、ViewModel)与 common(共享 UI 组件)。
- App.java:Application 类。
- 资源目录:res/layout、res/values、res/drawable 与 AndroidManifest.xml。
- 测试目录:test(单元测试)与 androidTest(仪器测试)。
- 构建文件:模块级 build.gradle、项目级 build.gradle、gradle.properties、settings.gradle 与 CLAUDE.md。
主要能力与配置
模块级 build.gradle 采用 com.android.application 插件,设置 namespace、compileSdk 34、minSdk 24、targetSdk 34 与版本信息,release 构建开启 minifyEnabled 并配置 ProGuard 规则,编译选项使用 Java 17,并开启 viewBinding。依赖包含 AndroidX core、appcompat、Material、ConstraintLayout、Lifecycle 的 ViewModel 与 LiveData,测试依赖包含 JUnit、Mockito、AndroidX Test Ext JUnit 与 Espresso。
架构模式
资料给出 MVVM 与 ViewModel 的实现示例:ViewModel 持有 UserRepository,使用 MutableLiveData 维护 user、loading、error 状态,并提供 loadUser 方法。仓库模式示例定义 UserRepository 接口(domain 层)与 UserRepositoryImpl 实现(data 层),实现中先查询本地缓存,未命中再通过 Retrofit 请求网络,成功后写入数据库。
Activity 与 Fragment 模式
Activity 示例使用 ActivityMainBinding.inflate 绑定布局,通过 ViewModelProvider 获取 ViewModel,在 setupObservers 中观察 LiveData 更新界面,在 setupListeners 中绑定按钮事件,并在 onDestroy 中将 binding 置为 null。Fragment 示例在 onCreateView 中 inflate 绑定,在 onViewCreated 中获取 ViewModel 并观察数据,在 onDestroyView 中释放 binding 以避免内存泄漏。
测试
单元测试示例使用 MockitoJUnitRunner 与 InstantTaskExecutorRule,通过 Mock 的 UserRepository 验证成功与失败场景下 LiveData 的更新。仪器测试示例使用 AndroidJUnit4 与 ActivityScenarioRule,通过 Espresso 的 onView、withId、perform、check 等 API 验证界面显示、按钮点击与列表滚动。
持续集成与检查
资料提供 GitHub Actions 工作流示例:在 push 与 pull_request 到 main 分支时运行,分别执行 lint、单元测试、构建 Debug APK 并上传产物;仪器测试任务配置 KVM,使用 reactivecircus/android-emulator-runner 在 API 29 上运行 connectedDebugAndroidTest。lint.xml 将硬编码文本、缺失翻译、静态字段泄漏、ViewHolder 等设为 error,将未使用资源、AllowBackup、Overdraw 等设为 warning,并忽略测试目录中的 InvalidPackage。build.gradle 中 lint 配置 abortOnError true、checkReleaseBuilds true,并生成 XML 与 HTML 报告。
常见模式与反模式
常见模式包括:定义 Callback<T> 接口并做空值检查、长期存活对象使用 application context、使用双重检查锁实现线程安全单例。资料列出的反模式包括:Context 泄漏、回调内存泄漏、后台线程更新 UI、硬编码字符串、God Activity、主线程网络请求、忽略生命周期、阻塞主线程、不处理配置变更、硬编码尺寸、过深视图层级以及不关闭资源,并给出相应建议,如 Activity 保持在 200 行以内、布局深度控制在 10 层以内、主线程操作保持在 16ms 以内。
限制
资料未提供安装命令、授权方式、收费标准、价格、平台限制或具体使用步骤等事实,暂未提供。