Your .xcodeproj can
do more than you think
or How to be a lazy ass developer

Florent Vilmart - @mrf12t - Soevolved - I Ca...
What's the big deal?
Live vs dev vs staging...
• Manage development cycle
• Not making ANY mistakes
• Reduce clutter
• Be ...
The big question?
How do I manage to get multiple
apps that are (almost) the same
app?
What's an app?
• CFBundleIdentifer (com.awesome.$
{PRODUCT_NAME:rfc1034identifier}
• CFBundleIcons
• CFBundleDisplayName (M...
Where to start?
• Multiple targets
• Same target but different plist
• Same target, same plist, custom settings
The strategy
• Single target
• Single Plist
• 3 Build Configurations
• App Store (live release)
• Debug (simulator and devi...
Build settings and
macros
• PRODUCT_NAME
• App Store : myawesomeapp
• Release+Debug : myawesomeapp-dev
• User defined: FACE...
myawesomeapp.plist
• CustomKey = ${USER_DEFINED_KEY}
• Easy access in the app, the build
configuration defines whatever you ...
Custom Everything?
• Icon file:
• appIcon${PRODUCT_NAME}@2x.png
• App Name:
• ${MY_CUSTOM_APP_NAME}
• URLS?
• Same F****N w...
What do we got now?
• Single app
• Single source
• Unlimited possibilities
• Just switch the target/scheme in order to
dis...
Bonus: Ultra Lazy
Distribution
I want to

${BREW_MORE_COFFEE}
while my app get distributed
to my testers.
Extreme Lazyness
1. Archive the app
2. Sign the package
3. Get the git logs
4. Upload to TestFlight
5. Notify the distribu...
Let's have a look

• https://gist.github.com/vfloz/7434106
Upcoming SlideShare
Loading in …5
×

Your XCode project can do more than you think

778 views

Published on

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.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
778
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

×