AppForceps
紹介動画
概要
AppForceps は iOS シミュレータや Xcode / Device Hub で実機から取り出した Data Container、adb で接続した Android デバイスのアプリデータを GUI で開いて、plist や SQLite、JSON、SharedPreferences を直接編集できる macOS デスクトップアプリです。LevelDB や MMKV のような KV ストア、zip や gzip の中身も一覧・プレビューできます。Finder ライクな 4 ペインで Devices → Apps → Files → Editor を矢印キーで降りていけます。
シェルから plutil や sqlite3 を叩き、xcrun simctl spawn ... で
cfprefsd を再起動する一連の流れを GUI からひと操作にまとめることを目的にしています。
主な特徴
iOS と Android のデータを GUI で開く
シミュレータの Data Container、.xcappdata、ローカルフォルダに加えて、adb 経由の Android デバイスも 1 つの UI で扱えます。
plist・SQLite・JSON の内蔵エディタ
plist は XML/Binary を自動判定して型付きで編集。SQLite はセル単位で更新でき、Android の SharedPreferences や Jetpack DataStore も型付きで編集できます。
Firebase A/B Testing の Variant 切り替え
割り当てられていない Variant の動作を確認できます。iOS / Android 両対応です。
Undo / Redo
編集を直近 20 件まで記録し、Cmd+Z で元に戻し、Cmd+Shift+Z でやり直せます。安全に試行錯誤できます。
横断検索とクイックナビゲーション
ファイル名 / plist キー / SQLite テーブル名を全ソース横断で検索。コマンドパレットやお気に入りジャンプで目的のファイルへすぐ移動できます。
セッション復元
強制終了しても、次回起動時にタブ構成と選択中のファイルまで復元。マルチタブ・マルチウィンドウでの作業をそのまま再開できます。
インストール
Homebrew でインストールできます。
brew install --cask kusumotoa/tap/appforceps macOS 13 (Ventura) 以上で動作します。
使用例
開発の動機や実機での運用フローについては、以下のブログ記事をご参照ください。
-
iOS シミュレータと実機の Data Container を操作するアプリを作った
xcappdata と Data Container の違い、Xcode / Device Hub と組み合わせた実機運用、Firebase Remote Config の SQLite を直接書き換える流れを解説しています
-
iOS の plist を書き戻しても反映されない原因と cfprefsd を再起動する解決策
AppForceps が裏で行っている cfprefsd 再起動の背景と、シミュレータ / 実機への SIGTERM の届け方