Context · Currently working on a project for a super secret client I can't tell you about but OMG it's cool · Working on reusable components for other teams in the company · Unable to give them access to the sources (for now)
Switching to the command line with lipo lipo -info BeingNiceIsNice.framework/BeingNiceIsNice Architectures are: i386 x86_64 Architectures are: * i386 * x86_64
Merging the frameworks? Lipo is a command line tool to interact with universal files. So let's interact. lipo -create -output "BeingNiceIsNice.framework/BeingNiceIsNice" \ "build/Release-iphoneos/BeingNiceIsNice.framework/BeingNiceIsNice" \ "build/Release-iphonesimulator/BeingNiceIsNice.framework/BeingNiceIsNice"
Add the missing slices · Copy the *.swiftmodule file from the simulator framework to the new one cp -r "BeingNiceIsNice.framework/Modules/BeingNiceIsNice.swiftmodule/" "BeingNiceIsNice.framework/Modules/BeingNiceIsNice.swiftmodule"
What did we do? · Built the framework for the simulator architectures · Built the framework for the devices architectures · Merged two frameworks into a single one
Fastlane · Fastlane is the easiest way to automate building and releasing apps (seriously) · Written in ruby · 500+ contributors · Great documentation · Great community
Bump the version number new_version = version_bump_podspec('BeingNiceIsNice.podspec') set_info_plist_value( path: 'BeingNiceIsNice/Info.plist', key: "CFBundleShortVersionString", value: new_version )
Make it available via cocoapods Pod::Spec.new do |s| s.name = "BeingNiceIsNice" s.version = "0.4.6" # ... s.source = { :http => "http://some-server.com/BeingNiceIsNice-#{s.version}.zip" } s.vendored_frameworks = "BeingNiceIsNice.framework" end
Using the framework source 'secret-podspecs' # ⚠ target 'BeingNiceIsHard' do # Comment the next line if you're not using Swift and don't want to use dynamic frameworks use_frameworks! pod 'BeingNiceIsNice' end