Wikimedia Apps/How to release an app

This is meant as a generic set of instructions. Your app may have subsequent steps that trump the ones documented below. Check with your tech lead to be sure.

= Android =


 * 1) Release manager increments any internal version code/name in app (eg /assets/www/js/config.js)
 * 2) Release Manager makes sure that android:versionCode in AndroidManifest.xml has been incremented for this release. Increment android:versionName if this is not a beta/alpha release. (look in /AndroidManifest.xml)
 * 3) Tech lead picks a branch point for this version
 * 4) Release Manager builds an apk and verifies against units tests, functionality, etc
 * 5) http://developer.android.com/training/basics/firstapp/running-app.html
 * 6) Release Manager/tech lead tags branch point after verifying the build
 * 7) ex. 'git tag v1.2' https://github.com/wikimedia/WLMMobile/commits/v1.1
 * 8) Sign APK (if you don't have the signing key ask Tomasz or Arthur)
 * 9) CLI: http://developer.android.com/tools/publishing/app-signing.html
 * 10) Eclipse: http://stackoverflow.com/questions/3417122/how-to-use-eclipse-to-create-released-signed-apk
 * 11) Create md5 hash of the apk
 * 12) Upload apk to download.wikimedia.org (ask Tomasz)
 * 13) Hand APK over to Product for inclusion in the market
 * 14) Product adds the new version market listing
 * 15) Product publishes on delivery date
 * 16) Product updates http://www.mediawiki.org/wiki/Mobile/Release_history with new release, md5sum, download link

= iOS =


 * 1) Build according to our old docs
 * 2) Create a new version in itunes connect
 * 3) Archive the build
 * 4) Submit
 * 5) Publish after apple review is done

= App-specific notes =

WLM Mobile
The release version of the app currently exists in the remote branch 'commons-upload'. This is intended to preserve different config settings for development vs release. When a branch point is picked for the release, it should be merged into commons-upload, and the release tag applied to the commons-upload branch.

Version bumps need configuration changes in assets/www/js/config.js and AndroidManifest.xml.