Successfully reported this slideshow.
Your SlideShare is downloading. ×

Your XCode project can do more than you think

Your XCode project can do more than you think

Download to read offline

How to be a lazy developer and better manage your application development lifecycle. Discover how to leverage build settings and build schemes to simplify and make your deployment more robust when switching from development to app store distribution.

How to be a lazy developer and better manage your application development lifecycle. Discover how to leverage build settings and build schemes to simplify and make your deployment more robust when switching from development to app store distribution.

More Related Content

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

Your XCode project can do more than you think

  1. 1. Your .xcodeproj can do more than you think or How to be a lazy ass developer Florent Vilmart - @mrf12t - Soevolved - I Can Go Without
  2. 2. What's the big deal? Live vs dev vs staging... • Manage development cycle • Not making ANY mistakes • Reduce clutter • Be lazy
  3. 3. The big question? How do I manage to get multiple apps that are (almost) the same app?
  4. 4. What's an app? • CFBundleIdentifer (com.awesome.$ {PRODUCT_NAME:rfc1034identifier} • CFBundleIcons • CFBundleDisplayName (My App!) • CFBundleURLTypes (External open, FB callback...) • + other things (like your awesome code)
  5. 5. Where to start? • Multiple targets • Same target but different plist • Same target, same plist, custom settings
  6. 6. The strategy • Single target • Single Plist • 3 Build Configurations • App Store (live release) • Debug (simulator and device dev) • Release (Testflight distribution of dev)
  7. 7. Build settings and macros • PRODUCT_NAME • App Store : myawesomeapp • Release+Debug : myawesomeapp-dev • User defined: FACEBOOK_APP_ID, PARSE_APP_ID, PARSE_CLIENT_KEY...
  8. 8. myawesomeapp.plist • CustomKey = ${USER_DEFINED_KEY} • Easy access in the app, the build configuration defines whatever you like • Ease of configuration duplication
  9. 9. Custom Everything? • Icon file: • appIcon${PRODUCT_NAME}@2x.png • App Name: • ${MY_CUSTOM_APP_NAME} • URLS? • Same F****N way!
  10. 10. What do we got now? • Single app • Single source • Unlimited possibilities • Just switch the target/scheme in order to distribute properly
  11. 11. Bonus: Ultra Lazy Distribution I want to ${BREW_MORE_COFFEE} while my app get distributed to my testers.
  12. 12. Extreme Lazyness 1. Archive the app 2. Sign the package 3. Get the git logs 4. Upload to TestFlight 5. Notify the distribution list
  13. 13. Let's have a look • https://gist.github.com/vfloz/7434106

×