Skip to content

Commit 737e3b9

Browse files
authored
Zip Builder V2 Plan (#4341)
1 parent c097f99 commit 737e3b9

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed

ZipBuilder/ZipBuilderV2Plan.md

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
V2 will add an option to generate a zip distribution of binary frameworks from an arbitrary list
2+
of source and binary CocoaPods.
3+
4+
## Introduction
5+
6+
The current [Zip Builder](https://github.com/firebase/firebase-ios-sdk/tree/master/ZipBuilder)
7+
is Firebase specific. This is a proposal and initial plan to evolve the Zip Builder into a
8+
multi-purpose Apple binary framework creation tool.
9+
10+
It would be useful to have a generic
11+
Zip Builder for other Google SDKs and other open source projects. In addition,
12+
providing a generic Zip Builder would enable Firebase users to generate binary
13+
frameworks for configurations outside the standard zip and Carthage distributions
14+
released in the standard Firebase release process.
15+
16+
With the extra flexibility, the Zip Builder will be useful for both SDK distributors
17+
to package binary distributions and app developers who want a customized binary
18+
distribution that maps exactly to their app's requirements and provides a clean
19+
build time speed up.
20+
21+
22+
## Background
23+
24+
A more flexible Zip Builder would enable the following scenarios:
25+
26+
* Creating a zip distribution from an arbitrary set of pods
27+
* Support different building different sets of platform slices
28+
* Support building with different Xcode versions
29+
* Build only the subspecs needed for use case
30+
* [Existing solutions](https://github.com/firebase/firebase-ios-sdk/issues/4284#issuecomment-552677044)
31+
are intermittently maintained and written in Ruby. A Swift implementation is
32+
more accessible and maintainable by the Apple community.
33+
* The Swift implementation will be easier to add Swift Package Manager support for which
34+
there will likely be a need since Swift Package Manager is even more source-centric than
35+
CocoaPods.
36+
37+
## Plan
38+
39+
1. Add `--zipPods {JSON file}` option. The JSON file contains a list of CocoaPods
40+
along with an optional version specifier. If the version is not specified, a CocoaPods
41+
install will determine the version - typically the latest, unless another pod requires
42+
something lower.
43+
44+
1. Add `--minimumIOSVersion {version}` option. Specify the minimum iOS version to support.
45+
Default is 8.0.
46+
47+
1. Add `--archs {archs list}` option. Default is "arm64, arm64e, armv7, i386, x86_64"
48+
49+
Unlike the Firebase zip build which builds a two-level zip file with a configurable set of
50+
installation, when `--zipPods` is specified a single zip file of frameworks will be created.
51+
52+
## Future Directions
53+
54+
* Binary support for Catalyst
55+
* Migrate to building `.xcframeworks` instead of `.frameworks`
56+
* Other Apple platforms besides iOS
57+
* Swift Package Manager
58+
* Dynamic Framework support
59+
* More option customization

0 commit comments

Comments
 (0)