work-record
2025年6月27日
- 黑屏bug,mesh加载逻辑优化--->end
- 安卓浅色模式后排吹面风不对--->居然好了
- 绿净切换完前后排之后会打开--->end
- 国内HT ktx优化--->我发现都一个德行,在最后一下会顿一下
周报:
- 开发MC车型并出包
- 修复MR车型bug
- 修复国内空调bug并出包
出aar的包
2025年6月26日
- MC出包
- 看代码学习
- 出现一个bug导出后 后排风 没加载到
13点48分
-
吹风模式
-
发现自动调节风向,输入不同时间,速度不一样
2025年6月25日
- 开发MC
13点37分
- CI---->不搞
- 风量调节问题 --->end
2025年6月24日
- 开发MC
黑屏时间长--->end
14点28分
- 修复风量调节的逻辑
- 增加UI滑块的材质切换
2025年6月23日 周一
- 解决bug,国内和MR--end
- 开发MC
14点48分
- 修改MR2bug
2025年6月20日
- 合入国内bug----end
- MR出包
- 把所有的项目都搬到G盘
- HT加载慢
- MR F:\imgui\imgui_air_condition\Export\0620MR\launcher\build\outputs\apk\debug 构思
13点47分
- HT加载慢---->初步定位资源加载慢
2025年6月19日
-
合入国内bug
-
develop-ht茂南的修改
-
看看CI出包的
-
更新jira
-
海外HT方向调节问题
-
MR更新引擎引入新问题--->end
2025年6月18日
- 解决MRbug--->end 就是风口材质用错了
- 国内空调还有一个问题,UI缩放--->end 用了新方案,上下黑色,只渲染1280x720
- QZ量产,从根上改---->end
14点51分
- CI出包
- 海外回退车体图更新,出包
2025年6月17日
- 看MR的bug,不是raycast,就是raycast
- 学习回调函数
- 修复国内切换中英文UI缩放
2025年6月16日 一
- MR出包--->完成,但是还有bug,raycast
- 学习回调函数
- 安装clang-format---->end
- QZ5.0量产--->end
- 海外HT更换启动图----要改的挺多---->中控副驾启动图都要换除了调了相机还调整了车体图---->待验证
- 将各个单分支的修改合入合包的主干,因为现在主干是合包---->等通知吧,尤其develop太乱了
2025年6月13日
- 出5.0qz主干包---更换jar包
- MR手动调整风向
- 海外HT右舵副驾漏了一个风口材质---->下周四
- HT三厢扶手屏分辨率问题
- qz5.1即develop-qz变成量产了
2025年6月12日
- MR的bug要不要立即修
- 改造RS架构
- 前后排切换更换ktx--->end
13点42分
-
rs导出
server
resource
sdk client
影响启动方式不一样 -
学习回调函数
2025年6月11日
- MR出包---->有崩溃
- sendmessage写好了,出包的时候再换
- QZ5.0量产新需求
吹窗的效果开关逻辑,仅跟随主驾控制。
QZ 这个实车上 是不会发副驾吹窗ID 的。
动效侧 识别到主驾侧的吹窗ID 通知时,同步关联副驾吹窗的动效,开关,冷热风
2025年6月10日
- RS架构在MR车型---->影响启动方式
- 前后排切换更换ktx,
13点50分
- sendmessage
- MR出包
2025年6月9日 周一
- 空调bug,包括美术的ht修改--->BYD2445,推至develop-ht
前后排切换更换ktx,
分辨率不对导致的UI缩放 - MR的测试按钮---end
- RS架构在MR车型---->影响启动方式
- QZ的不对,加接口啥的
QZ空实现接口,要换jar包--->end
降低SDK版本
UI位置不对
qz5.0 主干 量产 ----->5.0单包出了量产包验证
- 更换jar包空实现onStart(),onStop();2. 调整minSdkVersion 为25
qz5.1 一个分支出合包
对应的jar包已更换完,空实现了start和stop
等待确认sdk版本是否降级
修改分辨率:
adb root
adb shell wm size 1920x1080
修改位置:com/gritworld/gritmobile/client/GritEngine.java com/gritworld/gritmobile/activity/GritPlayerActivity.java文件
2025年6月6日
- 2462 切换中英文后空调UI会进行缩放---->看中英文切换干了什么,可能是改变了窗口大小
- 2461 频繁点击温度调节,即启动销毁,导致黑屏
- 2440 0x9B空调开启时偶现不展示车体图---->类似crash
- 什么卡顿,改造序列帧为ktx
- BYD-2445ht改完放在ht分支后面合入
16点29分
- 修改海外crash 内存分配不足bug---->修改消息队列增加最大长度限制;修改splitString函数中字符串类型为string_view
file://docs.gritworld.cn/Company/DevelopmentSH/gm-cicd/byd_airconditioner/19465_develop-oversea/
qz变成量产了 没
杨宇的0514的那个不能用了,引擎中没那个方法了 why
周报:
- QZ单包与合包出包
- 解决海外sf的crash问题
- 国内HT_SZ出主干包
- 定位并解决byd反馈的0508量产包的多个bug
2025年6月5日
- 海外SFbug 不一定解决,有分析
- HT_SZ出包
- QZ出包
滑块问题未彻底解决,SZ的和HT三厢扶手屏有冲突,后续合入时再调整
14点14分
- 确认调节风口为什么没有立即下发角度
- 海外crash为什么会发那么多的消息
3D 架构需要采用 render service 架构,至少需要同时支持 4 个 3D 动效场景同时显示。 这个是啥,问建超
2025年6月4日
- 海外SFbug 不一定解决,有分析
- 国内HT_SZ出量产包
2407 sfcrash 优先在看--->改了一部分感觉不完美
2456 sfcrash
2086 HT三厢前后排卡顿----之前茂南解决了一次没和
2218 中英文切换 ---->老问题,一直没解决,
2232 中英文切换 ---->老问题,一直没解决,
2444 已有结论 ---- 双击打开出风口不顺畅
2443 D3更换车体图 ----美术配合
2441 SZA8空调设置为“避人吹”手动调节电动出风口时,“避人吹”开关需要置灰-----有结论
2440 0x9B空调开启时偶现不展示车体图---->类似crash
2050 SZA8风口方向上下滑块不能滑动到顶部和底部---->end 横竖滑块不一样长,不能仅用水平滑块长度
2462 切换中英文后空调UI会进行缩放---->看中英文切换干了什么,可能是改变了窗口大小 解压有密码
- QZ出包
2025年6月3日
- QZ单包---->有方案了
- 海外SFbug
- ht_sz出量产--->end
SZ分支 16 19 20 21 27 28
HT分支 21 30
ht和ht_sz 差 45c2da9547be768e92c8e83e0964ded673fb2d3e
sz和ht_sz 差 587b50073005566a59bddb2c37f5d69fe86f7635
2025年6月1日
- QT版本空调Bug
- QZ单包需求
- MR车型空调开发
海外主干即量产
2025年5月31日
Bug
- 2407 海外SF 128 crash闪退一次
- 2040 0x9B空调开启时偶现不展示车体图
- 2041 SZA8空调设置为“避人吹”手动调节电动出风口时,“避人吹”开关需要置灰
- 2047 D4风口联动开启,动效先关后开---->之前看log定位到是,风口正常打开但是同步了实车信号
- 2050 SZA8风口方向上下滑块不能滑动到顶部和底部
2025年5月30日
- imgui空调出包
- 海外出量产包----主干变为量产包了
- QZ出压测包
周报:
- QZ_SQ合包
- 海外空调包
- imgui空调出包
2025年5月29日
- 烦死了imgui
2025年5月28日
- 海外出包
19184
2025年5月27日
- 0408 HT25两厢-->已改,等后续副驾修改--->end---->SZ副驾驶滑块UI
- develop-oversea 海外sf右舵,19039---->已出---->海外sz不对在改--->拆分了副驾----->海外SQ相机位置修改,SZ滑块UI----->出包就行
- QZ-SQ合包 19106
Ht25 682d9e2dba7dbf21ddd1329e7e9f1b9eaf44a10e这个位置回退,不要美术的东西
本地QZ合包 F:\project\bydDomestic\Export\QZ\launcher\build\outputs\apk\debug\AirConditioner_fps30_v1.0.0-250527_1851_debug.apk 给测试
2025年5月26日 一
- QZ合包--->已出
- 0408 HT25两厢-->已改,等后续副驾修改--->end
- develop-oversea 海外sf右舵,19039---->已出---->海外sz不对在改--->拆分了副驾
我能做的已经ok,导出安卓工程,可能Java层还要写
将风口材质手动加入
把develop-sz的修改没合入,居然也没被发现!!!
2025年5月25日
3D旋转的本质:如果直接旋转 mWindComp,旋转中心可能不是你想要的点,容易出现模型“绕错轴”或“漂移”。
通过包一层空节点,把旋转中心“搬”到你想要的位置,所有旋转都在 mRotateComp 上做,mWindComp 只负责显示。
这样拖拽时,只需修改 mRotateComp 的旋转属性(如欧拉角、四元数),风口模型就能正确地围绕自身中心点旋转,实现风向的3D调整。
2025年5月23日
-
周报
-
完成QZ车型并出包
-
定位1453空调bug
-
更新HT三厢车体图以及解决后排屏出风口点不动的bug,SZ风效等问题,出包ht_sz合包
-
满足BYD提出的新需求,点击空白区域发送一个信号给上层,来控制UI
-
完成空调的接口的文档,测试端需要
-
完成海外SF右舵开发,并出包
-
imgui引擎上开发MR车型
-
国内HT两厢系列的初始出风叠加了,可能是X轴数据弄反了,三厢是好的@杨凯(杨凯)---问题
S:\DevelopmentSH\gm-cicd\DailyBuild\develop\60091\GWEDITOR\release 引擎位置
S:\DevelopmentSH\gm-cicd\DailyBuild\develop\59682\GWEDITOR\release 可以的
其他的赶5月底(MR2、Qz合包、海外SF右舵、Ht两厢)
QZ合包可以直接出,除雾风材质不受影响
2025年5月22日
- 将sz和ht分支的合入develop 有冲突---end
更新完启动图待出包
qz/sq合包 file://docs.gritworld.cn/Company/DevelopmentSH/gm-cicd/byd_airconditioner/18948_develop-qz/
qz单包 file://docs.gritworld.cn/Company/DevelopmentSH/gm-cicd/byd_airconditioner/18949_develop-qz/
分辨率 render view
0408包 18937 file://docs.gritworld.cn/Company/DevelopmentSH/gm-cicd/byd_airconditioner/18937_develop_ht_sz_0408/
你这边在空调模块的工作清单有这些:我按优先级顺序写的
1、MR2(接口与引擎侧对接)--节点528
2、Qz配合出包(目前应该就是debug阶段了)--节点528
3、BYD提出的屏幕点击逻辑----这个是不是又要出包给他们HT&SZ?
4、接口文档-----这个是内部测试要用的
5、海外SF右舵--节点603
2025年5月21日
将0408启动图更新到develop
然后将sz和ht分支的合入develop 有冲突
- 先将0408分支的问题解决----完成HT三厢车体图更新出包,解决后排屏点不动的bug
2025年5月20日
- 写一下API文档
- 继续mr车型开发
- 后排屏bug--->end
d673df01afc9687f0cc102994d983e01a2da8873 这个删多了
明天
将0408启动图更新到develop
然后将sz和ht分支的合入develop 有冲突
2025年5月19日
- qz出包--->end
- 1453空调bug
- imgui--->16点02分 我看这个 先看双击出风口以及拖拽调节风向的逻辑 正好这里还没有实现
13点30分
- 新增一个接口 传信号
- 修改sz--->改完了,存在develop中了,有好多不需要pick 由于develop启动图落后同步
2025年5月16日
- HT_SZ出包--->end
- 1453空调bug
- qz车型
周报
- 分析1439空调bug_sz卡滞问题,已经将分析意见反馈给BYD待其复测
- 开发QZH新车型
- 更新HT三厢车体图并出包
- 开发MR车型
20250519今日【主干包】更新:
【QZH】新增QZH车型
file://docs.gritworld.cn/Company/DevelopmentSH/gm-cicd/byd_airconditioner/18758_develop-qz/
2025年5月15日
- 还是新空调
14点19分
- 理一下引擎包
3. 杨宇修复回弹---wqx 主干 没要
2. 移除openssl---Release_BYD_2022 主干- 书山修复黑屏---wqx 不要上量产,其实上了
出主干要手动更新引擎路径 \docs.sh.gritworld.local\Company\DevelopmentSH\gm-cicd\Builds\Release\BYD\2022\60106\WIN\RELEASE
- 书山修复黑屏---wqx 不要上量产,其实上了
2025年5月14日
- 国内HT三厢更新
- 空调修复引擎bug出包,问一下要不要换CI的引擎--->先不出
15点13分
- HT三厢车体图更新完毕
20250514今日【主干包】更新:
【SZ】修复海外SZ副驾驶屏幕左右黑边问题:
【HT】HT三厢更新车体图 10系 中控屏 副驾屏 扶手屏
30系 中控屏 副驾屏 左右头枕屏 扶手屏
优化部分出风口贴图大小
file://docs.gritworld.cn/Company/DevelopmentSH/gm-cicd/byd_airconditioner/18626_develop_ht_sz_0408/
//call before grit player construct
private void setGritplayerExternalpath()
{
File internalDir = getFilesDir();
Log.i("GritPlayer", "internal writeable path: " + internalDir.getAbsolutePath());
File externalDir = getExternalFilesDir(null);
Log.i("GritPlayer", "external writeable path: " + externalDir.getAbsolutePath());
GritPlayer.setExternalReadPath(internalDir.getAbsolutePath());
}
2025年5月13日
- sz卡滞问题--->复测
- 新空调烦
- 将项目push到我的gitlab--->失败放弃
16点11分
- QZH新车型
2025年5月12日
- 新空调烦
13点35分
- sz卡滞问题
- 将图片加载和引擎启动放在一个容器,让图片在主线程不依赖引擎直接加载--->后面
2025年5月10日 周六
- 修改启动图逻辑,使其在引擎之前,加快时间
---->按要求搞定但是效果不明显,只快了十几毫秒
2025年5月9日
- 研究一下upslider那里的作用
- 把引擎和项目打包发到网盘,周末研究
- 周报
关于滑块的修改出问题了再改 UserModule\source\private\OutletBeh.cpp:510
bool IsRcs = atoi(BydSingleton::Instance()->GetDeviceData(DEVICE_TYPE).c_str()) == AC_DEVICE_RCS_ID;
if ((mOutletId == MIDDLE_LS_FACE_MASK || mOutletId == MIDDLE_RS_FACE_MASK || mOutletId == MIDDLE_METER_LS_FACE_MASK || mOutletId == MIDDLE_METER_RS_FACE_MASK) && IsRcs)
{
total -= 1.5;
}
- 增加xml文件和activity文件,方便出压测包
- 修改启动图逻辑,使其在引擎之前--->未完成
show time!! use time 显示时间
周报:
- 完成在国内HT扶手屏放大后加遮罩,调整滑块UI长度后,出量产包
- 增加xml文件和activity文件,方便出压测包--->待验证
- 修改启动图逻辑,使其在引擎之前--->未完成
2025年5月8日
- 还是按层次写,始终都要用到
14点16分
- 搞完ht扶手屏加遮罩以及调整滑块--出量产包ht_250508
- 1430卡的bug
- 等出问题了改一下spalsh那里的逻辑,有点乱
- 国内新增qz车型,类似sq,一个中控前后排
2025年5月7日 周三
-
在新引擎上实现空调--->先在一层上实现功能
-
加阴影遮罩
看看遮罩Mask---->18点51分,大概找见遮罩的位置了
UserModule\source\private\CarInteriorBeh.cpp#694 这里不可以渐变,
--->这里不对,要跟随相机位置变化,绑在时间轴上,UserModule\source\private\CarInteriorBeh.cpp:1022 -
git reflog show --date=local --all | grep cora/20250507_HTRCS 查看分支源头
2025年4月29日
- 用新引擎出一个apk给修竹测
- imgui引擎的空调,只有一个场景,加一些粒子开关,风口开关的功能
13点42分
- 修复右舵出风口角度---->end
都怪用了cherry-pick 全搞乱了,byd乱测
修复右舵出风口角度;
修改右舵滑块位置;
补充当未指定车型时选取中控和附加启动图的逻辑(健壮性);
删除非11D和14B车型时,mLeftRudder必为true的逻辑,由于未考虑非法车型ID; - 弄云桌面
2025年4月28日
- 海外HT修复序列帧车体图,以及副驾驶按钮问题出包--->还是车体图有问题
- 先弄云桌面,再看新空调,差距还多的啊
13点28分
- 新引擎的空调--->先不管场景加载了,先看--->张嘴问,不用切其他场景只需要实现一个场景的一些功能即可
- 将引擎的修改合入到htsz sq的拆包上--->end 要用修复后的引擎,不过要等加完日志
2025年4月27日
- 看看黑屏问题,新修改的 --->end
file://docs.gritworld.cn/Company/DevelopmentSH/gm-cicd/byd_airconditioner/18107_develop/ 黑屏复现的
file://docs.gritworld.cn/Company/DevelopmentSH/gm-cicd/byd_airconditioner/18110_develop/ 修复后的包 - 新引擎开发空调
14点50分
- 在单独分支上开发,不要cherry-pick到主干分支,而是merge过去!!!!!!!!---->只有量产的时候再cherry-pick 剩下的用merge,记住
- 海外HT右舵,剩下的都是美术的问题
- 修改国内sz副驾驶黑边,到拆包sz_ht_0408 以及develop_sz
- registAcCallback changeModeSkin onMultiWindowModeChanged updateConfigurationChanged//都是干嘛的 好像用到了,是用来发送消息的
单例模式和工厂模式
设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路,他不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳定性以及安全性的解决方案。
后面国内空调的修改都在拆包后的版本中修改
2025年4月26日
- 本地出aar流程,aar,apk脚本作用
- 看一下显卡是什么版本,怎么被使用的
- CI出包流程
- 有三个ac_classes.jar文件需要替换 apk_testaar_base\ac_classes.jar apk_base\ac_classes.jar aar_base\ac_classes.jar
明早记得发:
250425今日 【主干包】更新:
HT右舵需求制作
SQ的吹风形态优化
HT初始出风角度调整
HT吹风口动销优化
收到极限角度有效角度范围外,风口角度动效保持不变
file://docs.gritworld.cn/Company/DevelopmentSH/gm-cicd/byd_airconditioner/18091_develop-oversea/
- 新引擎的空调
4. aar学习
AAR(Android Archive)包是 Android 开发中用于封装和分发可重用组件的一种文件格式。它类似于 Java 中的 JAR 包,但专为 Android 设计,支持包含代码、资源、清单文件及其他 Android 特有的配置。
这个批处理文件 prepare_AC_AAR.bat
主要用于自动化配置和构建 Android 库(AAR),以下是其详细分析:
作用概述
- 配置 Android 工程路径:通过用户输入或默认路径设置工程目录,确保路径有效性。
- 修改 SDK 和 CMake 路径:将引擎路径转换为适合
local.properties
的格式,写入配置文件。 - 清理与替换文件:
- 删除旧代码、资源文件和冗余目录。
- 拷贝新的 Java 代码、依赖库(JAR)、构建脚本(Gradle)和清单文件(AndroidManifest.xml)。
- 执行 Gradle 构建:最终调用
assembleRelease
生成 AAR 包。
详细步骤解析
1. 设置基础路径
set basePath=..\aar_base
- 定义
basePath
变量,指向存放模板文件的目录..\aar_base
(如 Java 代码、Gradle 脚本等)。
2. 获取 Android 工程路径
set /p AndroidPath=<./AndroidPath
- 从当前目录的
AndroidPath
文件中读取预设的工程路径。 - 验证路径有效性:
if NOT exist %AndroidPath%/local.properties ( set /p AndroidPath=请输入引擎路径 [默认 %AndroidPath%]: || set AndroidPath=%AndroidPath% )
- 如果
local.properties
不存在,提示用户输入路径(默认使用历史值)。 - 最终将路径保存到
AndroidPath
文件中,以便复用。
- 如果
3. 配置 SDK 和 CMake 路径
set /p EnginePath=<./EnginePath
set converted_path=%EnginePath:\=\\% ! 转义反斜杠为双反斜杠
set converted_path=%converted_path::=\:% ! 替换冒号为转义格式(适配属性文件)
echo sdk.dir=%converted_path%\\editor_data\\export\\GWSource\\android\\Tools\\Sdk >%basePath%\local.properties
echo cmake.dir=%converted_path%\\tools\\cmake >>%basePath%\local.properties
- 从
EnginePath
文件读取引擎路径,处理后写入local.properties
。 - 路径转换逻辑:
\
→\\
:避免 Windows 路径中的转义问题。:
→\:
:可能用于适配 Unix 风格路径(如 CMake 配置)。
4. 文件清理与替换
4.1 删除旧代码和资源
rd /s/q %AndroidPath%\launcher\src\main\java ! 递归删除 Java 目录
rd /s/q %AndroidPath%\launcher\libs ! 删除依赖库
del /s/q %AndroidPath%\gritLibrary\src\main\java\com\gritworld\gritmobile\activity\*.* ! 删除 Activity 代码
/s/q
表示静默递归删除,无确认提示。
4.2 拷贝新文件
xcopy %basePath%\java %AndroidPath%\gritLibrary\src\main\java /Y /S /I ! 拷贝 Java 代码
xcopy %basePath%\ac_classes.jar %AndroidPath%\gritLibrary\libs /Y ! 拷贝 JAR 依赖
xcopy %basePath%\AndroidManifest.xml %AndroidPath%\gritLibrary\src\main /Y ! 替换清单文件
/Y
覆盖现有文件,/S
包含子目录,/I
假定目标为目录。
4.3 替换构建脚本
xcopy %basePath%\build.gradle %AndroidPath%\gritLibrary /Y ! 库模块构建脚本
xcopy %basePath%\launcher-build.gradle %AndroidPath%\launcher\build.gradle /Y ! 启动模块脚本
xcopy %basePath%\project_build.gradle %AndroidPath%\build.gradle /Y ! 项目级脚本
4.4 清理资源文件
del /s/q %AndroidPath%\gritLibrary\src\main\res\values\*.* ! 删除 values 资源
del /s/q %AndroidPath%\gritLibrary\src\main\assets\Data\GFXResource\textures\*.* ! 删除纹理
rmdir /s/q %AndroidPath%\gritLibrary\src\main\assets\Data\plugins ! 删除插件目录
- 删除无用资源以减小 AAR 包体积。
5. 执行 Gradle 构建
cd %AndroidPath%
.\gradlew assembleRelease --stacktrace
pause
if NOT ["%errorlevel%"]==["0"] pause
- 切换到工程目录,执行
assembleRelease
生成 Release 版 AAR。 --stacktrace
用于输出详细错误信息。- 错误处理缺陷:
if NOT ["%errorlevel%"]==["0"] pause
语法不标准,应改为if %errorlevel% neq 0 pause
。
潜在风险与改进建议
- 路径空格问题:未用引号包裹路径,可能导致含空格的路径解析失败。
- 错误处理不足:Gradle 构建失败后仅简单暂停,可增加回滚或日志记录。
- 资源删除风险:递归删除命令(如
rd /s/q
)可能误删重要文件,建议添加路径校验。 - 路径转义逻辑:替换
:
为\:
的用途需确认,可能在某些场景导致路径错误。
总结
该脚本通过自动化配置、文件替换和资源清理,简化了 AAR 的构建流程,适用于需要频繁打包的场景。其核心逻辑清晰,但需注意路径处理和删除操作的安全性,建议在关键步骤添加日志和错误恢复机制。
5. CI学习
CI/CD 自动化执行流程解读
从日志中可以看出,整个 CI/CD 流程分为以下几个阶段:
- 环境准备
执行器类型: 使用 shell 执行器(具体为 PowerShell)。
操作系统: Windows(运行在 GWSHAQAEDA004 节点)。
编码设置: 设置 UTF-8 编码(chcp 65001),避免中文字符乱码。
- 代码获取
检出代码: 从 Git 仓库拉取 develop-oversea 分支的最新提交 5bcfa3f5。
清理文件: 删除临时目录(如 Export/、Log/)和锁定文件(index.lock),确保构建环境干净。
- 执行构建脚本 (tools/deploy.py)
脚本 deploy.py 的步骤如下:
a. 获取最新编辑器
从网络路径 \docs.gritworld.cn\Company\DevelopmentSH\gm-cicd\BYD_Editor\Airconditioner\release2022new.zip 下载或更新编辑器。
设置编辑器路径到环境变量 GW_EDITOR_PATH。
b. 导出项目
启动编辑器(GEditor.exe),通过自动化操作打开项目并执行导出:
修改项目配置(如设置 scriptbackend 为 cpp)。
打开部署窗口并设置参数(如最大化窗口)。
等待项目导出到 Export 目录。
c. 后处理
修改 Android 路径和引擎路径。
删除无用文件(如 medias 目录)。
修改版本号(将版本名设置为 V0425 和 0425Main)。
d. 构建 AAR 和 APK
使用 Gradle 构建 AAR(成功)。
构建 APK 失败:在 :launcher:compileReleaseJavaWithJavac 任务中因 RIGHT_DRIVER_SEAT 符号缺失导致编译失败。
- 错误处理与清理
日志提示 BUILD FAILED in 13s,随后执行 after_script 清理临时文件。
最终作业状态为失败(exit status 1)。
- git fetch --all 拉取远程仓库,更新--->常应对
fatal: bad object
问题
2025年4月25日
- 周报
- 差启动图和初始角度--->end
周报:
- 完成新增海外HT的右舵,出包进行测试
- 配合解决SZ空调黑屏问题
- 修改海外SZ/HT的出风口初始角度
- 修改调整风口角度逻辑
调整海外HT副驾驶左右按钮逻辑
16点26分
- CI出包,识别不到jar包
调整SZ的初始风口角度
2025年4月24日
- 继续完成右舵
- 改初始角度
- 改调节角度逻辑--->end
13点28分
- 改初始角度--->有难度--->解决 SetAutoAngleX()这个就是设置角度的所谓接受角度,调角度,不要被这个auto迷惑
- 如何对按钮进行控制的--point
2025年4月23日
- 昨天肝到了一点多,还没提加班
- 台式远程控制笔记本,建立局域网共享文件夹
- 为啥我本地出包不行--->没有修改release2022\DeviceAssets\里面的几个info文件
13点57分
- 一定问一下在哪个分支上出包,出什么包
- 前后排切换卡顿
- HT出风口初始角度--->美术
- 基本成型,调节风口角度的时候出来的一个ui是在哪设置---->SetHTSliderScale();
2025年4月22日
- SQ HT_SZ拆包包体大小有问题,重新删除后出包,测试对--->end
- 右舵开发基本完成
- 今天需要输出一个国内空调量产包,当前量产包目前还是出合包(HT&SZ&SQ)。量产包的内容合入【HT25款的需求】和【HT三厢车体图偏大的bug修复】
- 国内SQ拆包 file://docs.gritworld.cn/Company/DevelopmentSH/gm-cicd/byd_airconditioner/17866_develop_sq_0408/--->废弃
HT_SZ拆包 file://docs.gritworld.cn/Company/DevelopmentSH/gm-cicd/byd_airconditioner/17869_develop_ht_sz_0408/--->废弃
看aar,也是一种压缩格式
13点33分
- 国内空调量产包--->end 完成
- 评估新车型MCHF/MCHG 七至八天
- 对于这个项目的疑问点,风效,风的大小 触摸拖拽
当⽤⼾触控⻛效时,进⼊调节⽅式,并且触控的⻛效暂时不响应上报的⻆度(以防⽌⻛效偏离⼿势),当操作结束后,触控的⻛效⻆度调节到最新⻆度,最终保持⻛效移动到最新⻆度---->拖动的时候不发送坐标,到最后再发送,之看不动 - 空调CI出包只需要替换引擎路径,因为都在一个云服务器上
- 如何杀死安卓进程,只需要修改activity中的onpause函数
2025年4月21日 周一
- 解决昨天的右舵--->jar包应该只是用在Android工程中,而我先保证windows模拟成功
SUPPORT_RSE_SCREEN这个有作用 - 可能得问他们要一下新的jar包,包含控制左舵右舵的变量---->貌似白干?如何控制左右舵
13点31分
- 确认一下出风口是如何初始化的
- 不要老是自己想 问清楚
- libs中的jar包在库中的哪存着?--->在apk_base这里面
- 拆包注意拆之前拆之后的大小
2025年4月20日
- 给海外也增加副驾未指定车型的问题--->不要轻易在主干上修改
- 检查2205需求,对出风口角度---->一毛一样
- 研究右舵,第一版,貌似不是很easy
private void initDeviceDataButtonList() {
Log.d("TimeLine", "------------------initDeviceDataButtonList----");
LinearLayout buttonContainer = new LinearLayout(this);
buttonContainer.setOrientation(LinearLayout.VERTICAL);
buttonContainer.setBackgroundColor(Color.WHITE);
buttonContainer.setElevation(20);
//车型ID
List<IdData> CarModeIdDataList = new ArrayList<>();
//CarModeIdDataList.add(new IdData("SQ 0x9B", 0x9B));
//CarModeIdDataList.add(new IdData("SQ 0x117", 0x117));
CarModeIdDataList.add(new IdData("海外SQ 0x0126", 0x0126));
CarModeIdDataList.add(new IdData("海外SF 0x011C", 0x011C));
CarModeIdDataList.add(new IdData("海外SF 0x0128", 0x0128));
//CarModeIdDataList.add(new IdData("HT 0XAA(两厢)", 0XAA));
//CarModeIdDataList.add(new IdData("HT 0XAB(两厢)", 0XAB));
//CarModeIdDataList.add(new IdData("HT 0XD3(三厢)", 0XD3));
//CarModeIdDataList.add(new IdData("HT 0XD4(三厢)", 0XD4));
CarModeIdDataList.add(new IdData("海外HT 0x11D(两厢)", 0x11D));
CarModeIdDataList.add(new IdData("海外HT 0x14B(两厢)", 0x14B));
CarModeIdDataList.add(new IdData("SZ 0xA8", 0xA8));
CarModeIdDataList.add(new IdData("SZ 0xA9", 0xA9));
Spinner carModeIdButton = new Spinner(this);
LinearLayout.LayoutParams spinnerParams = new LinearLayout.LayoutParams(
0, // 宽度为0
LinearLayout.LayoutParams.WRAP_CONTENT, // 高度自适应
1.0f // 权重为1
);
carModeIdButton.setLayoutParams(spinnerParams);
carModeIdButton.setPadding(12, 12, 12, 12);
carModeIdButton.setBackgroundResource(android.R.drawable.btn_default);
ArrayAdapter<IdData> adapter = new ArrayAdapter<IdData>(
this,
android.R.layout.simple_spinner_item,
CarModeIdDataList
) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView view = (TextView) super.getView(position, convertView, parent);
view.setText(getItem(position).name);
view.setGravity(Gravity.CENTER);
return view;
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
TextView view = (TextView) super.getDropDownView(position, convertView, parent);
view.setText(getItem(position).name);
view.setGravity(Gravity.CENTER);
return view;
}
};
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
carModeIdButton.setAdapter(adapter);
carModeIdButton.setSelection(cIndex);
mCarModeId = CarModeIdDataList.get(cIndex).Id;
carModeIdButton.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
IdData selected = (IdData) parent.getItemAtPosition(position);
mCarModeId = selected.Id;
cIndex = position;
}
@Override
public void onNothingSelected(AdapterView<?> parent) {}
});
// 屏幕ID
List<IdData> DeviceTypeDataList = new ArrayList<>();
DeviceTypeDataList.add(new IdData("前排屏", DeviceType.AC_DEVICE_IVI_ID));
DeviceTypeDataList.add(new IdData("副驾屏", DeviceType.AC_DEVICE_FSE_ID));
DeviceTypeDataList.add(new IdData("后排屏", DeviceType.AC_DEVICE_RSE_ID));
DeviceTypeDataList.add(new IdData("后排左侧屏", DeviceType.RSE_LEFT_AREA_ID));
DeviceTypeDataList.add(new IdData("后排右侧屏", DeviceType.RSE_RIGHT_AREA_ID));
DeviceTypeDataList.add(new IdData("扶手屏", DeviceType.AC_DEVICE_RCS_ID));
Spinner DeviceTypeButton = new Spinner(this);
DeviceTypeButton.setLayoutParams(spinnerParams);
DeviceTypeButton.setPadding(12, 12, 12, 12);
DeviceTypeButton.setBackgroundResource(android.R.drawable.btn_default);
ArrayAdapter<IdData> adapter2 = new ArrayAdapter<IdData>(
this,
android.R.layout.simple_spinner_item,
DeviceTypeDataList
) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView view = (TextView) super.getView(position, convertView, parent);
view.setText(getItem(position).name);
view.setGravity(Gravity.CENTER);
return view;
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
TextView view = (TextView) super.getDropDownView(position, convertView, parent);
view.setText(getItem(position).name);
view.setGravity(Gravity.CENTER);
return view;
}
};
adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
DeviceTypeButton.setAdapter(adapter2);
DeviceTypeButton.setSelection(cIndex);
mDeviceType = DeviceTypeDataList.get(cIndex).Id;
DeviceTypeButton.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
IdData selected = (IdData) parent.getItemAtPosition(position);
mDeviceType = selected.Id;
cIndex = position;
}
@Override
public void onNothingSelected(AdapterView<?> parent) {}
});
// 第一行:两个下拉框
LinearLayout firstRow = new LinearLayout(this);
firstRow.setOrientation(LinearLayout.HORIZONTAL);
firstRow.addView(carModeIdButton);
firstRow.addView(DeviceTypeButton);
buttonContainer.addView(firstRow);
// 第二行:左舵和支持触摸按钮
Button rudderButton = new Button(this);
rudderButton.setText("左舵");
rudderButton.setLayoutParams(spinnerParams);
mLeftRudder = true;
rudderButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Button button = (Button) v;
mLeftRudder = !mLeftRudder;
if (mLeftRudder) {
button.setText("左舵");
} else {
button.setText("右舵");
}
}
});
Button touchButton = new Button(this);
touchButton.setText("支持触摸");
touchButton.setLayoutParams(spinnerParams);
mSupportDoubleOpenSwitch = true;
touchButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Button button = (Button) v;
mSupportDoubleOpenSwitch = !mSupportDoubleOpenSwitch;
if (mSupportDoubleOpenSwitch) {
button.setText("支持触摸");
} else {
button.setText("不支持触摸");
}
}
});
LinearLayout secondRow = new LinearLayout(this);
secondRow.setOrientation(LinearLayout.HORIZONTAL);
secondRow.addView(rudderButton);
secondRow.addView(touchButton);
buttonContainer.addView(secondRow);
// 第三行:两排和座椅风格按钮
Button rowButton = new Button(this);
rowButton.setText("两排");
rowButton.setLayoutParams(spinnerParams);
mIsThreeRow = false;
rowButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Button button = (Button) v;
mIsThreeRow = !mIsThreeRow;
if (mIsThreeRow) {
button.setText("三排");
} else {
button.setText("两排");
}
}
});
List<IdData> SeatStyleDataList = new ArrayList<>();
SeatStyleDataList.add(new IdData("七座", 0));
SeatStyleDataList.add(new IdData("六座", 2));
Button SeatStyleButton = new Button(this);
SeatStyleButton.setLayoutParams(spinnerParams);
IdData sData = SeatStyleDataList.get(sIndex);
SeatStyleButton.setText(sData.name);
mSeatStyle = sData.Id;
SeatStyleButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sIndex++;
sIndex = sIndex % SeatStyleDataList.size();
IdData data = SeatStyleDataList.get(sIndex);
Button button = (Button) v;
button.setText(data.name);
mSeatStyle = data.Id;
}
});
LinearLayout thirdRow = new LinearLayout(this);
thirdRow.setOrientation(LinearLayout.HORIZONTAL);
thirdRow.addView(rowButton);
thirdRow.addView(SeatStyleButton);
buttonContainer.addView(thirdRow);
// 第四行:RSE支持按钮
Button supportRseButton = new Button(this);
supportRseButton.setText("不支持RSE");
supportRseButton.setLayoutParams(spinnerParams);
mSupportRseScreen = false;
supportRseButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Button button = (Button) v;
mSupportRseScreen = !mSupportRseScreen;
if (mSupportRseScreen) {
button.setText("支持RSE");
} else {
button.setText("不支持RSE");
}
}
});
Button startButton = new Button(this);
startButton.setText("启动");
startButton.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT
));
startButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
try {
ViewGroup rootView = findViewById(android.R.id.content);
if (mDeviceDataButtonLinearLayout != null) {
rootView.removeView(mDeviceDataButtonLinearLayout);
}
initEngine();
} catch (Exception e) {
throw e;
}
}
});
}
});
LinearLayout fourthRow = new LinearLayout(this);
fourthRow.setOrientation(LinearLayout.HORIZONTAL);
fourthRow.addView(supportRseButton);
buttonContainer.addView(fourthRow);
// 添加启动按钮
buttonContainer.addView(startButton);
ViewGroup rootView = findViewById(android.R.id.content);
mDeviceDataButtonLinearLayout = buttonContainer;
rootView.addView(buttonContainer);
}
14点00分
2025年4月18日
- 截图还是用png格式,因为保留更多细节,而且也不是很大,不过1MB
- 周报
- 和罗导确认一下那个bug,详细描述一下是什么问题
- 修改login界面的选车与屏幕的样式--->end
- 统计车型,屏幕,分辨率
- git restore . //撤销工作区未add 的文件 git clean -dfx //删除未跟踪文件
13点26分
- 统计车型,屏幕,分辨率--->发现启动图这里好乱--->整理完毕
- 国内空调拆包ht_sz车型 file://docs.gritworld.cn/Company/DevelopmentSH/gm-cicd/byd_airconditioner/17793_develop_ht_sz_0408/
周报:
海外出包:
- 海外新增SF车型,修复海外SQ问题,出量产包
- 删除SF后排资源,分别出主干和量产包
- 新增海外SZ车型,修复海外SZ副驾驶屏幕左右黑边问题出主干包
国内出包: - 国内【HT】副驾屏UI位置调整 HT三厢扶手屏幕相机调整 HT25中排出风口调整 替换HT三厢扶手屏贴图 30系扶手屏车体图替换 SQ出风口优化 两厢更新副驾 出主干包,
- 出风口调整,出量产包
- 完成国内空调SQ和HT-SZ的拆包
- 新增HT25两厢0x188和0x18c 修复当车型ID未指定,而屏幕类型为副驾屏时的bug HT三厢扶手屏空调背景车体图偏大 出量产包
修改login界面的选车与屏幕的样式
统计车型,屏幕,分辨率,整理成表格
2025年4月17日
- 有个bug--->更启动图有关,解决bug一定要先本地复现--->修复
13点27分
- 确认了包体减小的原因--->end
- @杨凯(杨凯)今天微信群里提到国内空调主干版本的HT车型0X118 副驾屏启动,应用首次车型图显示不正确问题解决后。将如下修改点/需求合入量产出一个包,今天要发给BYD@卢修竹(Bambo)@武利(武利)
1、新增HT25款车型的需求(中控+副驾),今天提的问题记得解决
2、HT三厢扶手屏空调背景车体图偏大(上次只修改了主干版本,没有合入到量产)--->end - 右舵
- 新车型UR
- 本地出apk--->不用了
import android.widget.Spinner;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import android.widget.AdapterView;
// 创建 Spinner
Spinner carModeSpinner = new Spinner(this);
// 设置布局参数
LinearLayout.LayoutParams spinnerParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, // 宽度匹配父容器
LinearLayout.LayoutParams.WRAP_CONTENT // 高度自适应
);
int marginVertical = (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP,
8, // 上下边距 12dp
getResources().getDisplayMetrics()
);
int marginHorizontal = (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP,
300, // 左右边距 300dp(根据需求调整)
getResources().getDisplayMetrics()
);
spinnerParams.setMargins(marginHorizontal, marginVertical, marginHorizontal, marginVertical);
carModeSpinner.setLayoutParams(spinnerParams);
// 设置内边距和背景
int padding = (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP,
12, // 内边距 12dp
getResources().getDisplayMetrics()
);
carModeSpinner.setPadding(padding, padding, padding, padding);
carModeSpinner.setBackgroundResource(android.R.drawable.btn_default);
// 关键:自定义适配器,强制文本居中
ArrayAdapter<IdData> adapter = new ArrayAdapter<IdData>(
this,
android.R.layout.simple_spinner_item,
CarModeIdDataList
) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView view = (TextView) super.getView(position, convertView, parent);
view.setText(getItem(position).name);
view.setGravity(Gravity.CENTER); // 强制文本居中
return view;
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
TextView view = (TextView) super.getDropDownView(position, convertView, parent);
view.setText(getItem(position).name);
view.setGravity(Gravity.CENTER); // 下拉列表文本居中
return view;
}
};
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
carModeSpinner.setAdapter(adapter);
// 设置选中项和监听器
carModeSpinner.setSelection(cIndex);
mCarModeId = CarModeIdDataList.get(cIndex).Id;
carModeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
IdData selected = (IdData) parent.getItemAtPosition(position);
mCarModeId = selected.Id;
cIndex = position;
}
@Override
public void onNothingSelected(AdapterView<?> parent) {}
});
// 添加到容器
buttonContainer.addView(carModeSpinner);
2025年4月16日
- SZ车型
- 更新SQ的资源,重新打包
国内SQ拆包 file://docs.gritworld.cn/Company/DevelopmentSH/gm-cicd/byd_airconditioner/17605_develop_sq_0408/
13点27分
- SZ车型的吹风模式有点难度---->我太牛了,大进展,14点06分,貌似搞定
UserModule/source/private/CarInteriorBeh.cpp: 443 初始--->牛毛线,啥也不用改,白做 - SZ重做,不能随意cherrypick,容易混乱
- 试试序列帧加速
2025年4月15日
- 更新HT两厢副驾图,然后出包,紧急--->好像又要出量产包--->end
- 看代码!--->控制风开关,拖拽,变色
- git fetch origin /git branch -r
- 海外SZ新需求 --->风口调节和车体图
- 拆包合并出量产包问题--->end 没有拆,直接合入出量产包了,又加了吹风模式,拆除HT是因为怕有问题,笑话
13点31分
- SQHD出风口风量小,貌似之前已经解决了--->测试乌龙
- 出量产包
git cherry-pick A^..B 包含A的连续commit
直接cherry-pick merge--->但是没有独立的commit记录---->对于多个commit这样好 - SZ是单独mask
2025年4月14日 周一
10点41分
- 出国外空调量产包---->主干包只能在develop分支出,量产包只能在release分支出,一般出量产包不着急/量产分支,这个要等我们的主干版本他们验证ok,上他们量产线后,在那个版本的节点上拉出来一个分支,命名为量产分支--->end
- 要更新国内主干包的出包记录--->有一个启动图有问题,扶手屏的,--->分辨率不一致原因,确认扶手屏分辨率--->这貌似不是个问题,选错车型了,那么别的车型有扶手屏吗?没有的话,选择了会怎么样
16点52分 改变了缩放模式,选别的车得有一个场景,不然会崩溃----end - 211车型扶手屏的放大有黑边mask这个
- 海外SZ车型有崩溃问题--->引擎问题
- 反复拉起测试内存是否有上涨???---->11点35分 分析这个--->引擎侧的问题,老问题end
13点44分
- 海外空调测试excel里最后一点,反复拉起测试内存是否有上涨,这个是引擎的问题,老问题了,不用管听罗导的意思
- 如果遇到反复拉起测试,有黑屏,也是一样,引擎的老问题
- 移除SF后排资源,出主干包---end
只有三厢有头枕屏,扶手屏
- 看看遮罩Mask---->18点51分,大概找见遮罩的位置了
UserModule\source\private\CarInteriorBeh.cpp#694
2025年4月11日
- 周报
- 国内空调新增HT两款车型HFEF,已完成并出主干包和压测包,测试通过
- 解决国内空调SQ和HT车型bug
- 解决海外SF车型和SQ车型空调的bug
- 完成国内空调SQ车型拆包
下周 - 完成国内空调SZ和HT车型拆包
- 国内空调新增QZ车型
- 国内HT车型扶手屏启动图会放大问题
- 国内SQ问题
- 中英文切换黑屏?--->解决不了,和我无关
13点29分
-
出包
难喽!! -
国内空调可以通过这两个关键字查看启动时间海外没有做,需不需要加上
2025年4月10日
- 海外SF出包,主干和压测,要记录---->end
- 逐渐把握节奏,更新了周一的国内出包记录,至于主干or量产,还是未知--->新功能都是出主干包(可以debug),然后去测,测完交给BYD,等BYD说没问题,可以发量产包,就再发一个量产包,如果量产包又出了问题,就修,再出修完的量产包
- 出压测包的时候,改动Java代码在Android studio内改
- qz,新引擎,cmake--->不一定做,不要 拖着
gw::render::GMaterial::CastTo<gw::render::GUnlitTextureMaterial>(frontBg->Children()[0]->CastTo<PlaneGeometry>()->GetMaterial())->SetTextureFromFile("UserResources/SZ_Mask/SZ_FrontRow.jpg");
gw::render::GMaterial::CastTo<gw::render::GUnlitTextureMaterial>(midBg->Children()[0]->CastTo<PlaneGeometry>()->GetMaterial())->SetTextureFromFile("UserResources/SZ_Mask/SZ_RockRow.jpg");
gw::render::GMaterial::CastTo<gw::render::GUnlitTextureMaterial>(backBg->Children()[0]->CastTo<PlaneGeometry>()->GetMaterial())->SetTextureFromFile("UserResources/SZ_Mask/SZ_backRow.jpg");
//用于为场景中的不同背景平面设置对应的纹理贴图
//类型安全转换:将通用材质(GMaterial)转换为无光照纹理材质(GUnlitTextureMaterial),确保支持纹理设置。
10点52分
- HT25副驾驶的图有修改,需要更新--->end 更新副驾启动图
13点27分
- 安装了虚拟机---->也就蓝叠强一些,但还是不行
- 国内SQ拆包 file://docs.gritworld.cn/Company/DevelopmentSH/gm-cicd/byd_airconditioner/17232_develop_sq_0408/
35fe5032696e291addffed370da9eb431a7078ca 1.7
34fb78c0c5f6a21a3c0438b253582c2d872b5641 1.14-2
c8497bdda673b1b1fbc7e62efffa7992f6f91ab5 1.14-1
3880d86aa5e0792d8a89685765dcca186fe69d58 1.21
-
海外SQ年久失修,需要和国内的一样,用cherry-pick拿过来修改,很方便,
- git cherry-pick --abort 有冲突中止
- git cherry-pick --continue 解决完冲突还卡在picking状态,
- git cherry-pick 完直接就是commit完了,毕竟是直接拿过来commit
-
测试问题
海外SF 2个 --->end
SQ 3个 --->已解决
国内 SQ 一个
---都是美术
2025年4月9日
10点36分
-
帮忙python脚本 end ---> 学习一下
-
海外SF出包给测试--->end
- 14点18分 出了大问题 crash了---->Copy_Libs这个脚本使用了旧的库,删除就好了
- 又测出问题了,恨测试--->待修复,貌似是美术的
- 风口加注释,一类一行,先确认一下
- 国内HT也有问题,序列帧切换--->end 已没问题
-
昨天输出的国内空调主干包还需要更新下HT 25款的副驾车体图 --->end 貌似已经解决
-
闲了就看代码,分辨率那个设置不起作用啊
- SF (25.6, 14.4, 1) 16:9
- SQ HT SZ (25.6, 16.0, 1) 16:10
2025年4月8日
- 正则表达式
- 国外SF bug修复,代码修改----> 未做,但好像是改完了,就是那个恶心的FindAllWindMesh()需要搞明白--->验证
11点07分
- 看这个,解决FindAllWindMesh()
- 新需求,需评估时间---->0x011A QZH 25款混动
- 几个功能点还需要再细看,还不是很清楚---->目前没有啥新功能点,还是一样的无动力发动机,和SQ一样,只不过可能需要在新引擎上做
//4.2海外SF测试问题
m2066-----吹热风情况下,除雾风脚部风和左右侧风的颜色不一样 end
k2067-----SF前排后排互切的过程中是黑屏,没有过场动画 end me viewchangeplane
2068-----后排吹风风量调节小于7的情况下,可以看到有一个黑色阴影方框 xx
m2069---- 只打开前排一侧出风口时,可以看到靠近出风口的位置也会亮起 end
2070----后排出风的范围比实际的出风口的范围大 xx
k2071----刚进入SF空调时,会短暂出现一个白框 end me 启动图
m2072----除雾风左侧靠近车框的位置有一条黑线,右侧没有 end 待验证
2073----吹脚风外侧黑色的范围很大,没有过渡效果 xx
16点13分
-
拆包 ---->新任务 原本147mb
- fatal: 'origin/develop-HT-SZ' is not a commit and a branch 'develop-HT-SZ' cannot be created from it----->在远程建了新分支,要更新到本地,实际上,git仓库分为本地仓库和远程仓库,我们用checkout命令是从本地仓库中找要检出的分支的。本地仓库只有在进行网络请求时才会跟远程仓库交互,比如fetch命令。
所以要git fetch origin 和 git remote update origin --prune
- fatal: 'origin/develop-HT-SZ' is not a commit and a branch 'develop-HT-SZ' cannot be created from it----->在远程建了新分支,要更新到本地,实际上,git仓库分为本地仓库和远程仓库,我们用checkout命令是从本地仓库中找要检出的分支的。本地仓库只有在进行网络请求时才会跟远程仓库交互,比如fetch命令。
-
又是学习git的一天
2025年4月7日 周一
- 出包。新需求增加春季新款HT车型----> 完成
- viewchangeplane的开关在海外上,貌似国内也会加--->加上了
14点35分
- 看是如何加的风口---->还是不明所以,那个改名字的没用到啊,数组加载就生效了--->2025年4月10日13点31分,目前结论是有一套固定的加载的,但是防止漏掉,所以再筛选一次
2025年4月3日
- 加一个开关判断 对于是否切换前后排---->试一下SQ和HT有无问题11点17分
- 加一下虚拟机
- 本地出基于新引擎的包,给测试测---->测完通过后,修改CI中引擎的压缩包,用于自动出包
- 新需求HT的
14点30分
三件事
- 出一个sq的量产包,不确定要不要拉新分支cherry-pick,写进出包记录
- 国内all-0403出一个量产包,写进出包记录----->第1点和第2点出了一个包
- 国外sfbug修复,代码修改---->未做
2025年4月2日
- 合入 出包 更新了答疑中的出包流程和出包记录
13点43分 完成
在新增SF车型前拉了一个新的海外空调分支release-oversea,用于cherry-pick
15点46分
切换前后排为毛是黑屏一下? 之前是好的,序列帧没设置,设置了还是有问题,记得一开始就是这样,跟引擎开关无关 --->有关,是一个viewchange
2025年4月1日
void OutletBeh::SetWindStrength(int state)
{
mWindState = state;
mOpacity = 0.4 + 0.6 / 6 * (state - 1.0);
mAlphaConversionRange = 2.5 - (state - 1.0) * (2.25 / 6.0);
mStartOpactiy = GetComponent()->GetOpacity();
mTimeLineWindStrength.PlayFromStart();
if (mCarType != CAR_TYPE::SQ && mCarType != CAR_TYPE::SF)//SQ不需要风速效果
{
if (mWindMeshVector.empty() == false && mWindMeshVector[0]->Children()[0]->Children().empty() == false)
{
mStartAlphaConversionRange = gw::render::GMaterial::CastTo<gw::render::GPhysicalMaterial>(mWindMeshVector[0]->Children()[0]->Children()[0]->CastTo<Mesh>()->GetMaterial())->GetAlphaConversionRange();
}
if (mWindComp != nullptr)
{
for (auto comp : mWindMeshVector)
{
std::string materialName = comp->ComponentName();
if (!comp->Children()[0]->Children().empty())
{
auto pbr = gw::render::GMaterial::CastTo<gw::render::GPhysicalMaterial>(comp->Children()[0]->Children()[0]->CastTo<Mesh>()->GetMaterial());
if (pbr == nullptr) continue;
pbr->EnableAlphaConversion(true);
pbr->SetForceTransparent(true);
pbr->SetAlphaConversionIntensity(1.5);
if (pbr->GetUTransformFunction("BASE") == gw::render::EUVTransformFunction::TILING_TRANSLATE &&
pbr->GetVTransformFunction("BASE") == gw::render::EUVTransformFunction::TILING_TRANSLATE)
{
float speedV = mWindPbrMatUVSpeedMap[materialName].y * (0.4 + 0.6 / 6 * (state - 1.0));
pbr->SetVTransform("BASE", gw::render::EUVTransformFunction::TILING_TRANSLATE, std::vector<float>{ pbr->GetVFuncParam("BASE")[0], speedV, 0.0, 0.0 });
}
}
}
}
}
if (mTreeComp == nullptr || mTreeComp->Children().empty())
{
SetVFXWindStrength(mTreeComp, mStartDuration2);
}
else
{
for (auto comp : mTreeComp->Children())
{
SetVFXWindStrength(comp, mStartDuration2);
}
}
if (mAnionComp == nullptr || mAnionComp->Children().empty())
{
SetVFXWindStrength(mAnionComp, mStartDuration1);
}
else
{
for (auto comp : mAnionComp->Children())
{
SetVFXWindStrength(comp, mStartDuration1);
}
}
if (mClickArea != nullptr)
{
mClickArea->SetScale((0.6 + 0.4 / 6 * (state - 1.0)) * mClickAreaX, mClickArea->GetScale().y, mClickArea->GetScale().z);
}
}
10点00分
- 填完工时
- 基本梳理完设置风力大小的地方,有点复杂,颜色,透明度,材质变换
14点32分
-
出风模式超!!!--->没区别的原因1. 是否有限制被设置上?之前确定被设置上了,但是不可能仅仅就是设置完ID就没了吧
if (mRotateComp == nullptr) return; 这个生效所以全部return了
SQ没有旋转相关的东西,所以,他的mRotateComp是nullptr
16点54分 还在看出风口模式,严重怀疑没做---->它的作用是限制手动拖风的范围,角度 -
方向调节1和2也是HT才有,但是是如何排除SQ的,--->很明显!而且是怎么实现的好神奇??
mTimeLineAutoAngleY.SetTotalTime(time); //设置时间
mTimeLineAutoAngleY.PlayFromStart(); //启动时间线
mTargetY = std::clamp(angle * -5, (float)mAirOutletAngle[3] * -5, (float)mAirOutletAngle[2] * -5);
mStartY = mTotalY;
//开始和结束用在SetCurrentAngleY,因为打断点的时候,先断在set autoangleY,继续则断在了SetCurrentAngleY这,很说明问题
- HT修改,但貌似不是空调,也改的不多
2025年3月31日一
在上海第一个工作日
上午配置电脑 仓库啥的
(报销不急,问财务)
13点40分
-
开始执行在台式上,看有什么问题
-
基本都满足条件了,git曹,还有遗留吹风模式,出风口模式
//SF
mImagePathMap.put(String.valueOf(0x011C) ,"Data/UserResources/SF/SFStart.jpg");
mImagePathMap.put(String.valueOf(0x0128) ,"Data/UserResources/SF/SFStart.jpg");
CarModeIdDataList.add(new IdData("海外SF 0x011C", 0x011C));
CarModeIdDataList.add(new IdData("海外SF 0x0128", 0x0128));
出风口模式,还有风量调节,看到根
3.20入职
一、 海外HT出风口角度调节---->乌龙,已于要求的一致 endtime3.27
二、 增加新车型SF--->在测试 4.2
三、 节后HTEF和HTHF