@@ -159,11 +159,17 @@ platform :ios do
159159 UI . important ( "Warning: Could not find main provisioning profile '#{ main_profile } '" )
160160 end
161161
162- # Re-sign embedded frameworks
162+ # Extract entitlements from the already-signed app in the archive
163+ # (codesign -d --entitlements extracts the embedded entitlements)
164+ main_entitlements_file = File . join ( export_path , "main.entitlements.plist" )
165+ sh ( "codesign -d --entitlements '#{ main_entitlements_file } ' '#{ exported_app } ' 2>/dev/null || true" )
166+ has_main_entitlements = File . exist? ( main_entitlements_file ) && File . size ( main_entitlements_file ) > 0
167+
168+ # Re-sign embedded frameworks (no entitlements needed for frameworks)
163169 frameworks_path = File . join ( exported_app , "Frameworks" )
164170 if File . directory? ( frameworks_path )
165171 Dir [ "#{ frameworks_path } /*.framework" , "#{ frameworks_path } /*.dylib" ] . each do |fw |
166- sh ( "codesign --force --sign '#{ sign_identity } ' --keychain '#{ keychain_path } ' --timestamp=none '#{ fw } '" )
172+ sh ( "codesign --force --sign '#{ sign_identity } ' --keychain '#{ keychain_path } ' --timestamp '#{ fw } '" )
167173 end
168174 end
169175
@@ -176,23 +182,24 @@ platform :ios do
176182 appex_fw = File . join ( appex , "Frameworks" )
177183 if File . directory? ( appex_fw )
178184 Dir [ "#{ appex_fw } /*.framework" , "#{ appex_fw } /*.dylib" ] . each do |fw |
179- sh ( "codesign --force --sign '#{ sign_identity } ' --keychain '#{ keychain_path } ' --timestamp=none '#{ fw } '" )
185+ sh ( "codesign --force --sign '#{ sign_identity } ' --keychain '#{ keychain_path } ' --timestamp '#{ fw } '" )
180186 end
181187 end
182- entitlements_appex = File . join ( appex , "archived-expanded-entitlements.xcent" )
183- if File . exist? ( entitlements_appex )
184- sh ( "codesign --force --sign '#{ sign_identity } ' --keychain '#{ keychain_path } ' --entitlements '#{ entitlements_appex } ' --timestamp=none '#{ appex } '" )
188+ # Extract extension entitlements from existing signature
189+ ext_entitlements_file = File . join ( export_path , "ext_#{ File . basename ( appex ) } .entitlements.plist" )
190+ sh ( "codesign -d --entitlements '#{ ext_entitlements_file } ' '#{ appex } ' 2>/dev/null || true" )
191+ if File . exist? ( ext_entitlements_file ) && File . size ( ext_entitlements_file ) > 0
192+ sh ( "codesign --force --sign '#{ sign_identity } ' --keychain '#{ keychain_path } ' --entitlements '#{ ext_entitlements_file } ' --timestamp '#{ appex } '" )
185193 else
186- sh ( "codesign --force --sign '#{ sign_identity } ' --keychain '#{ keychain_path } ' --timestamp=none '#{ appex } '" )
194+ sh ( "codesign --force --sign '#{ sign_identity } ' --keychain '#{ keychain_path } ' --timestamp '#{ appex } '" )
187195 end
188196 end
189197
190198 # Re-sign the main app bundle
191- entitlements_main = File . join ( exported_app , "archived-expanded-entitlements.xcent" )
192- if File . exist? ( entitlements_main )
193- sh ( "codesign --force --sign '#{ sign_identity } ' --keychain '#{ keychain_path } ' --entitlements '#{ entitlements_main } ' --timestamp=none '#{ exported_app } '" )
199+ if has_main_entitlements
200+ sh ( "codesign --force --sign '#{ sign_identity } ' --keychain '#{ keychain_path } ' --entitlements '#{ main_entitlements_file } ' --timestamp '#{ exported_app } '" )
194201 else
195- sh ( "codesign --force --sign '#{ sign_identity } ' --keychain '#{ keychain_path } ' --timestamp=none '#{ exported_app } '" )
202+ sh ( "codesign --force --sign '#{ sign_identity } ' --keychain '#{ keychain_path } ' --timestamp '#{ exported_app } '" )
196203 end
197204
198205 ipa_output = File . join ( export_path , "Code.ipa" )
0 commit comments