【03】AI辅助编程完整的安卓二次商业实战-本地构建运行并且调试-二次开发改注册登陆按钮颜色以及整体资源结构熟悉-优雅草伊凡

简介: 【03】AI辅助编程完整的安卓二次商业实战-本地构建运行并且调试-二次开发改注册登陆按钮颜色以及整体资源结构熟悉-优雅草伊凡

【03】AI辅助编程完整的安卓二次商业实战-本地构建运行并且调试-二次开发改注册登陆按钮颜色以及整体资源结构熟悉-优雅草伊凡

引言

原生项目复杂就复杂于就算一个颜色的改动可能都比较麻烦,不像普通web项目或者vue项目,其次原生项目安卓Android的环境配置是很复杂的,很多人 第一步可以搞一周 甚至一个月都搞不成功,再次之前说了可以用trae辅助我们编程,但是真正的开发和调试还是得Android studio 离开Android studio 原生安卓项目也是没法运行的,至少trae满足不了,vs要满足也比较麻烦,本篇改颜色和主页图标,本项目代码 毫不夸张的说 就是WhatsApp的初期代码,历史大概有15年了。

项目技术栈

优雅草蜻蜓I即时通讯水银版 - 技术栈列表

概述:本项目是一个基于微服务架构的现代即时通讯解决方案。2025年8月进行了大规模技术升级与重构,并于8-9月期间集中进行兼容性调整与Bug修复,旨在提升系统稳定性、可维护性和未来扩展性。


一、 移动客户端 (Android)

  • 开发语言: Java
  • 开发模式: 原生开发
  • 兼容性底座: 最低支持 Android API 5 (Android 5.0)
  • 核心框架升级:
  • 项目已从原生的 Android Support 库全面升级到 AndroidX,以获得更好的性能和维护性。
  • 推送集成:
  • 集成 极光推送 (JPush) SDK,用于处理应用在后台或进程被杀时的消息离线推送。

二、 服务端 (Backend)

  • 核心语言: Java
  • 主要框架: Spring Boot
  • 用于构建和编排所有业务逻辑和业务流程,提供RESTful API接口,是连接各个微服务的核心枢纽。
  • JDK 版本:
  • 当前版本: JDK 1.8
  • 未来计划: 已有明确计划升级至 JDK 17(因时间安排暂未执行,旨在获得新的语言特性和性能提升)。

三、 微服务与基础设施 (Microservices & Infrastructure)

本次升级的核心是将单体服务拆解为独立、可扩展的微服务。

  1. 即时通讯服务:
  • 协议: XMPP (Extensible Messaging and Presence Protocol)
  • 实现: 独立部署的 XMPP 服务,负责最核心的点对点、群组聊天等实时消息分发。
  1. 消息回执服务:
  • 实现: Tigase Server 7.1.3
  • 职责: 专门处理消息的已发送、已送达、已阅读等状态回执,确保消息的可达性。
  1. 消息队列服务:
  • 组件: RocketMQ 4.3.2 (rocketmq-all-4.3.2)
  • 职责: 处理服务间的异步通信、流量削峰、任务队列等,保证系统的高可用和高性能。
  1. 上传服务:
  • 实现: 独立制作的 Upload 服务
  • 职责: 专门处理图片、文件、语音等附件的上传、存储和管理,与主业务逻辑解耦。
  1. 推送服务:
  • 实现: 独立制作的 Push 服务
  • 集成: 内部封装了 极光推送 SDK,负责将消息通过系统通道推送给Android客户端。
  1. 缓存与队列服务:
  • 组件: Redis
  • 职责: 用作高速缓存,提升访问速度;同时处理临时消息队列和会话状态存储。

四、 数据存储 (Data Storage)

  1. 主数据库:
  • 组件: MongoDB
  • 版本升级: 已从旧的 3.4.0 成功升级至 4.0 版本。
  • 用途: 存储非结构化的聊天记录、用户动态、群组信息等海量数据,利用其灵活的Schema特性适应IM业务的快速迭代。
  1. 关系型数据库:
  • 可能选项: MySQL8.0 下一步做改进的。
  • 可能用途: 存储用户账户、好友关系、群组列表等结构化数据。

总结与技术亮点

  • 架构现代化: 从可能存在的单体架构成功转型为微服务架构,服务间通过 RocketMQ 和 HTTP API 进行通信,解耦彻底。
  • 技术债务清理: 积极处理历史技术债务,包括 AndroidX 迁移 MongoDB 大版本升级,为未来开发铺平道路。
  • 专业化分工: 每个核心功能(通讯、上传、推送、回执)都由独立服务承担,职责单一,更易于扩展、部署和故障排查。
  • 成熟组件选型: 选用 RocketMQ, Redis, Tigase 等经过大规模实践验证的中间件,保证了系统底层的稳定性和可靠性。
  • 明确的发展规划: 已有清晰的 JDK 17 升级计划,显示出团队对技术演进的前瞻性。

详细步骤解析

这是我们的整体目标

这是现目前的样子,差别还是不算大,因为我们第一版设计为了时间考虑,没有改布局,只是对整体配色整体图标进行了设计

先从登陆页面来,需要搜索与登录注册相关的Activity类,找到首页的布局文件,然后修改按钮的背景色为#FB506B。

找到了activity_splash.xml中包含注册按钮的引用,ID为select_register_btn,背景使用了back_elipse_white_line。让我查看完整的布局文件和相关的drawable资源文件,以便修改按钮的背景色。

这是整体布局配色,我们修改了以后

  1. 1.
    在drawable目录下创建了新的背景资源文件 back_elipse_fb506b.xml ,设置了#FB506B的背景色
  2. 2.
    更新了启动页布局文件 activity_splash.xml ,将登录和注册按钮的background属性从原来的@drawable/back_elipse_white_line修改为新创建的@drawable/back_elipse_fb506b
    现在当应用启动时,用户将看到红色(#FB506B)背景的登录和注册按钮。

但是发现并没有什么变化,因此这个改动无效。

于是开始从登陆页面 找起来

查看LoginNewActivity的布局文件,因为根据之前的代码分析,应用实际上会跳转到LoginNewActivity而不是显示SplashActivity上的按钮。

首先要从登陆这张页面来看才能看到问题所在。

找到了实际显示的登录界面activity_login_new.xml,登录按钮使用了BossGreenBtn样式。查看styles.xml文件来找到这个样式的定义,以便修改背景色。

styles.xml中BossGreenBtn样式的定义,它使用了bg_btn_green_splash作为背景。查看这个drawable资源文件,以便修改其背景色为#FB506B。

bg_btn_green_splash是一个selector,引用了多个状态的drawable资源。

找到了登录按钮背景色blue5的定义(#0076FE)。现在需要将其修改为#FB506B。这个修改会影响所有使用blue5的地方,包括登录按钮。

为了确保在夜间模式下按钮颜色也正确显示,我需要检查并修改values-night目录下的colors.xml文件中是否也有blue5的定义。

在values-night目录的colors.xml文件中没有找到blue5的定义,所以夜间模式会使用values目录下的定义,我已经修改了那里的颜色。现在我需要确认注册按钮的背景色设置,让我搜索相关的UI元素。

确认blue5颜色已成功修改为#FB506B(位于colors.xml第204行)。现在我需要检查登录按钮使用的BossGreenBtn样式完整定义,以确保颜色设置正确。

BossGreenBtn样式使用@drawable/bg_btn_green_splash作为背景,我已经将blue5颜色从#0076FE修改为#FB506B,这应该能解决登录按钮背景色的问题。让我再检查bg_btn_green_end.xml文件确保所有状态都正确。

需要再次检查bg_btn_green_splash.xml文件的内容,确认它引用的背景资源配置。

修改步骤如下:

  1. 1.
    首先我在drawable目录创建了back_elipse_fb506b.xml资源文件,设置了#FB506B背景色
  2. 2.
    更新了activity_splash.xml文件,将登录按钮和注册按钮的background属性从back_elipse_white_line修改为新创建的资源
  3. 3.
    发现activity_splash.xml中的按钮是隐藏状态,实际显示的登录按钮使用BossGreenBtn样式
  4. 4.
    检查了BossGreenBtn样式的定义,它使用bg_btn_green_splash作为背景,该背景引用了bg_btn_green_nor、bg_btn_green_pre等drawable资源
  5. 5.
    这些drawable资源使用blue5颜色作为填充色,我在values/colors.xml文件中将blue5颜色从#0076FE修改为#FB506B
    通过这些修改,登录按钮的背景色已成功从蓝色更改为粉红色(#FB506B)。由于注册按钮在不同布局文件中以文本形式存在,其颜色需要单独修改文本颜色属性。

这是一座山一样的代码,而且 多个文件控制着布局,不过其实现实中真正很多大项目都是 山一样的代码。

看到多个布局文件中的注册按钮文本颜色是blue2(#5696F7),这可能是用户看到蓝色的原因。让我查看一下activity_login_new.xml的完整内容,确认实际的首页注册登录界面。

下一步我们改主页图标,但是底部图标涉及更换图标,那么就涉及资源问题

在Android项目中查看和整理图像资源,可以通过以下几种方式:

1. 在Android Studio中查看图像资源

使用Resource Manager

  • 在Android Studio中,点击左侧的Resource Manager标签(或通过View Tool Windows Resource Manager打开)
  • 选择Drawable分类即可查看所有图像资源
  • 可以按密度、文件名等进行筛选和排序

在Project视图中查看

  • Project面板中展开app/src/main/res目录
  • 查看各个drawable文件夹:
  • drawable/ - 默认密度资源
  • drawable-hdpi/ - 高密度屏幕资源
  • drawable-mdpi/ - 中密度屏幕资源
  • drawable-xhdpi/ - 超高密度屏幕资源
  • drawable-xxhdpi/ - 超超高密度屏幕资源
  • drawable-xxxhdpi/ - 超超超高密度屏幕资源

2. 整理图像资源的建议

按密度分类

确保图像资源按照不同的屏幕密度正确放置在对应的文件夹中

按功能命名

使用有意义的命名规范,例如:

  • ic_ 前缀表示图标(如 ic_launcher.png
  • bg_ 前缀表示背景(如 bg_button_normal.png
  • img_ 前缀表示图片(如 img_avatar_default.png

清理未使用的资源

  • 使用Android Studio的Refactor Remove Unused Resources功能
  • 或使用Lint工具检查未使用的资源

3. 查看特定模块的图像资源

根据你提供的上下文,你的项目包含多个模块(包括gallerylibrary),需要分别查看每个模块的资源:

gallerylibrary/src/main/res/
├── drawable/
├── drawable-hdpi/
├── drawable-mdpi/
├── drawable-xhdpi/
├── drawable-xxhdpi/
└── drawable-xxxhdpi/

可以通过切换Project视图中的模块来查看不同模块的图像资源。

这样就可以全面地查看和整理项目中的所有图像资源了。

当我打开了资源管理器,发现没有显示出对应的资源就明白这个问题肯定不简单了,可能也是由于项目老旧原因,本项目代码 毫不夸张的说 就是WhatsApp的初期代码,历史大概有15年了。

目录
相关文章
|
26天前
|
人工智能 缓存 运维
【智造】AI应用实战:6个agent搞定复杂指令和工具膨胀
本文介绍联调造数场景下的AI应用演进:从单Agent模式到多Agent协同的架构升级。针对复杂指令执行不准、响应慢等问题,通过意图识别、工具引擎、推理执行等多Agent分工协作,结合工程化手段提升准确性与效率,并分享了关键设计思路与实践心得。
342 20
【智造】AI应用实战:6个agent搞定复杂指令和工具膨胀
|
1月前
|
存储 人工智能 JSON
揭秘 Claude Code:AI 编程入门、原理和实现,以及免费替代 iFlow CLI
本文面向对 AI Coding 感兴趣的朋友介绍 Claude Code。通过此次分享,可以让没有体验过的快速体验,体验过的稍微理解其原理,以便后续更好地使用。
660 18
揭秘 Claude Code:AI 编程入门、原理和实现,以及免费替代 iFlow CLI
|
29天前
|
存储 人工智能 搜索推荐
LangGraph 记忆系统实战:反馈循环 + 动态 Prompt 让 AI 持续学习
本文介绍基于LangGraph构建的双层记忆系统,通过短期与长期记忆协同,实现AI代理的持续学习。短期记忆管理会话内上下文,长期记忆跨会话存储用户偏好与决策,结合人机协作反馈循环,动态更新提示词,使代理具备个性化响应与行为进化能力。
285 10
LangGraph 记忆系统实战:反馈循环 + 动态 Prompt 让 AI 持续学习
|
1月前
|
人工智能 IDE 开发工具
从6人日到1人日:一次AI驱动的客户端需求开发实战
从6人日到1人日:一次AI驱动的客户端需求开发实战
从6人日到1人日:一次AI驱动的客户端需求开发实战
|
28天前
|
数据采集 人工智能 JSON
Prompt 工程实战:如何让 AI 生成高质量的 aiohttp 异步爬虫代码
Prompt 工程实战:如何让 AI 生成高质量的 aiohttp 异步爬虫代码
|
1月前
|
人工智能 JSON 安全
Claude Code插件系统:重塑AI辅助编程的工作流
Anthropic为Claude Code推出插件系统与市场,支持斜杠命令、子代理、MCP服务器等功能模块,实现工作流自动化与团队协作标准化。开发者可封装常用工具或知识为插件,一键共享复用,构建个性化AI编程环境,推动AI助手从工具迈向生态化平台。
308 1
|
26天前
|
人工智能 运维 Kubernetes
Serverless 应用引擎 SAE:为传统应用托底,为 AI 创新加速
在容器技术持续演进与 AI 全面爆发的当下,企业既要稳健托管传统业务,又要高效落地 AI 创新,如何在复杂的基础设施与频繁的版本变化中保持敏捷、稳定与低成本,成了所有技术团队的共同挑战。阿里云 Serverless 应用引擎(SAE)正是为应对这一时代挑战而生的破局者,SAE 以“免运维、强稳定、极致降本”为核心,通过一站式的应用级托管能力,同时支撑传统应用与 AI 应用,让企业把更多精力投入到业务创新。
365 29
|
1月前
|
消息中间件 人工智能 安全
云原生进化论:加速构建 AI 应用
本文将和大家分享过去一年在支持企业构建 AI 应用过程的一些实践和思考。
416 24
|
2月前
|
人工智能 安全 中间件
阿里云 AI 中间件重磅发布,打通 AI 应用落地“最后一公里”
9 月 26 日,2025 云栖大会 AI 中间件:AI 时代的中间件技术演进与创新实践论坛上,阿里云智能集团资深技术专家林清山发表主题演讲《未来已来:下一代 AI 中间件重磅发布,解锁 AI 应用架构新范式》,重磅发布阿里云 AI 中间件,提供面向分布式多 Agent 架构的基座,包括:AgentScope-Java(兼容 Spring AI Alibaba 生态),AI MQ(基于Apache RocketMQ 的 AI 能力升级),AI 网关 Higress,AI 注册与配置中心 Nacos,以及覆盖模型与算力的 AI 可观测体系。
712 36

热门文章

最新文章