We decided to go with a mobile first approach for Pawprint and the time finally came last week to get the Pawprint mobile app into the hands of testers (if you are interested in joining our beta, please sign up at http://getpawprint.com/).
The brave and/or reckless would submit to the app store directly but we are testing out all our processes and ironing out bugs first. This means learning and wrestling with the Play Store and the App Store beta processes – no simple task I assure you. This blog post is NOT a step-by-step tutorial (there are a million out there) but rather a guide on how to sail smoothly through this process by following the right tutorials and how to avoid some common pitfalls. This will serve you best before you start the process at all so you have a clean slate.
*Note: I built in Ionic, a framework that wraps Angular with Cordova (formerly Phonegap). This means the code for both Android and iOS are written once in Javascript and then built and packaged for their respective platforms. There are some Ionic specific tips sprinkled throughout
Deploying Play Store
If you are using Ionic, follow this guide. If you aren’t, follow the guide starting at the “keytool” step.
A break down of what happens during each step in english:
cordova build --release android
packages your code into Android Java code (*Ionic only step)keytool -genkey ...
generate a key for this specific app, you’ll be required to sign each update with this key in the futurejarsigner -verbose -sigalg ...
sign your app with the key (*Ionic: make sure to update the file path to the build you just created in step one, this should be in platforms/android/ant-build folder and have “unsigned” in the filename)zipalign -v 4 ...
zip the code into a small package that you can upload to the playstore
Common pitfall: You don’t have zipalign in your path. These are included in the JDK (Java Development Kit) and may not have made it into your path when you installed the Android SDK. Make sure you have the latest android (in this case android 4.4) and that the build tools INSIDE the SDK are getting added to your path, it should be along the lines of/adt-bundle-mac-x86_64-20140702/sdk/build-tools/android-4.4W
Once you get through all of that, make a Play Store account and follow their instructions. This is fairly straight forward, a few notes:
- You will have to pay $25, this is not avoidable even for beta. Cheap compared to $99 for Apple.
- Make sure when you upload your zipped up apk, you do it to under the “Beta Testing” or “Alpha Testing” tab and not the “Production” tab (this will push it to the store for everyone). You won’t be able to invite testers until it is “Published” (note there is a difference between “Published” and “Production”), you can do this in the upper right hand corner – if it is grayed out, Google will nicely point out to you what you are missing (usually an App description or screenshots that you need to upload so your testers know what your app is)
Deploying App Store
Warning, Apple App Store hates developers. Unfortunately, you can’t truly call yourself a mobile company until you are deployed to the app store so we’ll just have to push through this one.
First, pay $99 to join the developer program (this is good for 1 year). Then follow the Tutsplus tutorial linked below:
Pitfalls, tips and tricks:
- Tutorials: Follow one tutorial, there are 12093873 steps and jumping between tutorials will really screw you up. I’ve found Tutsplus: How to Test Your App on an iOS Device and then when you are ready to submit for review, use their How to Submit an iOS App to the App Store tutorial. You’ll have to bounce between XCode and the iTunes Connect website
- Versions: Apple changes their process almost every time they update their OS or xcode so make sure the tutorial you are following matches the versions you are on. The safest bet is to always have the most up-to-date version of xcode.
- Naming Convention: When you apply for an app id (see the tutorial for this) you’ll be asked for an app name, make sure this matches the name in your config.xml file! Otherwise you’ll have to recreate the app id and provisioning certificate over again later. This name usually looks something like com.domain-name.app-name – this one cost me a few hours, do not make the same mistake! You’ve been warned.
- Internal vs. External Testers: Once you get your app uploaded, make sure you turn on “Testflight Beta Testing” under Prerelease/Builds AND submit for beta review (this process takes 1-2 days the first time but when you make updates, they will not need to be reviewed again). Until you are reviewed and approved, you will not be able into invite external testers.
BUG! At the time of this post, Apple has just rolled out Testflight for developers to Beta with. There are lots of bugs and it may throw you off because it’ll feel like you missed a step. One specific bug relating to this part of the process is not being able to invite internal testers, see details in this bug report my buddy @lemikegao. Note: if you are part of the Apple developer program, help us by submitting this bug as well! The more reports of this bug they get, the more likely they are to fix it sooner.
Updating Your App
One you start the bug-fixing process, you’ll have to update and re-upload your app builds. Here are a couple tips on updates:
- Ionic Updates: you should update your Ionic code, then build to the two platforms respectively. Make sure to reopen the xcode project AFTER you run
ionic build ios
so that your changes are included in your app when you re-archive it (for Android, just rebuild and then run through all the steps above, skipping the #2 key creation) - Version Numbers: Both app stores require that you change the version number on your app before uploading again. That means each time you fix a bug and want to upload, you’ll have to change this number in config.xml
Getting Testers on Board
Play Store: Create a Google group, add them under the Beta Testing tab in “Manage list of testers”. Now anyone with accepted into the group can download from the store using a link.
App Store: Each person will have to be invited under the “External Testers” tab. They’ll get an email which they must open with the native mail app on iOS and download the Testflight app before getting your beta build. They will also need the latest version of iOS on their phone
This is initially a very difficult process and serves as a right of passage for mobile developers. Good luck and feel free to post any additional issues you run into in the comment section and I’ll do my best to address anything I can!
—
P.S. If you are interested in joining the Pawprint beta, please register your email to our list at http://getpawprint.com/ and we’ll follow up with you to get you on one of the platforms.