当前位置: 首页 > news >正文

如何用 Android Studio 从零构建 MoneyManagerEx:JDK17 + Gradle 完整开发者构建指南

如何用 Android Studio 从零构建 MoneyManagerEx:JDK17 + Gradle 完整开发者构建指南

【免费下载链接】android-money-manager-exLocal-first personal finance app. Encrypted, self-hosted, sync across devices.项目地址: https://gitcode.com/gh_mirrors/an/android-money-manager-ex

MoneyManagerEx 是一款本地优先(Local-first)的 Android 个人财务记账应用:数据库加密存储、支持自托管云盘同步、可跨设备使用。如果你想在本地跑起来、改一行代码看看效果,本指南将带你用 JDK17 + Gradle 在 Android Studio 中从零完成 MoneyManagerEx 的开发者构建,最终得到一个可直接安装运行的 APK。🚀

一、环境准备清单

开始之前,请对照下面的清单检查开发环境(耗时约 10 分钟):

组件推荐版本说明
Android Studio当前稳定版官方 IDE,自带 SDK 管理
JDKJDK 17(Android Studio 内置)无需手动安装,使用 embedded JDK 即可
Android SDKcompileSdk 36 / minSdk 29构建时会自动下载所需组件
Git任意较新版本用于拉取源码

💡 项目官方构建建议就是三句话:使用当前稳定版 Android Studio、使用内置 JDK(JDK17+ 兼容)、使用项目自带的 Gradle Wrapper。见根目录 README.md 中的 Build 章节说明。

二、克隆项目源码

打开终端,执行以下命令克隆仓库:

git clone https://link.gitcode.com/i/8b509a140b44b0b431a25f159e2ceb8d cd android-money-manager-ex

项目采用多模块(Multi-module)结构settings.gradle中声明了 3 个模块:

  • app/—— 主应用模块,几乎所有业务代码都在这里
  • money/—— 财务计算相关的 Android Library
  • MMEX_Icon_Font/—— 图标字体库

三、Android Studio 导入与 Gradle 同步

  1. 打开 Android Studio →File → Open,选择克隆下来的项目根目录;
  2. 首次打开时,Android Studio 会自动下载 Gradle Wrapper 指定的Gradle 9.4.0(版本定义在gradle/wrapper/gradle-wrapper.properties),无需手动安装 Gradle;
  3. 等待右下角的Sync进度条走完。同步过程会拉取依赖:AGP 9.1.0(Android Gradle 插件)、Kotlin 插件、AndroidX 组件等,全部版本集中维护在gradle/libs.versions.toml(Gradle 版本目录),非常便于排查依赖冲突。

同步完成后,左侧 Project 面板应能看到appmoneyMMEX_Icon_Font三个模块,说明导入成功。✅

四、读懂关键构建配置

MoneyManagerEx 的构建行为主要由以下几个文件控制,花 2 分钟了解它们,之后改配置就不迷路了:

根目录build.gradle:SDK 版本总开关

ext { compileSdk = 36 targetSdk = 36 minSdkVersion = 29 // Android 10 }

即:面向 Android 10 及以上设备,编译目标为 Android 15(API 36)。

app/build.gradle:三种发行版 Flavor

productFlavors { fdroid { } // F-Droid 版 gplay { applicationIdSuffix ".android" } // Google Play 版 sync { /* 云同步版 */ buildConfigField "boolean", "IS_SYNC_ENABLED", "true" } }

这就是为什么发布渠道有多个版本:sync渠道会开启云同步功能(对应应用的自托管同步特性),默认fdroid/gplay渠道则是纯本地模式。

根目录gradle.properties:别忘了 Jetifier

android.useAndroidX=true android.enableJetifier=true # 旧库(如 Caldroid)依赖老 Support Library,必须开启

如果你关闭 Jetifier 后出现android.support.v4相关崩溃,原因就是这一行被误关了。

五、一键构建并运行到设备

  1. 连接 Android 10+ 的真机(开启 USB 调试),或启动模拟器(建议 API 30+);
  2. 顶部工具栏确认 Build Variant 选择fdroidDebug(首次调试选 debug 类型即可);
  3. 点击绿色Run ▶按钮。

第一次构建会耗时几分钟(Gradle 配置缓存 + 依赖编译),之后增量构建只需十几秒。运行成功后,你会看到 MoneyManagerEx 的启动页,接下来即可体验创建加密数据库、添加账户、记第一笔交易等完整流程。

六、命令行构建 APK(可选)

如果只想产出 APK 而不启动模拟器,可用项目自带的 Gradle Wrapper:

./gradlew :app:assembleFdroidDebug

产物位于app/build/outputs/apk/下,文件名格式为ammx-5.5.9.apk(版本号同样来自app/build.gradleversionName)。Windows 用户请使用gradlew.bat

七、常见问题速查

现象解决办法
同步报Unsupported class file major version检查 SDK Manager → Gradle,JDK 位置必须是 Android Studio 内置 JDK 17,不要指向 JDK 8/11
构建卡在下载 Gradle 分发包确认能访问services.gradle.org,或使用公司代理;Wrapper 只会完整下载一次
运行提示INSTALL_FAILED_OLDER_SDK设备低于 Android 10(minSdk 29),换一台设备或 API ≥ 29 的模拟器
编译报android.support相关错误确认gradle.propertiesandroid.enableJetifier=true未被删除
内存不足OutOfMemoryErrorgradle.properties中已设-Xmx2048m,机器内存紧张时可临时调低并关闭无关 IDE 窗口

八、下一步:熟悉代码与文档

  • 业务代码入口在app/src/main/java/com/money/下,按功能划分子包(账户、交易、预算、报表等);
  • 数据库加密依赖sqlcipher-android,定义在app/build.gradle的依赖清单中;
  • 想深入了解应用概念(账户、分类、预算、定时交易),可阅读用户手册docs/usermanual/目录下的各章节。

构建到这里就完成了 🎉 你手里的这个 APK,就是一个与 F-Droid / Google Play 上发布同源、可自由修改的 MoneyManagerEx。接下来不妨试着改一个界面文案或加一个按钮,体验完整的「修改 → 构建 → 安装 → 验证」开发循环。

【免费下载链接】android-money-manager-exLocal-first personal finance app. Encrypted, self-hosted, sync across devices.项目地址: https://gitcode.com/gh_mirrors/an/android-money-manager-ex

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.cnnetsun.cn/news/4209323.html

相关文章:

  • 12G 显存跑通 SV4D:Stability AI generative-models 从零到 4D 生成的完整路线
  • JavaScript事件循环机制详解与面试实战
  • test-case版本选择指南:理解MSRV策略与依赖锁定
  • 从数据采集到知识生长——WSaiOS-ICAI知识获取与更新流程工程研究
  • 如何本地预览 Prisma 参考文档:prisma-docs-generator serve 命令完整教程
  • 3分钟教程:ncmdump 免费把 NCM 音乐转成 MP3
  • Ardent迭代器家族源码全解:栈与队列实现4种树遍历的完整清单
  • rplidar_ros launch文件全解:12个参数配置指南与scan_mode、angle_compensate实战技巧
  • 网络安全校招岗位解析与职业规划指南
  • rosbag2 从零跑通 ROS2 录制回放:安装、录制与回放实用指南
  • JavaScript核心概念与高频面试题解析
  • 小厂前端实习面试全攻略:高频考点与实战技巧
  • 2026软件测试面试全攻略:理论与实战解析
  • 5分钟上手UIViewController-KeyboardAnimation:iOS键盘动画类别完全指南
  • 网络安全面试全攻略:技术要点与实战技巧
  • RPCS3 PS3模拟器汉化配置指南:3步让界面变成中文
  • 2026年软件测试面试趋势与自动化测试实战指南
  • Spring Boot Failed to determine driver class 根源解析
  • FreeRTOS消息队列内存机制与误用避坑指南
  • 5分钟本地跑通Superflows:Docker+Supabase开发环境搭建完整指南
  • Cactus泛基因组图谱实战:酵母图谱与HPRC人类图谱案例及panacus统计可视化
  • RocketMQ核心知识点与面试解析
  • 京东前端实习面试核心考点与优化策略
  • LobsterAI智能体开发与多模态面试模拟实战
  • JellyRefreshLayout:3个理由让这款果冻式下拉刷新组件比SwipeRefreshLayout更惊艳
  • 如何用GitHub免费托管你的播客:TheContext-Podcast的Raw RSS + Releases部署方案
  • RoMa快速入门:旋转矩阵、四元数、旋转向量与欧拉角互转全解教程
  • Kali散列密码破解实战:从哈希识别到GPU加速还原
  • SyncKit 服务器安全加固实战:JWT 认证、RBAC 权限与防 SQL 注入生产级防护指南
  • 大模型Agent面试核心:工具调用与决策逻辑解析