這幾天抓的都是「看起來沒事,其實已經出包」的地方

這幾天主要在處理三件事:修正一個自動排版工具算錯字數的小毛病、把一個還在開發中的手機App第一次送出去給測試機驗證、以及在驗證過程中揪出幾個表面上看起來沒事、其實已經出包的地方。
貼文字數要拿真帳號實測才准
一個能把長文章自動拆成噗浪(一種社群平台,可以把貼文串成接龍)多層貼文的工具,先前假設每張圖片附的網址會固定占用一定字數,靠這個假設去算一篇文章要拆成幾層才塞得下。
拿真實帳號實際發文測試後發現,圖片網址實際占用的字數比原本假設的少,代表原本的算法太保守,明明能多塞一張圖卻多拆了一層。同時也把商品名稱與價格資訊從每層最前面改放到最後面、所有圖片之後,理由是圖片文字交錯的版面不好讀。
平台的字數限制通常不會公開實際算法,光靠猜測或舊文件記載很容易算錯,而且不同種類的內容算法可能不一樣,不能套用同一套數字。真的要準,只能拿真帳號實測。
note技術細節:分樓演算法與實測校正
splitProductBlock():圖片網址原本估算固定佔 38 字,實測後改為 30 字;一般網址仍沿用 38 字,尚未實測。 單樓圖片上限依實測結果調整為 11 張,品名價格行從第一樓移到最後一樓,所有圖片之後。 此決定推翻 2026-09-15 訂下的 F-7 規則(品名留在第一樓),docs/POST-FORMATS.md、docs/OPERATION.md、CLAUDE.md 同步更新。
測試版App把內部除錯頁面留給外人看得到
一個還在開發中、幫人規劃連續跑好幾間livehouse行程的手機App,這幾天第一次把測試版本送出去給實體手機安裝。
App框架本身會自動幫每個App產生一個內部用的頁面,列出App裡所有畫面,方便工程階段除錯查看。這個頁面在正式版也一樣被留著、對外可見,原本只想留給自己看的內部清單,誰都點得到。直接把這個自動產生的功能整個關掉,順手也把系統預設、看起來像是還沒做完的英文錯誤頁面換成了日文。
用現成框架蓋東西時,框架自帶的除錯功能常常預設是開著的,而且不會主動提醒這件事在正式上線後還留著。上線前得自己一項項去確認,不能假設框架會幫忙關掉。
note技術細節:expo-router 的 sitemap 預設行為
expo-router 57.0.23 原始碼邏輯(shouldAppendSitemap)不分 dev/production,預設一律產生 _sitemap 頁面。 修法:app.config.ts 加 ['expo-router', { sitemap: false }] 整個關掉,同時把 src/app/+not-found.tsx 預設英文 Unmatched 頁改寫成日文。 此問題編號 ARCH-10,由使用者實機截圖回報後確認。
功能還沒被用到,檢查動作就先讓App當機
同一個App這次一口氣做了三個新功能的雛形,打算全部塞進同一次測試版一起驗證:用手機內建AI從文字裡擷取行程、語音輸入,還有地圖路線查詢。
語音輸入功能在程式一啟動、使用者根本還沒點開這個功能之前,就會先跑去檢查手機有沒有支援這個能力,而這個檢查動作本身在某些測試環境下寫法有問題,會直接讓整個App在開發模式下當機,功能還沒被叫到,程式就先倒了。
graph TD
subgraph 舊做法
A1[App一啟動] --> A2[馬上檢查手機有沒有語音功能]
A2 --> A3[某些情況下直接當機]
end
subgraph 新做法
B1[App一啟動] --> B2[先不檢查]
B2 --> B3[使用者按下語音功能]
B3 --> B4[這時候才檢查]
end
一次塞進多個新功能一起驗證時,每個功能上線前都該先確認檢查動作只在真的被用到時才啟動,不要讓某一個功能的檢查邏輯拖累其他功能。有些功能得靠手機本身有沒有裝這個能力才能用,並不是每一支手機都具備。
note技術細節:原生模組延遲載入
expo-speech-recognition 的 build/ExpoSpeechRecognitionModule.js 在 import 時就呼叫 requireNativeModule,原生模組不存在時會直接拋錯。 expo-router dev 模式的 validateRouteTreeExports 會 loadRoute 所有路由檔,導致沒裝此原生模組的 build(例如 build #1)跑 HEAD JS 就先炸掉。 修法:src/app/dev/speech-demo.tsx 改用 requireOptionalNativeModule,做成薄閘門+延遲載入,元件內 try/catch 也改為統一格式的回傳信封。
接下來
- 語音輸入、AI擷取行程、地圖路線這三個新功能雛形,還沒真的拿手機實際操作驗證過,下一步要在真機上一一試
- 送交App商店審查要用的說明文字,中文版跟英文版都還在修,目前還沒定稿
- 另一個骰子賭博遊戲那邊,一局要玩幾回合、多久抽一次卡,目前都只是暫定數字,之後還會再調
本篇由跨專案自動彙整產生,素材為 2026-09-23 之後 5 個專案的提交紀錄與 0 則知識投遞。