WWDC was great; my first time there. Fun, nostalgic, and exciting. Yes, I waited in line at 3:30am for the keynote.1 No, I’m not doing that again. I’m a practical fan. :)
I spent most of my lab time with the Xcode devs. They gave me some tips and tricks and cleared up lots of confusion I’ve had as the tools evolved. I’ll be rolling out some posts about them soon (git submodules!), but I figured I’d throw out a few quickies.
You no longer need an “Ad Hoc” build configuration. Remember way back when the walk-through documentation made you duplicate the “Release” build config and rename it “Ad Hoc”? And then the only thing you changed in that build config was the provisioning profile? No longer. Sharing or submitting an archive gives you a chance to re-sign the application. So, I just set my “Release” build config to use my ad hoc profile and deleted my “Ad Hoc” build config that I had set up from the Xcode 3 days.
.ipaFiles From Shell Scripts
I wanted to automatically generate
.ipa files for ad hoc distribution
whenever I build. A shell script to do so would look like this:
SIGNING_IDENTITY="..." PROVISIONING_PROFILE="..." xcrun -sdk iphoneos PackageApplication "$CODESIGNING_FOLDER_PATH" \ -o "ad_hoc_file.ipa" \ --sign "$SIGNING_IDENTITY" \ --embed "$PROVISIONING_PROFILE" # $CODESIGNING_FOLDER_PATH is provided by Xcode during build time. # It's the final build path to the `.app` bundle # $SIGNING_IDENTITY is the text identifier of your signing certificate. # You can list then yourself by running # `security find-identity -p codesigning -v` # and use the text in double quotes. # $PROVISIONING_PROFILE is the actual `.mobileprovision` file you get # from the Developer Provisioning Portal.
With this command, you get an
.ipa file written wherever you point the
option. I put this as a “Run Script” build phase so that any time I build the
application, it automatically packages it up for me. That way, I’ll never
forget to export an up-to-date
.ipa before running my TestFlight submission
But, I’m bummed that I have to hard code the signing identity and provisioning profile path into the script. I checked in the environment variables exported by the Xcode build process but didn’t find anything I could use to inject them here. I’ll keep digging, but this is at least a good start.2
inside the Xcode project’s build environment.
PackageApplication is one of
many binaries used by Xcode for some of it’s magic. As of right now, it’s
with some other goodies. Could be a good place to explore.
There are so many good things coming in iOS 5. Apple has some pretty forward thinking ideas about Objective-C. I still think they should consider MacRuby more seriously, and they may do so in the future, but for now they’re moving in interesting directions with the tools at hand.✦ Permalink