A CocoaPods plugin that converts a given podspec into its binary version.
For a given podspec, a zip file will be produced containing the binary representation of the original podspec sources. Each platform is packed as an
xcframework within the zip file. Other attributes such as
resource_bundles specified in the source podspec will also be packed. A binary podspec is also generated that can be published to a CocoaPods specs repo.
You may choose to use
cocoapods-pack as a packaging tool and write your own Swift Package Manager
Package.swift file for the generated package instead.
Finally, you may choose to write your own CocoaPods plugin that leverages
cocoapods-pack to prebuild CocoaPods dependencies before integrating them into a project.
gem install cocoapods-pack
$ pod pack SOURCE ARTIFACT_REPO_URL Converts the provided `SOURCE` into a binary version with each platform packed as an `xcframework`. The process includes installing a CocoaPods sandbox, building it for device and simulator using the 'Release' configuration, zipping the output and generating a new podspec that uses the `ARTIFACT_REPO_URL` provided as the source. The generated podspec is also validated. Options: --use-static-frameworks Produce a framework that wraps a static library from the source files. By default dynamic frameworks are used. --generate-module-map If specified, instead of using the default generated umbrella module map one will be generated based on the frameworks header dirs. --allow-warnings Lint validates even if warnings are present. --repo-update Force running `pod repo update` before install. --out-dir Optional directory to use to output results into. Defaults to current working directory. --skip-validation Skips linting the generated binary podspec. --skip-platforms Comma-delimited platforms to skip when creating a binary. --xcodebuild-opts Options to be passed through to xcodebuild. --use-json Use JSON for the generated binary podspec. --sources=https://github.com/artsy/Specs,master The sources from which to pull dependant pods (defaults to all available repos). Multiple sources must be comma-delimited. --allow-root Allows CocoaPods to run as root --silent Show nothing --verbose Show more debugging information --no-ansi Show output without ANSI codes --help Show help banner of specified command
To run some of the examples in this repo make sure you run
bundle install first.
bundle exec pod pack samples/MySample/MySample.podspec https://url/to/MySample.zip --out-dir=out
If you wish to skip a specific platform the source podspec provides:
bundle exec pod pack samples/MySample/MySample.podspec https://url/to/MySample.zip --skip-platforms=watchos --out-dir=out
Using static linking:
bundle exec pod pack samples/MySample/MySample.podspec https://url/to/MySample.zip --use-static-frameworks --out-dir=out
xcodebuild options can be passed using
--xcodebuild-opts , example:
bundle exec pod pack samples/MySample/MySample.podspec https://url/to/MySample.zip --use-static-frameworks --xcodebuild-opts=ENABLE_BITCODE=NO --out-dir=out
You may also specify a remote podspec without the need to clone its sources locally, for example:
bundle exec pod pack https://raw.githubusercontent.com/Alamofire/Alamofire/master/Alamofire.podspec https://url/to/Alamofire.zip --out-dir=out --allow-warnings
Install Ruby >= 2.5.0 and set up with:
To run the unit tests use
$ bundle exec rake spec
Or, for a more thorough output which include test names:
$ bundle exec rspec --format d