7. 1. Sign into the Provisioning Portal.
2. Create an app ID.
3. Create a distribution certificate.
4. Install distribution certificate.
5. Create provisioning profile.
6. Download and install profile.
7. Fight with Xcode’s profile management for some time.
8. Tell Xcode to use the profile for distribution.
9. Build.
10. Export archive.
11. Upload to TestFlight, App Store, HockeyApp, etc.
( D E LI B E R AT E LY S MAL L )
8. T H I S M A K ES I O S
D E VE L O PM E N T
SL OW A N D D U L L .
9. – Y O U
I D O N ’ T D O T H I S
V E RY O F T E N .
W H Y D O I C A RE ?
10. PE O PL E D O N ’ T C A RE
E N O U G H A B O U T I T.
BU T T H E Y A LWAYS
C O M PL A I N .
21. SI G N I N
hamper auth login --email your@email.com --password passwd
Authenticating user...
User successfully authenticated.
(Password stored in the device’s keychain for future requests)
22. A PP I D RE G IST RAT I O N
hamper identifier create --app_name MyApp
--bundle_id com.mxl.new_app
Generating app ID...
App ID successfully generated.
23. C E RT I F I C AT E G E N E RAT I O N
hamper cert create distribution --csr_path /request.csr
--cert_path /out.cer
--bundle_id com.mxl.new_app
...
Generating certificate (this could take a minute)...
Certificate successfully generated.
Downloading certificate (this could take a minute)...
Certificate successfully downloaded (/Users/kiran/out.cer).
openssl genrsa -out private.key 2048
openssl req -new -key private.key -out request.csr
Using openssl to generate key and CSR
Generate a certificate
24. PRO V I SI O N I N G P RO F I L E C RE AT I O N
...
Waiting for Apple to generate profile (this could take a
minute)...
Provisioning profile successfully generated.
Downloading provisioning profile...
Profile successfully downloaded (/Users/kiran/p.mobileprovision).
hamper profile create app_store --name MyApp_Production
--bundle_id com.kp.my_app
--profile_path p.mobileprovision
--exp_day 20
--exp_month 04
--exp_year 2015
26. T O T H E A PP
ST O RE !
Using Hamper with Shenzhen (Mattt Thompson)
27. RE G IST E R A N A PP
hamper identifier create --app_name MyApp
--bundle_id com.mxl.new_app
Generating app ID...
App ID successfully generated.
28. G E N E RAT E T H E P RO F I L E
Waiting for Apple to generate profile (this could take a
minute)...
Provisioning profile successfully generated.
Downloading provisioning profile...
Profile successfully downloaded (/Users/kiran/p.mobileprovision).
hamper profile create app_store --name MyApp_Production
--bundle_id com.mxl.new_app
--profile_path p.mobileprovision
--exp_day 20
--exp_month 04
--exp_year 2015
29. I NSTA L L T H E PRO F I L E
uuid=`grep UUID -A1 -a p.mobileprovision |
grep -io "[-A-Z0-9]{36}"`
cp p.mobileprovision ~/Library/MobileDevice/Provisioning
Profiles/$uuid.mobileprovision
H O L D O N T O T H AT U U I D , W E ’ RE G O I N G T O N E E D I T I N T H E N E X T S T E P
30. B U I L D A N D A RC H I VE
xcodebuild archive -workspace my_app.xcworkspace
-scheme MyApp
-archivePath output.xcarchive
PROVISIONING_PROFILE=$uuid
xcodebuild -exportArchive -archivePath output.xcarchive
-exportPath ./
-exportFormat ipa
-exportProvisioningProfile p.mobileprovision
31. U PL OA D !
ipa distribute:itunesconnect -a me@email.com -p passwd -i 234234235
--upload
U S I N G S H E N Z H E N
32. W H AT ’ S N E X T ?
• Prompting interface.
• Integration with openssl to generate CSRs.
• Integration with iTunes Connect to create an app, fill out metadata.
• General reliability improvements.
B E CAU S E I T ’ S I N B E TA .
33. T H A N K S !
G I T H U B . C O M / M O B I L E X LAB S / HAM P E R
34. K I RA N PA N ES A R
E N G I N E E R I N G . M O B I L E X LAB S . C O M
@ K _ PAN E SAR
K I R AN @ M O B I L E X LAB S . C O M