SlideShare ist ein Scribd-Unternehmen logo
1 von 83
Downloaden Sie, um offline zu lesen
Advanced App
                              Building
                            Tips, Tricks & Lessons Learned




Wednesday, February 6, 13
Jay Graves
                                CTO




Wednesday, February 6, 13
Lots of Apps


Wednesday, February 6, 13
Ship It




Wednesday, February 6, 13
Ship It




Wednesday, February 6, 13
Provisioning Profiles




Wednesday, February 6, 13
Provisioning Profiles
                            How do they work?




Wednesday, February 6, 13
Provisioning Profiles
                            What are they?



                                        SMIME / PKCS#7

                                        Originally designed for email signing & encryption.


Wednesday, February 6, 13
Read a Provisioning Profile
                            vim




Wednesday, February 6, 13
Read a Provisioning Profile
                            openssl

                  openssl smime -in ./your.mobileprovision -inform der -verify



                    openssl smime -in /path/to/your.mobileprovision -inform der
                                         -verify -noverify




                             https://skabber.snipt.net/provisioning-profile-tips-tricks/
Wednesday, February 6, 13
Important Values
                            application-identifier



                       <key>application-identifier</key>

                       <string>ABCDEFGHIJK.com.your.bundleid</string>




Wednesday, February 6, 13
Important Values
                            Entitlements
                       <key>Entitlements</key>
                       <dict>
                       ...
                       <key>com.apple.developer.ubiquity-container-
                       identifiers</key>
                       ...
                       <key>com.apple.developer.ubiquity-kvstore-
                       identifier</key>
                       ...
                       <key>get-task-allow</key>
                       ...
                       </dict>
Wednesday, February 6, 13
Important Values
                            ProvisionedDevices



                       <key>ProvisionedDevices</key>
                       <array>
                       <string>7af8ee3af8e4e13193bd834bab50e1d...</string>
                       <string>a9f0d0477a6d3e8dad0ff984f7ba77e...</string>
                       </array>




Wednesday, February 6, 13
Important Values
                            UUID



                       <key>UUID</key>

                       <string>E0EF8ACE-E83A-475C-9DA7-C67A147659FD</
                       string>




Wednesday, February 6, 13
Important Values
                            DeveloperCertificates


                       <key>DeveloperCertificates</key>
                       ! <array>
                       ! ! <data>
                       MIIFnDCCBISgAwIBAgIIEIdrqpJlb9MwDQYJKoZIhvcNAQEFBQAwgZYxCzAJ
                       BgNVBAYTAlVTMRMwEQYDVQQKDApBcHBsZSBJbmMuMSwwKgYDVQQLDCNBcHBs
                       ZSBXb3JsZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9uczFEMEIGA1UEAww7QXBw
                       bGUgV29ybGR3aWRlIERldmVsb3BlciBSZWxhdGlvbnMgQ2VydGlmaWNhdGlv
                       ...




Wednesday, February 6, 13
Important Values
                            DeveloperCertificates


                       -----BEGIN CERTIFICATE-----
                       MIIFnDCCBISgAwIBAgIIEIdrqpJlb9MwDQYJKoZIhvcNAQEFBQAwgZYxCzAJ
                       BgNVBAYTAlVTMRMwEQYDVQQKDApBcHBsZSBJbmMuMSwwKgYDVQQLDCNBcHBs
                       ZSBXb3JsZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9uczFEMEIGA1UEAww7QXBw
                       bGUgV29ybGR3aWRlIERldmVsb3BlciBSZWxhdGlvbnMgQ2VydGlmaWNhdGlv
                       ...
                       -----END CERTIFICATE-----




Wednesday, February 6, 13
Important Values
                            DeveloperCertificates


                       -----BEGIN CERTIFICATE-----
                       MIIFnDCCBISgAwIBAgIIEIdrqpJlb9MwDQYJKoZIhvcNAQEFBQAwgZYxCzAJ
                       BgNVBAYTAlVTMRMwEQYDVQQKDApBcHBsZSBJbmMuMSwwKgYDVQQLDCNBcHBs
                       ZSBXb3JsZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9uczFEMEIGA1UEAww7QXBw
                       bGUgV29ybGR3aWRlIERldmVsb3BlciBSZWxhdGlvbnMgQ2VydGlmaWNhdGlv
                       ...
                       -----END CERTIFICATE-----




                                  openssl x509 -text -in cert.pem

Wednesday, February 6, 13
Important Values
                            DeveloperCertificates

                       Certificate:
                           Data:
                               Version: 3 (0x2)
                               Serial Number:
                                    10:87:6b:aa:92:65:6f:d3
                               Signature Algorithm: sha1WithRSAEncryption
                               Issuer: C=US, O=Apple Inc., OU=Apple Worldwide Developer Relations, CN=Apple Worldwide
                       Developer Relations Certification Authority
                               Validity
                                    Not Before: Nov 3 21:38:10 2012 GMT
                                    Not After : Nov 3 21:38:10 2013 GMT
                               Subject: UID=9K9F9LCV74, CN=iPhone Distribution: Massively Overrated, OU=9K9F9LCV74,
                       O=Massively Overrated, C=US
                               Subject Public Key Info:
                                    Public Key Algorithm: rsaEncryption
                                    RSA Public Key: (2048 bit)
                                        Modulus (2048 bit):
                                            00:c8:57:f9:cf:af:c2:4d:7a:8a:16:62:47:4b:c2:




Wednesday, February 6, 13
Install a Provisioning Profile




Wednesday, February 6, 13
Install a Provisioning Profile
                            Don’t double click them.




                                                  Not human readable.


Wednesday, February 6, 13
Install a Provisioning Profile
                            Drag them into the Finder




                             ~/Library/MobileDevice/Provisioning Profiles




Wednesday, February 6, 13
Install a Provisioning Profile
                            Drag them into the Finder




Wednesday, February 6, 13
Install a Provisioning Profile
                            Drag them into the Finder




                                                   Much better
Wednesday, February 6, 13
Tools for using Provisioning Profiles
                            Terminal.app




Wednesday, February 6, 13
Tools for using Provisioning Profiles
                            Terminal.app - bash alias



                  alias prov='openssl smime -inform der -verify -in'




Wednesday, February 6, 13
Tools for using Provisioning Profiles
                            Quicklook Plugin




                                        http://www.macmation.com/blog/2011/10/quicklook-plugin-for-mobile-provision-files/

Wednesday, February 6, 13
Tools for using Provisioning Profiles
                            Automator Service




Wednesday, February 6, 13
Tools for using Provisioning Profiles
                            Automator Service




                                                http://cl.ly/MTZb


Wednesday, February 6, 13
Tools for using Provisioning Profiles
                            Automator Service




Wednesday, February 6, 13
Xcode


Wednesday, February 6, 13
Xcode
                            How does it see profiles?




Wednesday, February 6, 13
Xcode
                            How does it see profiles?




                            CODE_SIGN_IDENTITY = "iPhone Developer";


Wednesday, February 6, 13
Xcode
                            How does it see profiles?




                            CODE_SIGN_IDENTITY = "iPhone Developer";
                            PROVISIONING_PROFILE = "";
Wednesday, February 6, 13
Xcode
                            How does it see profiles?




Wednesday, February 6, 13
Xcode
                            How does it see profiles?




                            CODE_SIGN_IDENTITY = "iPhone Developer: Jay Graves (E6L876QFM6)";




Wednesday, February 6, 13
Xcode
                            How does it see profiles?




                            CODE_SIGN_IDENTITY = "iPhone Developer: Jay Graves (E6L876QFM6)";

                            PROVISIONING_PROFILE = "0FEB5831-22D3-4B1D-A973-59ED243E8103";

Wednesday, February 6, 13
Xcode
                            Build error




Wednesday, February 6, 13
Xcode
                            Build error




Wednesday, February 6, 13
Xcode
                            Update the profile.




Wednesday, February 6, 13
Xcode
                            Update the profile.




Wednesday, February 6, 13
Xcode
                            Project Diff




Wednesday, February 6, 13
What does all this mean?




Wednesday, February 6, 13
What does all this mean?
                            •Automatic Profiles
                             •Good if you don’t have multiple projects.
                             •It can select the wrong profile.
                             •Rules on automatic selection are not defined.




Wednesday, February 6, 13
What does all this mean?
                            •Automatic Profiles
                             •Good if you don’t have multiple projects.
                             •It can select the wrong profile.
                             •Rules on automatic selection are not defined.
                            •Specific Profiles
                             •Much more control over which profile is selected.
                             •Can be a pain to update the project file every time a profile is updated.




Wednesday, February 6, 13
Wednesday, February 6, 13
Wednesday, February 6, 13
Scenario


Wednesday, February 6, 13
Scenario
                            1 Project   2 Builds




Wednesday, February 6, 13
Multiple Build Scenario
                            Possible Solutions




Wednesday, February 6, 13
Multiple Build Scenario
                            Possible Solutions

                            •Add a Duplicate Target




Wednesday, February 6, 13
Multiple Build Scenario
                            Possible Solutions

                            •Add a Duplicate Target
                             •Large project file change




Wednesday, February 6, 13
Multiple Build Scenario
                            Possible Solutions

                            •Add a Duplicate Target
                             •Large project file change
                             •Duplicated all of the Configurations




Wednesday, February 6, 13
Multiple Build Scenario
                            Possible Solutions

                            •Add a Duplicate Target
                             •Large project file change
                             •Duplicated all of the Configurations
                             •A 2nd info.plist has been created.




Wednesday, February 6, 13
Multiple Build Scenario
                            Possible Solutions

                            •Add a Duplicate Target
                             •Large project file change
                             •Duplicated all of the Configurations
                             •A 2nd info.plist has been created.




Wednesday, February 6, 13
Multiple Build Scenario
                            Possible Solutions

                            •Add a Duplicate Target
                             •Large project file change
                             •Duplicated all of the Configurations
                             •A 2nd info.plist has been created.

                            • Add a new Configuration




Wednesday, February 6, 13
Multiple Build Scenario
                            Possible Solutions

                            •Add a Duplicate Target
                             •Large project file change
                             •Duplicated all of the Configurations
                             •A 2nd info.plist has been created.

                            • Add a new Configuration
                              •Still a large project file change




Wednesday, February 6, 13
Multiple Build Scenario
                            Possible Solutions

                            •Add a Duplicate Target
                             •Large project file change
                             •Duplicated all of the Configurations
                             •A 2nd info.plist has been created.

                            • Add a new Configuration
                              •Still a large project file change
                              •Still duplicated all the build options




Wednesday, February 6, 13
Multiple Build Scenario
                            Possible Solutions

                            •Add a Duplicate Target
                             •Large project file change
                             •Duplicated all of the Configurations
                             •A 2nd info.plist has been created.

                            • Add a new Configuration
                              •Still a large project file change
                              •Still duplicated all the build options
                              •Easy to forget new build options



Wednesday, February 6, 13
Multiple Build Scenario
                            A better solution




Wednesday, February 6, 13
Multiple Build Scenario
                            A better solution




                                                .xcconfig file


Wednesday, February 6, 13
Multiple Build Scenario
                            Create a .xcconfig file




Wednesday, February 6, 13
Multiple Build Scenario
                            Create a .xcconfig file



                        CODE_SIGN_IDENTITY = iPhone Distribution: Double Encore

                       PROVISIONING_PROFILE = 1203C18-8F08-45D8-A5AC-76AD9319CDDC




Wednesday, February 6, 13
Multiple Build Scenario
                            Build with a .xcconfig file




                                 xcodebuild -xcconfig second_build.xcconfig




Wednesday, February 6, 13
Surprise?




Wednesday, February 6, 13
Surprise?




Wednesday, February 6, 13
Surprise?




Wednesday, February 6, 13
Surprise?




Wednesday, February 6, 13
Surprise?




Wednesday, February 6, 13
OK, OK, Enough with the
                             Provisioning Profiles
                                    already.

Wednesday, February 6, 13
Keychain
                             Access

Wednesday, February 6, 13
Multiple Keychains




Wednesday, February 6, 13
Switch Keychains
                            unlock keychain



              security default-keychain -d user -s /FULLPATH/My.keychain
              security unlock-keychain -p ******* /FULLPATH/My.keychain




Wednesday, February 6, 13
Switch Keychains
                            unlock keychain



                     Error: User interaction is not allowed.




Wednesday, February 6, 13
Switch Keychains
                            unlock keychain




Wednesday, February 6, 13
Wednesday, February 6, 13
OTA Install


Wednesday, February 6, 13
md5
                            checksum




Wednesday, February 6, 13
md5 checksum
                            doesn’t work




Wednesday, February 6, 13
md5 checksum
                            doesn’t work




Wednesday, February 6, 13
Install multiple apps
                            at the same time




Wednesday, February 6, 13
Install multiple apps
                            at the same time




Wednesday, February 6, 13
Install multiple apps
                            at the same time




Wednesday, February 6, 13
Thank You
                            jay@doubleencore.com
                            @skabber




Wednesday, February 6, 13

Weitere ähnliche Inhalte

Ähnlich wie Advanced App Building - Tips, Tricks & Lessons Learned

Provisioning profiles like a Pro
Provisioning profiles like a ProProvisioning profiles like a Pro
Provisioning profiles like a ProJay Graves
 
SQL Server Scheduling Basics
SQL Server Scheduling BasicsSQL Server Scheduling Basics
SQL Server Scheduling BasicsAmit Banerjee
 
Enterprise Maven Repository BOF
Enterprise Maven Repository BOFEnterprise Maven Repository BOF
Enterprise Maven Repository BOFMax Andersen
 
Unleashing the Rails Asset Pipeline
Unleashing the Rails Asset PipelineUnleashing the Rails Asset Pipeline
Unleashing the Rails Asset PipelineKenneth Kalmer
 
Oracle GoldenGate and Baseball - 5 Keys for Moving to the Cloud
Oracle GoldenGate and Baseball - 5 Keys for Moving to the CloudOracle GoldenGate and Baseball - 5 Keys for Moving to the Cloud
Oracle GoldenGate and Baseball - 5 Keys for Moving to the CloudBobby Curtis
 
Engineering culture
Engineering cultureEngineering culture
Engineering culturePamela Fox
 
Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)
Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)
Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)Cyrille Le Clerc
 
Writing SaltStack Modules - OpenWest 2013
Writing SaltStack Modules - OpenWest 2013Writing SaltStack Modules - OpenWest 2013
Writing SaltStack Modules - OpenWest 2013SaltStack
 
Cassandra Meetup: Real-time Analytics using Cassandra, Spark and Shark at Ooyala
Cassandra Meetup: Real-time Analytics using Cassandra, Spark and Shark at OoyalaCassandra Meetup: Real-time Analytics using Cassandra, Spark and Shark at Ooyala
Cassandra Meetup: Real-time Analytics using Cassandra, Spark and Shark at OoyalaDataStax Academy
 
iOSDevCamp 2011 - Getting "Test"-y: Test Driven Development & Automated Deplo...
iOSDevCamp 2011 - Getting "Test"-y: Test Driven Development & Automated Deplo...iOSDevCamp 2011 - Getting "Test"-y: Test Driven Development & Automated Deplo...
iOSDevCamp 2011 - Getting "Test"-y: Test Driven Development & Automated Deplo...Rudy Jahchan
 
Functional Reactive Programming in the Netflix API
Functional Reactive Programming in the Netflix APIFunctional Reactive Programming in the Netflix API
Functional Reactive Programming in the Netflix APIC4Media
 
Front-End Performance Starts On the Server
Front-End Performance Starts On the ServerFront-End Performance Starts On the Server
Front-End Performance Starts On the ServerJon Arne Sæterås
 
Catalyst And Chained
Catalyst And ChainedCatalyst And Chained
Catalyst And ChainedJay Shirley
 
#Interactive Session by Ashwini Lalit, RRR of Test Automation Maintenance" at...
#Interactive Session by Ashwini Lalit, RRR of Test Automation Maintenance" at...#Interactive Session by Ashwini Lalit, RRR of Test Automation Maintenance" at...
#Interactive Session by Ashwini Lalit, RRR of Test Automation Maintenance" at...Agile Testing Alliance
 
The State of Puppet
The State of PuppetThe State of Puppet
The State of PuppetPuppet
 
Juan Vazquez & Julián Vilas – Tú a Barcelona y yo a Tejas, a patadas con mi S...
Juan Vazquez & Julián Vilas – Tú a Barcelona y yo a Tejas, a patadas con mi S...Juan Vazquez & Julián Vilas – Tú a Barcelona y yo a Tejas, a patadas con mi S...
Juan Vazquez & Julián Vilas – Tú a Barcelona y yo a Tejas, a patadas con mi S...RootedCON
 
Easy logins for Ruby web applications
Easy logins for Ruby web applicationsEasy logins for Ruby web applications
Easy logins for Ruby web applicationsFrancois Marier
 

Ähnlich wie Advanced App Building - Tips, Tricks & Lessons Learned (20)

Provisioning profiles like a Pro
Provisioning profiles like a ProProvisioning profiles like a Pro
Provisioning profiles like a Pro
 
SQL Server Scheduling Basics
SQL Server Scheduling BasicsSQL Server Scheduling Basics
SQL Server Scheduling Basics
 
Enterprise Maven Repository BOF
Enterprise Maven Repository BOFEnterprise Maven Repository BOF
Enterprise Maven Repository BOF
 
Unleashing the Rails Asset Pipeline
Unleashing the Rails Asset PipelineUnleashing the Rails Asset Pipeline
Unleashing the Rails Asset Pipeline
 
Oracle GoldenGate and Baseball - 5 Keys for Moving to the Cloud
Oracle GoldenGate and Baseball - 5 Keys for Moving to the CloudOracle GoldenGate and Baseball - 5 Keys for Moving to the Cloud
Oracle GoldenGate and Baseball - 5 Keys for Moving to the Cloud
 
Engineering culture
Engineering cultureEngineering culture
Engineering culture
 
Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)
Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)
Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)
 
PhpStorm for WordPress
PhpStorm for WordPressPhpStorm for WordPress
PhpStorm for WordPress
 
Writing SaltStack Modules - OpenWest 2013
Writing SaltStack Modules - OpenWest 2013Writing SaltStack Modules - OpenWest 2013
Writing SaltStack Modules - OpenWest 2013
 
Cassandra Meetup: Real-time Analytics using Cassandra, Spark and Shark at Ooyala
Cassandra Meetup: Real-time Analytics using Cassandra, Spark and Shark at OoyalaCassandra Meetup: Real-time Analytics using Cassandra, Spark and Shark at Ooyala
Cassandra Meetup: Real-time Analytics using Cassandra, Spark and Shark at Ooyala
 
4-identifying-problems.pdf
4-identifying-problems.pdf4-identifying-problems.pdf
4-identifying-problems.pdf
 
iOSDevCamp 2011 - Getting "Test"-y: Test Driven Development & Automated Deplo...
iOSDevCamp 2011 - Getting "Test"-y: Test Driven Development & Automated Deplo...iOSDevCamp 2011 - Getting "Test"-y: Test Driven Development & Automated Deplo...
iOSDevCamp 2011 - Getting "Test"-y: Test Driven Development & Automated Deplo...
 
DevOpsDays Openstack Toolchains
DevOpsDays Openstack ToolchainsDevOpsDays Openstack Toolchains
DevOpsDays Openstack Toolchains
 
Functional Reactive Programming in the Netflix API
Functional Reactive Programming in the Netflix APIFunctional Reactive Programming in the Netflix API
Functional Reactive Programming in the Netflix API
 
Front-End Performance Starts On the Server
Front-End Performance Starts On the ServerFront-End Performance Starts On the Server
Front-End Performance Starts On the Server
 
Catalyst And Chained
Catalyst And ChainedCatalyst And Chained
Catalyst And Chained
 
#Interactive Session by Ashwini Lalit, RRR of Test Automation Maintenance" at...
#Interactive Session by Ashwini Lalit, RRR of Test Automation Maintenance" at...#Interactive Session by Ashwini Lalit, RRR of Test Automation Maintenance" at...
#Interactive Session by Ashwini Lalit, RRR of Test Automation Maintenance" at...
 
The State of Puppet
The State of PuppetThe State of Puppet
The State of Puppet
 
Juan Vazquez & Julián Vilas – Tú a Barcelona y yo a Tejas, a patadas con mi S...
Juan Vazquez & Julián Vilas – Tú a Barcelona y yo a Tejas, a patadas con mi S...Juan Vazquez & Julián Vilas – Tú a Barcelona y yo a Tejas, a patadas con mi S...
Juan Vazquez & Julián Vilas – Tú a Barcelona y yo a Tejas, a patadas con mi S...
 
Easy logins for Ruby web applications
Easy logins for Ruby web applicationsEasy logins for Ruby web applications
Easy logins for Ruby web applications
 

Kürzlich hochgeladen

Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 

Kürzlich hochgeladen (20)

Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 

Advanced App Building - Tips, Tricks & Lessons Learned

  • 1. Advanced App Building Tips, Tricks & Lessons Learned Wednesday, February 6, 13
  • 2. Jay Graves CTO Wednesday, February 6, 13
  • 3. Lots of Apps Wednesday, February 6, 13
  • 7. Provisioning Profiles How do they work? Wednesday, February 6, 13
  • 8. Provisioning Profiles What are they? SMIME / PKCS#7 Originally designed for email signing & encryption. Wednesday, February 6, 13
  • 9. Read a Provisioning Profile vim Wednesday, February 6, 13
  • 10. Read a Provisioning Profile openssl openssl smime -in ./your.mobileprovision -inform der -verify openssl smime -in /path/to/your.mobileprovision -inform der -verify -noverify https://skabber.snipt.net/provisioning-profile-tips-tricks/ Wednesday, February 6, 13
  • 11. Important Values application-identifier <key>application-identifier</key> <string>ABCDEFGHIJK.com.your.bundleid</string> Wednesday, February 6, 13
  • 12. Important Values Entitlements <key>Entitlements</key> <dict> ... <key>com.apple.developer.ubiquity-container- identifiers</key> ... <key>com.apple.developer.ubiquity-kvstore- identifier</key> ... <key>get-task-allow</key> ... </dict> Wednesday, February 6, 13
  • 13. Important Values ProvisionedDevices <key>ProvisionedDevices</key> <array> <string>7af8ee3af8e4e13193bd834bab50e1d...</string> <string>a9f0d0477a6d3e8dad0ff984f7ba77e...</string> </array> Wednesday, February 6, 13
  • 14. Important Values UUID <key>UUID</key> <string>E0EF8ACE-E83A-475C-9DA7-C67A147659FD</ string> Wednesday, February 6, 13
  • 15. Important Values DeveloperCertificates <key>DeveloperCertificates</key> ! <array> ! ! <data> MIIFnDCCBISgAwIBAgIIEIdrqpJlb9MwDQYJKoZIhvcNAQEFBQAwgZYxCzAJ BgNVBAYTAlVTMRMwEQYDVQQKDApBcHBsZSBJbmMuMSwwKgYDVQQLDCNBcHBs ZSBXb3JsZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9uczFEMEIGA1UEAww7QXBw bGUgV29ybGR3aWRlIERldmVsb3BlciBSZWxhdGlvbnMgQ2VydGlmaWNhdGlv ... Wednesday, February 6, 13
  • 16. Important Values DeveloperCertificates -----BEGIN CERTIFICATE----- MIIFnDCCBISgAwIBAgIIEIdrqpJlb9MwDQYJKoZIhvcNAQEFBQAwgZYxCzAJ BgNVBAYTAlVTMRMwEQYDVQQKDApBcHBsZSBJbmMuMSwwKgYDVQQLDCNBcHBs ZSBXb3JsZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9uczFEMEIGA1UEAww7QXBw bGUgV29ybGR3aWRlIERldmVsb3BlciBSZWxhdGlvbnMgQ2VydGlmaWNhdGlv ... -----END CERTIFICATE----- Wednesday, February 6, 13
  • 17. Important Values DeveloperCertificates -----BEGIN CERTIFICATE----- MIIFnDCCBISgAwIBAgIIEIdrqpJlb9MwDQYJKoZIhvcNAQEFBQAwgZYxCzAJ BgNVBAYTAlVTMRMwEQYDVQQKDApBcHBsZSBJbmMuMSwwKgYDVQQLDCNBcHBs ZSBXb3JsZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9uczFEMEIGA1UEAww7QXBw bGUgV29ybGR3aWRlIERldmVsb3BlciBSZWxhdGlvbnMgQ2VydGlmaWNhdGlv ... -----END CERTIFICATE----- openssl x509 -text -in cert.pem Wednesday, February 6, 13
  • 18. Important Values DeveloperCertificates Certificate: Data: Version: 3 (0x2) Serial Number: 10:87:6b:aa:92:65:6f:d3 Signature Algorithm: sha1WithRSAEncryption Issuer: C=US, O=Apple Inc., OU=Apple Worldwide Developer Relations, CN=Apple Worldwide Developer Relations Certification Authority Validity Not Before: Nov 3 21:38:10 2012 GMT Not After : Nov 3 21:38:10 2013 GMT Subject: UID=9K9F9LCV74, CN=iPhone Distribution: Massively Overrated, OU=9K9F9LCV74, O=Massively Overrated, C=US Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (2048 bit) Modulus (2048 bit): 00:c8:57:f9:cf:af:c2:4d:7a:8a:16:62:47:4b:c2: Wednesday, February 6, 13
  • 19. Install a Provisioning Profile Wednesday, February 6, 13
  • 20. Install a Provisioning Profile Don’t double click them. Not human readable. Wednesday, February 6, 13
  • 21. Install a Provisioning Profile Drag them into the Finder ~/Library/MobileDevice/Provisioning Profiles Wednesday, February 6, 13
  • 22. Install a Provisioning Profile Drag them into the Finder Wednesday, February 6, 13
  • 23. Install a Provisioning Profile Drag them into the Finder Much better Wednesday, February 6, 13
  • 24. Tools for using Provisioning Profiles Terminal.app Wednesday, February 6, 13
  • 25. Tools for using Provisioning Profiles Terminal.app - bash alias alias prov='openssl smime -inform der -verify -in' Wednesday, February 6, 13
  • 26. Tools for using Provisioning Profiles Quicklook Plugin http://www.macmation.com/blog/2011/10/quicklook-plugin-for-mobile-provision-files/ Wednesday, February 6, 13
  • 27. Tools for using Provisioning Profiles Automator Service Wednesday, February 6, 13
  • 28. Tools for using Provisioning Profiles Automator Service http://cl.ly/MTZb Wednesday, February 6, 13
  • 29. Tools for using Provisioning Profiles Automator Service Wednesday, February 6, 13
  • 31. Xcode How does it see profiles? Wednesday, February 6, 13
  • 32. Xcode How does it see profiles? CODE_SIGN_IDENTITY = "iPhone Developer"; Wednesday, February 6, 13
  • 33. Xcode How does it see profiles? CODE_SIGN_IDENTITY = "iPhone Developer"; PROVISIONING_PROFILE = ""; Wednesday, February 6, 13
  • 34. Xcode How does it see profiles? Wednesday, February 6, 13
  • 35. Xcode How does it see profiles? CODE_SIGN_IDENTITY = "iPhone Developer: Jay Graves (E6L876QFM6)"; Wednesday, February 6, 13
  • 36. Xcode How does it see profiles? CODE_SIGN_IDENTITY = "iPhone Developer: Jay Graves (E6L876QFM6)"; PROVISIONING_PROFILE = "0FEB5831-22D3-4B1D-A973-59ED243E8103"; Wednesday, February 6, 13
  • 37. Xcode Build error Wednesday, February 6, 13
  • 38. Xcode Build error Wednesday, February 6, 13
  • 39. Xcode Update the profile. Wednesday, February 6, 13
  • 40. Xcode Update the profile. Wednesday, February 6, 13
  • 41. Xcode Project Diff Wednesday, February 6, 13
  • 42. What does all this mean? Wednesday, February 6, 13
  • 43. What does all this mean? •Automatic Profiles •Good if you don’t have multiple projects. •It can select the wrong profile. •Rules on automatic selection are not defined. Wednesday, February 6, 13
  • 44. What does all this mean? •Automatic Profiles •Good if you don’t have multiple projects. •It can select the wrong profile. •Rules on automatic selection are not defined. •Specific Profiles •Much more control over which profile is selected. •Can be a pain to update the project file every time a profile is updated. Wednesday, February 6, 13
  • 48. Scenario 1 Project 2 Builds Wednesday, February 6, 13
  • 49. Multiple Build Scenario Possible Solutions Wednesday, February 6, 13
  • 50. Multiple Build Scenario Possible Solutions •Add a Duplicate Target Wednesday, February 6, 13
  • 51. Multiple Build Scenario Possible Solutions •Add a Duplicate Target •Large project file change Wednesday, February 6, 13
  • 52. Multiple Build Scenario Possible Solutions •Add a Duplicate Target •Large project file change •Duplicated all of the Configurations Wednesday, February 6, 13
  • 53. Multiple Build Scenario Possible Solutions •Add a Duplicate Target •Large project file change •Duplicated all of the Configurations •A 2nd info.plist has been created. Wednesday, February 6, 13
  • 54. Multiple Build Scenario Possible Solutions •Add a Duplicate Target •Large project file change •Duplicated all of the Configurations •A 2nd info.plist has been created. Wednesday, February 6, 13
  • 55. Multiple Build Scenario Possible Solutions •Add a Duplicate Target •Large project file change •Duplicated all of the Configurations •A 2nd info.plist has been created. • Add a new Configuration Wednesday, February 6, 13
  • 56. Multiple Build Scenario Possible Solutions •Add a Duplicate Target •Large project file change •Duplicated all of the Configurations •A 2nd info.plist has been created. • Add a new Configuration •Still a large project file change Wednesday, February 6, 13
  • 57. Multiple Build Scenario Possible Solutions •Add a Duplicate Target •Large project file change •Duplicated all of the Configurations •A 2nd info.plist has been created. • Add a new Configuration •Still a large project file change •Still duplicated all the build options Wednesday, February 6, 13
  • 58. Multiple Build Scenario Possible Solutions •Add a Duplicate Target •Large project file change •Duplicated all of the Configurations •A 2nd info.plist has been created. • Add a new Configuration •Still a large project file change •Still duplicated all the build options •Easy to forget new build options Wednesday, February 6, 13
  • 59. Multiple Build Scenario A better solution Wednesday, February 6, 13
  • 60. Multiple Build Scenario A better solution .xcconfig file Wednesday, February 6, 13
  • 61. Multiple Build Scenario Create a .xcconfig file Wednesday, February 6, 13
  • 62. Multiple Build Scenario Create a .xcconfig file CODE_SIGN_IDENTITY = iPhone Distribution: Double Encore PROVISIONING_PROFILE = 1203C18-8F08-45D8-A5AC-76AD9319CDDC Wednesday, February 6, 13
  • 63. Multiple Build Scenario Build with a .xcconfig file xcodebuild -xcconfig second_build.xcconfig Wednesday, February 6, 13
  • 69. OK, OK, Enough with the Provisioning Profiles already. Wednesday, February 6, 13
  • 70. Keychain Access Wednesday, February 6, 13
  • 72. Switch Keychains unlock keychain security default-keychain -d user -s /FULLPATH/My.keychain security unlock-keychain -p ******* /FULLPATH/My.keychain Wednesday, February 6, 13
  • 73. Switch Keychains unlock keychain Error: User interaction is not allowed. Wednesday, February 6, 13
  • 74. Switch Keychains unlock keychain Wednesday, February 6, 13
  • 77. md5 checksum Wednesday, February 6, 13
  • 78. md5 checksum doesn’t work Wednesday, February 6, 13
  • 79. md5 checksum doesn’t work Wednesday, February 6, 13
  • 80. Install multiple apps at the same time Wednesday, February 6, 13
  • 81. Install multiple apps at the same time Wednesday, February 6, 13
  • 82. Install multiple apps at the same time Wednesday, February 6, 13
  • 83. Thank You jay@doubleencore.com @skabber Wednesday, February 6, 13