Generate iOS private framework headers from simulator runtimes (dyld shared cache).
swift run -c release privateheaderkit-installBy default, privateheaderkit-install installs the following binaries to ~/.local/bin:
privateheaderkit-dumpheaderdump(host)headerdump-sim(iOS Simulator)
If ~/.local/bin is not in your PATH, add it:
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrcTo change the destination:
swift run -c release privateheaderkit-install --prefix "$HOME/.local"
# or
swift run -c release privateheaderkit-install --bindir "$HOME/bin"If you prefer running the built binary directly:
swift build -c release --product privateheaderkit-install
"$(swift build -c release --show-bin-path)/privateheaderkit-install" --bindir "$HOME/bin"privateheaderkit-dump
privateheaderkit-dump 26.2
Default output directory is ~/PrivateHeaderKit/generated-headers/iOS/<version>.
This dumps both Frameworks and PrivateFrameworks.
(Relative paths passed to --out / PH_OUT_DIR are resolved from the current directory. If you want the old output under this repo, run from the repo root and pass --out generated-headers/iOS/<version> or set PH_OUT_DIR.)
privateheaderkit-dump --list-runtimes
privateheaderkit-dump --list-devices --runtime 26.0.1
--device <udid|name>: Choose a simulator device--out <dir>: Output directory--force: Always dump headers even if they already exist (successful frameworks replace their output directory; failures keep existing output and are recorded in_failures.txt)--skip-existing: Skip frameworks that already exist (useful to overridePH_FORCE=1)--exec-mode <host|simulator>: Force execution mode--framework <name>: Dump only the exact framework name (repeatable,.frameworkoptional)--filter <substring>: Substring filter for framework names (repeatable)--layout <bundle|headers>: Output layout (bundlekeeps.frameworkdirs,headersremoves the.frameworksuffix)--list-runtimes: List available iOS runtimes and exit--list-devices: List devices for a runtime and exit (use--runtime)--runtime <version>: Runtime version for--list-devices--json: JSON output for list commands--shared-cache: Use dyld shared cache when dumping (enabled by default; setPH_SHARED_CACHE=0to disable)-D,--verbose: Enable verbose logging
- Requires Xcode command line tools (
xcrun,xcodebuild). - Simulator mode uses
xcrun simctl spawn. - During dumping, raw output is staged under
<out>/.tmp-<run-id>and then moved to the final layout. - The output directory is locked for the duration of a run to avoid concurrent writes.
- Verbose mode suppresses skipped-class logs by default; set
PH_VERBOSE_SKIP=1to show them. - You can override the device type used for auto-creation with
PH_DEVICE_TYPE(device name or identifier). - Environment overrides:
PH_EXEC_MODE,PH_OUT_DIR,PH_FORCE=1|0,PH_SKIP_EXISTING=1|0,PH_LAYOUT,PH_SHARED_CACHE=1|0,PH_VERBOSE=1|0,PH_VERBOSE_SKIP=1,PH_DEVICE_TYPE
- MIT for this workspace: see
LICENSE.