-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
59 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
V2 will add an option to generate a zip distribution of binary frameworks from an arbitrary list | ||
of source and binary CocoaPods. | ||
|
||
## Introduction | ||
|
||
The current [Zip Builder](https://github.com/firebase/firebase-ios-sdk/tree/master/ZipBuilder) | ||
is Firebase specific. This is a proposal and initial plan to evolve the Zip Builder into a | ||
multi-purpose Apple binary framework creation tool. | ||
|
||
It would be useful to have a generic | ||
Zip Builder for other Google SDKs and other open source projects. In addition, | ||
providing a generic Zip Builder would enable Firebase users to generate binary | ||
frameworks for configurations outside the standard zip and Carthage distributions | ||
released in the standard Firebase release process. | ||
|
||
With the extra flexibility, the Zip Builder will be useful for both SDK distributors | ||
to package binary distributions and app developers who want a customized binary | ||
distribution that maps exactly to their app's requirements and provides a clean | ||
build time speed up. | ||
|
||
|
||
## Background | ||
|
||
A more flexible Zip Builder would enable the following scenarios: | ||
|
||
* Creating a zip distribution from an arbitrary set of pods | ||
* Support different building different sets of platform slices | ||
* Support building with different Xcode versions | ||
* Build only the subspecs needed for use case | ||
* [Existing solutions](https://github.com/firebase/firebase-ios-sdk/issues/4284#issuecomment-552677044) | ||
are intermittently maintained and written in Ruby. A Swift implementation is | ||
more accessible and maintainable by the Apple community. | ||
* The Swift implementation will be easier to add Swift Package Manager support for which | ||
there will likely be a need since Swift Package Manager is even more source-centric than | ||
CocoaPods. | ||
|
||
## Plan | ||
|
||
1. Add `--zipPods {JSON file}` option. The JSON file contains a list of CocoaPods | ||
along with an optional version specifier. If the version is not specified, a CocoaPods | ||
install will determine the version - typically the latest, unless another pod requires | ||
something lower. | ||
|
||
1. Add `--minimumIOSVersion {version}` option. Specify the minimum iOS version to support. | ||
Default is 8.0. | ||
|
||
1. Add `--archs {archs list}` option. Default is "arm64, arm64e, armv7, i386, x86_64" | ||
|
||
Unlike the Firebase zip build which builds a two-level zip file with a configurable set of | ||
installation, when `--zipPods` is specified a single zip file of frameworks will be created. | ||
|
||
## Future Directions | ||
|
||
* Binary support for Catalyst | ||
* Migrate to building `.xcframeworks` instead of `.frameworks` | ||
* Other Apple platforms besides iOS | ||
* Swift Package Manager | ||
* Dynamic Framework support | ||
* More option customization |