【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年了。

目录
相关文章
|
6月前
|
人工智能 缓存 运维
【智造】AI应用实战:6个agent搞定复杂指令和工具膨胀
本文介绍联调造数场景下的AI应用演进:从单Agent模式到多Agent协同的架构升级。针对复杂指令执行不准、响应慢等问题,通过意图识别、工具引擎、推理执行等多Agent分工协作,结合工程化手段提升准确性与效率,并分享了关键设计思路与实践心得。
992 20
【智造】AI应用实战:6个agent搞定复杂指令和工具膨胀
|
6月前
|
数据采集 人工智能 JSON
Prompt 工程实战:如何让 AI 生成高质量的 aiohttp 异步爬虫代码
Prompt 工程实战:如何让 AI 生成高质量的 aiohttp 异步爬虫代码
|
6月前
|
存储 人工智能 搜索推荐
LangGraph 记忆系统实战:反馈循环 + 动态 Prompt 让 AI 持续学习
本文介绍基于LangGraph构建的双层记忆系统,通过短期与长期记忆协同,实现AI代理的持续学习。短期记忆管理会话内上下文,长期记忆跨会话存储用户偏好与决策,结合人机协作反馈循环,动态更新提示词,使代理具备个性化响应与行为进化能力。
1197 10
LangGraph 记忆系统实战:反馈循环 + 动态 Prompt 让 AI 持续学习
|
6月前
|
人工智能 IDE 开发工具
从6人日到1人日:一次AI驱动的客户端需求开发实战
从6人日到1人日:一次AI驱动的客户端需求开发实战
从6人日到1人日:一次AI驱动的客户端需求开发实战
|
6月前
|
人工智能 自然语言处理 搜索推荐
营销智能体 AI 平台:技术人告别营销需求返工的实战手册
技术人常陷营销琐事:改文案、调接口、算数据。营销智能体AI平台并非“营销玩具”,而是为技术减负的利器。它将内容生成、投放优化、数据复盘自动化,无缝对接现有系统,提升效率2倍以上。落地需避三坑:勿贪全、勿求完美、紧扣业务需求。让技术专注核心,告别重复搬运。
222 0
|
6月前
|
人工智能 JSON 前端开发
实战教程:构建能交互网页的 AI 助手——基于 Playwright MCP 的完整项目
本项目构建一个智能网页操作助手,结合AI与Playwright实现自然语言驱动的网页自动化。支持登录、填表、数据提取等复杂操作,采用Node.js + React全栈架构,集成Anthropic Claude模型,打造高效、可扩展的自动化解决方案。
|
6月前
|
人工智能 供应链 安全
「AI大模型时代的CIO」云栖专场: AI实战者与落地破局者的坦白局
AI浪潮席卷每个企业,云栖大会CIO专场聚焦大模型落地难题。从阿里云到安克创新、顺丰等实战案例,揭示“Demo易、落地难”的根源,提出RIDE方法论与RaaS实践,破解组织、数据与技术协同困局,助力CIO冲破迷雾,探索AI转型的真痛点与真解法。
|
6月前
|
人工智能 自然语言处理 JavaScript
Playwright MCP在UI回归测试中的实战:构建AI自主测试智能体
Playwright MCP结合AI智能体,革新UI回归测试:通过自然语言驱动浏览器操作,降低脚本编写门槛,提升测试效率与覆盖范围。借助快照解析、智能定位与Jira等工具集成,实现从需求描述到自动化执行的闭环,推动测试迈向智能化、民主化新阶段。
|
7月前
|
人工智能 Java API
Java AI智能体实战:使用LangChain4j构建能使用工具的AI助手
随着AI技术的发展,AI智能体(Agent)能够通过使用工具来执行复杂任务,从而大幅扩展其能力边界。本文介绍如何在Java中使用LangChain4j框架构建一个能够使用外部工具的AI智能体。我们将通过一个具体示例——一个能获取天气信息和执行数学计算的AI助手,详细讲解如何定义工具、创建智能体并处理执行流程。本文包含完整的代码示例和架构说明,帮助Java开发者快速上手AI智能体的开发。
2665 8
|
7月前
|
设计模式 人工智能 API
AI智能体开发实战:17种核心架构模式详解与Python代码实现
本文系统解析17种智能体架构设计模式,涵盖多智能体协作、思维树、反思优化与工具调用等核心范式,结合LangChain与LangGraph实现代码工作流,并通过真实案例验证效果,助力构建高效AI系统。
844 7

热门文章

最新文章