應用程式演示錄製器 是做什麼的?
製作看起來像真人自信操作應用程式的簡短螢幕錄影:每個片段專注於一個功能,沒有載入停頓、沒有除錯覆蓋層、沒有廣告、狀態列簡潔整齊。
$S 是此技能目錄中的 scripts/appdemo.sh。它需要 ffmpeg(brew install ffmpeg),以及用於 Android 的 adb 或用於 iOS 的 Xcode xcrun simctl。在沙盒化代理程式中,請以較高權限執行它:它需要與模擬器、模擬器通訊,並在 workspace 外部寫入檔案。
1. 協商要展示的內容
- 如果使用者未指定,詢問要展示哪些功能。每個功能錄製一個片段,並將片段命名為
NN_feature(例如01_price_search、02_calculator)。優先展示產品最擅長的部分,而不是應用程式開啟時的第一個畫面。 - 當不明確時,詢問要使用的建置版本和帳號。行銷素材通常需要搭載真實資料的正式發布版建置。除錯/暫存版建置會顯示開發選單、警告提示、測試資料,且執行速度較慢。不要預設;暫存版的錄影通常需要重做。
- 如果片段需要付費或高級狀態,請先尋找應用程式中的除錯/開發者覆寫開關,避免觸及真實的收費機制。
- 使用者提供的憑證:使用指令輸入(Android 上使用
adb shell input text ... >/dev/null;iOS 上使用printf ... | xcrun simctl pbcopy <udid>然後貼上),而不是透過會記錄每個指令的工具,也不要將憑證寫入檔案。
2. 讓裝置快速且安靜
- Android 模擬器:分配足夠的資源。小型 AVD 在螢幕上會卡頓,且卡頓會出現在影片中。
emulator -avd <name> -memory 6144 -cores 4 -gpu host -no-snapshot-save -no-boot-anim如果相同的應用程式 ID 已使用不同的簽署金鑰安裝,請改用另一個 AVD,而不是解除安裝(解除安裝會刪除使用者的資料)。 - 安裝並執行正式發布版建置;登入;在錄製前關閉首次執行彈出視窗、權限提示和插頁廣告。
$S statusbar on:設定固定時間(APPDEMO_TIME,預設 9:41)、滿電量和訊號、隱藏通知圖示。$S statusbar off可恢復原狀。- 在 Android 上,不要在應用程式的根畫面按下系統返回鍵。這會終止 Activity,且記憶體中的覆寫(如高級開關、功能旗標)會在重新啟動時遺失。
3. 排練,然後錄製
- 每個片段先不錄製排練一次。 熟悉點擊位置、座標和等待時間。開啟畫面一次也會預熱快取,讓正式錄製的片段載入更快。
- 錄製:
錄製在主機上執行($S start 01_price_search # 操作應用程式:adb shell input tap/swipe/text、xcrun simctl 或您的 UI 自動化工具 $S stop 01_price_search # -> $APPDEMO_OUT/01_price_search.mp4adb emu screenrecord/simctl io recordVideo)。不要在模擬器上使用裝置內的adb shell screenrecord:它會與應用程式競爭 CPU,可能導致 UI 凍結,使得滾動和點擊從不出現。 - 將一個片段的操作以一個批次發送,並使用短暫的休眠(0.5–2.5 秒),而不是每次點擊都呼叫一次工具。在步驟之間檢查畫面會在你的錄影中留下漫長的空白停滯。
- 以刻意的步長滾動(約螢幕的 40%,每次滑動 600–800 毫秒),讓觀眾能夠閱讀。
- 對非 ASCII 文字(韓文、表情符號)使用 UI 驅動程式的文字輸入;
adb shell input text僅能處理 ASCII。 - 當某個功能只有透過資料才能顯示其價值時(如分類帳、日記、購物車),請錄製建立一筆真實的記錄,然後立即刪除它,並確認畫面恢復到原始狀態。先檢查分享預設值:新貼文可能是公開的。
4. 檢查每個片段
$S strip $APPDEMO_OUT/01_price_search.mp4 /tmp/01.jpg 8
查看時間軸快照,而不是您的腳本:確認每個預期的步驟確實發生了(滾動移動了、分頁切換了、結果出現了),並且畫面上沒有不想要的東西:提示訊息、覆蓋內容的鍵盤、廣告、個人資料(如真實地址)或除錯橫幅。重新錄製失敗的片段;不要出貨一個操作靜默無效的片段。
5. 剪掉等待時間
$S tighten in.mp4 out.mp4 # 剪掉閒置的開頭、凍結的片段 -> 0.35 秒,最終結果畫面保留 1.5 秒
$S speed in.mp4 out.mp4 1.3 # 可選的統一加速
tighten 會在第一次實際操作前 0.4 秒開始影片(start 後的閒置秒數永遠不會完全靜止,因此單純的凍結檢測會錯過它們),並縮短畫面沒有變化的每個片段,讓點擊像一個熟悉應用程式的人那樣連續發生。典型的片段會減少大約一半的長度。也請使用 strip 檢查緊縮後的片段:如果一個小的變化(輸入一個數字、切換一個晶片)被剪掉了,請降低 --noise;如果仍然有停頓,請降低 --min-freeze。
6. 交付
將所有內容放在一個資料夾中:原始片段、緊縮後的版本(建議用於編輯),以及一個簡短的 README,列出每個片段、它所展示的內容,以及使用者應注意的任何事項(建立和刪除的資料、可見的個人資料、頂部的模擬器相機開孔)。回報片段長度以及無法錄製的內容及其原因。