@@ -102,6 +102,13 @@ let schemes = [
102102 " FirebaseGoogleAuthUI " ,
103103]
104104
105+ let staticLibs = [
106+ " Database " : " FirebaseDatabaseUI " ,
107+ " Auth " : " FirebaseAuthUI " ,
108+ " Facebook " : " FirebaseFacebookAuthUI " ,
109+ " Google " : " FirebaseGoogleAuthUI " ,
110+ ]
111+
105112// make folder structure for built products
106113schemes. forEach { scheme in
107114 let schemeDir = BuiltProductsDir + scheme
@@ -110,9 +117,23 @@ schemes.forEach { scheme in
110117}
111118
112119// Invoke xcodebuild, building each scheme in
113- // release for each target sdk
114- let builds = sdks. flatMap { sdk in
115- return schemes. map { scheme in
120+ // release for each target sdk. Building
121+ // dynamic frameworks so we don't have to do
122+ // the asset bundling and folder structures manually,
123+ // at the costs of lots of duplication. Not sure if ideal.
124+ let builds = schemes. map { scheme in
125+ return Build ( [
126+ " -workspace " : " FirebaseUI.xcworkspace " ,
127+ " -scheme " : scheme,
128+ " -configuration " : " Release " ,
129+ " -sdk " : sdks [ 0 ] ,
130+ " -derivedDataPath " : DerivedDataDir,
131+ ] )
132+ }
133+
134+ let staticBuilds : [ Build ] = sdks. flatMap { sdk -> [ Build ] in
135+ let schemeNames = Array ( staticLibs. keys)
136+ return schemeNames. map { scheme -> Build in
116137 return Build ( [
117138 " -workspace " : " FirebaseUI.xcworkspace " ,
118139 " -scheme " : scheme,
@@ -124,6 +145,7 @@ let builds = sdks.flatMap { sdk in
124145}
125146
126147builds. forEach { $0. launch ( ) }
148+ staticBuilds. forEach { $0. launch ( ) }
127149
128150// Copy frameworks into built products dir. Don't really
129151// care about sdk here since we're gonna lipo everything later
@@ -161,16 +183,16 @@ let productsPaths = sdks.map {
161183}
162184
163185// create lipo tasks from built products
164- let lipos : [ Lipo ] = schemes. map { scheme in
165- let framework = " \( scheme) .framework "
166- let binary = scheme
186+ let lipos : [ Lipo ] = Array ( staticLibs. keys) . map { scheme in
187+ let product = staticLibs [ scheme] !
188+ let framework = " \( product) .framework "
189+ let binary = " lib \( scheme) .a "
167190
168- let lib = " \( scheme) .framework/ \( scheme) "
169191 let chunks = productsPaths. map { path in
170- return path + lib
192+ return path + binary
171193 }
172194
173- let output = " \( BuiltProductsDir) \( scheme ) /Frameworks/ \( framework) / \( binary ) "
195+ let output = " \( BuiltProductsDir) \( product ) /Frameworks/ \( framework) / \( product ) "
174196 return Lipo ( inputs: chunks, output: output)
175197}
176198
0 commit comments