Mobile developments at eXo
Upcoming SlideShare
Loading in...5
×
 

Mobile developments at eXo

on

  • 4,849 views

Tools and processes used at eXo to develop our mobile applications (iOS & Android) including continuous integration and deployment. ...

Tools and processes used at eXo to develop our mobile applications (iOS & Android) including continuous integration and deployment.
Tips and tricks to setup all the infrastructure involved in them.

Statistics

Views

Total Views
4,849
Views on SlideShare
2,795
Embed Views
2,054

Actions

Likes
11
Downloads
49
Comments
0

6 Embeds 2,054

http://oolteam.posterous.com 1051
http://blog.appaloosa-store.com 729
http://posterous.com 218
http://paper.li 28
http://a0.twimg.com 27
http://pdfslidestore.blogspot.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Mobile developments at eXo Mobile developments at eXo Presentation Transcript

  • Mobile Development Tools and Practices Arnaud Héritier eXo Platform @aheritierWednesday, December 14, 11
  • Our Motivation • Observations • eXo Mobile division had many difficulties to stabilize applications (build failures, dependencies to the development environment ...), • Functional and technical feedbacks were very limited because the deployment/update process was complex for testers / early adopters.Wednesday, December 14, 11
  • Our Motivation • Prescription • Continuous build and deployment of mobile applications (iOS, Android) • to speedup the feedback loop • to increase the number of testers / early adopters • to increase the quality and the stability of these applications.Wednesday, December 14, 11
  • Our Motivation • CI wasnt easy to setup the first time, especially for iOS. The experience is worth being shared.Wednesday, December 14, 11
  • Webinar Schedule • The development environment • Setup the continuous integration • Setup the continuous deploymentWednesday, December 14, 11
  • Environment overviewWednesday, December 14, 11
  • The Development Environment for iOSWednesday, December 14, 11
  • iOS Development Toolbox • Xcode • http://developer.apple.com/xcode/Wednesday, December 14, 11
  • Setup a Development Environment for iOS • Apple documentation • http://goo.gl/Ge13t • The most important part is to register your Apple developer account and to correctly set your code signing identityWednesday, December 14, 11
  • CertificatesWednesday, December 14, 11
  • ProvisioningWednesday, December 14, 11
  • Setup a Development Environment for iOS The developer can spend the major part of the day in Xcode and the emulator as long as the code is regularly committed in the SCMWednesday, December 14, 11
  • The Development Environment for AndroidWednesday, December 14, 11
  • Android Development Toolbox • Java JDK • http://www.oracle.com/technetwork/java/javase/downloads/index.html • Android SDK • http://developer.android.com/sdk • Eclipse 3.7 IDE for Java Developers • http://eclipse.org • Apache Maven • http://maven.apache.org/Wednesday, December 14, 11
  • Setup a Development Environment for Android • Installation • Java JDK • Android SDK • Don’t forget to set the ANDROID_HOME environment variable • Maven 3.0.3 min • Required by the 3.0 version of the android plugin • Eclipse • Use Java Developers edition with its Maven integration (m2e) • Don’t forget to configure your Maven and ADT paths in eclipse settings.Wednesday, December 14, 11
  • Maven installation path to use in eclipseWednesday, December 14, 11
  • ADK installation path to use in eclipseWednesday, December 14, 11
  • Maven POM for an Android Project • Packaging = apk • Uses the plugin com.jayway.maven.plugins.android.generatio n2:android-maven-plugin • version 3.0.0 min • manifest-update goal bound to the phase process-resourcesWednesday, December 14, 11
  • Setup a Development Environment for Android • Just import your Maven/APK project in eclipse with m2e. • M2e and its market place will automatically install and configure the Android extension in eclipse • You’ll be able to manage your project dependencies with Apache Maven • You don’t have to explicitly use Maven in your development process. M2e does the necessary to hide it. • Manage your Android project with Apache Maven • http://www.sonatype.com/books/mvnref-book/reference/ android-dev.html • http://code.google.com/p/maven-android-plugin/Wednesday, December 14, 11
  • Maven POM for an android projectWednesday, December 14, 11
  • Setup a Development Environment for Android The developer can spend the major part of the day in Eclipse and the emulator as long as the code is regularly committed in the SCMWednesday, December 14, 11
  • Continuous Integration EnvironmentWednesday, December 14, 11
  • Continuous Integration Toolbox • Jenkins • http://jenkins-ci.org/ • Java JDK • http://www.oracle.com/technetwork/java/javase/downloads/index.html • Android SDK • http://developer.android.com/sdk • Apache Maven • http://maven.apache.org/ • Xcode • http://developer.apple.com/xcode/Wednesday, December 14, 11
  • Continuous Integration for iOS • Jenkins with the Xcode plugin • https://wiki.jenkins-ci.org/display/ JENKINS/Xcode+Plugin • Requires a MacOS platform to build (using a Jenkins agent if necessary)Wednesday, December 14, 11
  • Continuous Integration for iOS • Configure the environment where build will be run as a development environment (Xcode + certificates) • Connect your Jenkins Server to an iOS agent : • Use a dedicated user account on the agent host, • Allow Remote Login (Sharing preferences) on the agent to connect to it using SSH, • Configure an SSH key on the Server that you will authorize on the agent (~/.ssh/authorized_keys)Wednesday, December 14, 11
  • Dedicated account for Jenkins agent on Macos X hostWednesday, December 14, 11
  • Activate Remote Login (aka SSH)Wednesday, December 14, 11
  • Continuous Integration for iOS • Create a freestyle job in jenkins with an Xcode Build Step • Ask to build the IPA • Configure it to unlock the login keychain • Use build variables to generate a unique technical versionWednesday, December 14, 11
  • Continuous Integration for iOS • “User interaction is not allowed” error returned while signing your binary ? • Launch one time manually the build on the agent to validate permanently the access to the keychain for the process “codesign”Wednesday, December 14, 11
  • Continuous Integration for Android • Install an Android SDK on all agents where the android job can be launched • Configure in Jenkins • JDK 1.6+ • Apache Maven 3.0.3+ • ANDROID_HOME environment variable or define the property android.sdk.path in a profile activated from maven settings.xml configuration file.Wednesday, December 14, 11
  • Continuous Integration for Android • Create a Maven Job • Use the property “android.manifest.versionCode” to inject a unique version number in the application ManifestWednesday, December 14, 11
  • Continuous Deployment EnvironmentWednesday, December 14, 11
  • Continuous Deployment Toolbox • Jenkins • http://jenkins-ci.org/ • Appaloosa Store • http://appaloosa-store.comWednesday, December 14, 11
  • Private Store • Appaloosa allow you to manage a private store for Android or iOS devices • Even if our applications are deployed in public app-stores after the release we rely on a private app-store to easily deploy tests versions to our QA or our early adopters.Wednesday, December 14, 11
  • Continuous Deployment with Appaloosa • Install the appaloosa plugin in Jenkins • https://wiki.jenkins-ci.org/display/JENKINS/Appaloosa +Plugin • Get the organization token in the administration panel of your appaloosa store • Create a private store for each system : One for iOS and one for Android • Configure in each job a post build task to deploy binaries • **/*.ipa for the iOS build • **/target/*(-aligned).apk for the android buildWednesday, December 14, 11
  • Continuous Deployment with Appaloosa • Check your emails and install the Appaloosa Store App or open the website on your mobile. • Both of them will warn you about the availability of a new version of your application. • Just install/update itWednesday, December 14, 11
  • FULL SCENARIOWednesday, December 14, 11
  • FULL SCENARIOWednesday, December 14, 11
  • iOS developmentWednesday, December 14, 11
  • Jenkins pluginsWednesday, December 14, 11
  • Xcode build configuration in Jenkins for iOS jobsWednesday, December 14, 11
  • Post-build configuration for iOS Jobs in JenkinsWednesday, December 14, 11
  • Let’s launch the iOS jobbuildWednesday, December 14, 11
  • iOS build outputWednesday, December 14, 11
  • iOS post-build outputWednesday, December 14, 11
  • iOS job pageWednesday, December 14, 11
  • We receive a notification from Appaloosa (using the private store application)Wednesday, December 14, 11
  • Notification sticker on our Appaloosa store appWednesday, December 14, 11
  • In the application detail screen we can see the updateWednesday, December 14, 11
  • Application installation or updateWednesday, December 14, 11
  • Application installation or updateWednesday, December 14, 11
  • It’s ready !Wednesday, December 14, 11
  • EnjoyWednesday, December 14, 11
  • Q/A ?Wednesday, December 14, 11