Lessons learned from three paid apps on the app store with the first two published in December 2012 (the third was published in March 2013). With two full years on the app store, I thought it was time to look back and try to pull out some lessons learned. I hope the presentation will be useful to other developers thinking of making their own Android apps.
6. Minimal Design
● Use A Theme
● Use Action Bar
● Use Icons
● Style Text
● Style Buttons
rmcore.com
7. Talk To People
● Designer Referral
● ActionBarSherlock
● Feature Suggestions
● After Shipping: Users
rmcore.com
8. The Emulator Is Painful
Three Reasons
1. Paid Alternative Genymotion
2. Developers Don’t Use It
3. Microsoft Makes A Better One
rmcore.com
9. Always Test On A Device
● Emulator For Development
● Use eBay
rmcore.com
“Java is a belt fed 240G automatic weapon where sometimes the belt has
rounds, sometimes it doesn’t, and when it doesn’t during firing you get an
NullPointerException, the gun explodes and you die.” Bjorn Tipling source
10. That Time I Shipped A Crash Bug
● Sanitize User Input
“Also app crashes when trying to use decimal as em values
for input widths.”
rmcore.com
12. What is a JAR?
Most Android libraries use Apache 2
rmcore.com
Some Favorites
● AChartEngine
● ColorPickerPreference
● aFileChooser
13. Android Security
● Cannot override the home button
o Make a home screen launcher
o Example: MobiLock Kiosk Lockdown
● Cannot send email directly
o Prevents device becoming a spam relay
rmcore.com
14. Android Fragmentation
Are the vast differences in possible screen
sizes a problem? Not so much.
rmcore.com
FUD
Actual
15. Best VCS For Side Project: Git
Bitbucket
Always use version
control
rmcore.com
16. Greatest Rewards
Evidence of Value Creation
“I used to pass around a pad and pen and then it would take me about a day
trying to read everyone’s handwriting, not easy. When I do figure it out, many
times emails bounced back because a letter was misread. The app makes
things error free.”
Happy Customers
“Fantastic! Thank you for the update! I really appreciate it!”
Portfolio
rmcore.com
18. Keep In Touch
Check out my website at:
http://rmcore.com
Email: rdg at rmcore dot com
Twitter: @rdg_rmcore
rmcore.com
Editor's Notes
The Android robot is reproduced or modified from work created and shared by Google and used according to terms described in the Creative Commons 3.0 Attribution License.
Do you already own an Android device? (Or do you own a Macbook?)
Do you already know C/C++ or Java? (Or do you already know Objective C?)
A lot less moving parts than a web app.
Gives you something to show during an interview. Potential to move your career in a new direction.
Exchange value for value and make some money on your side project. My strategy is to offer paid apps. If the user sees the value they pay for the app. A straightforward approach.
http://rmcore.com/android-apps-side-project-lessons-learned-introduction/
Which one is a paid app that competes with free?
Which one was made from a user request on a forum?
Don’t make a paid app when there are popular free alternatives.
There are three good ways to find an app idea.
Build something users are already asking for.
Make something useful to you. Sworkit as an example of scratching your own itch http://www.sworkit.com/
Search app store for popular apps that have complaints. Fix them. Example of slideshow apps and uploading to youtube.http://rmcore.com/paid-android-app-compared-free/
Hard copy is out of date by the time you receive it.
Old books came with CDs. This code is on github.
Text chat based office hours
Comes in PDF, epub, mobi, and as an apk
Format and samples are perfect when you don’t have a lot of time
http://commonsware.com/Android/
http://rmcore.com/best-android-book/
You don’t have to be a designer. Don’t let publishing something ugly be a stumbling block. Easier than ever to hire a designer.
Which icon was custom created by a designer?
Which icons were created from public domain clip art?
Ways to Get An Icon
Pay a designer.
Use fiverr.
https://www.fiverr.com/
Make your own.
http://tekeye.biz/2012/free-android-icons-via-clip-art
https://openclipart.org/
More links:
http://rmcore.com/android-app-icon-design/
http://rmcore.com/android-icon-links/
You can have a good looking app by doing a minimum amount of work.
The Action Bar provides a consistent user experience on the Android platform. It also highlights your icon.
Use Stock Icons
Visual impact of stock icons
http://www.kalzumeus.com/2006/08/26/the-visual-impact-stock-icons-make/
Style text beyond the system default to make it look better.
Same with the buttons.
Talk to people. You never know who has experience and could provide a referral.
They may even turn you on to best practices such as the Action Bar.
Once you have something working, put it in people’s hands and ask for feature suggestions.
Provide and easy way for people to email you from the app and ask if they have any feature requests.
Pay attention to repeated requests.
Is Google embarrassed by the stock Android emulator? Perhaps they should be.
“As anyone who's used the Google Android SDK will know, the emulator it includes is desperately slow and totally unenjoyable to use. “ source:
http://arstechnica.com/information-technology/2014/11/visual-studio-2015-goes-even-more-cross-platform-with-clang-android-emulator/
http://blogs.msdn.com/b/visualstudioalm/archive/2014/11/12/introducing-visual-studio-s-emulator-for-android.aspx
The emulator is good to get started. You will find bugs that you don’t see on the emulator when you test on a real device.
You can buy test devices off of eBay.
Note: It is possible to debug Android device over WiFi
http://www.techrepublic.com/blog/software-engineer/debug-android-applications-over-ethernet/
Users asked for the ability to set the field width.
What could go wrong?
Treating a float like an int in Java caused an exception and a crash bug.
Note: the customer of the paid app was very respectful while I fixed the bug and shipped an update.
On Android, artifacts such as images can be shared from your app in four lines of Java code.
As a new user of Java, I learned about Java archives.
These are powerful because they are so easy to integrated.
Avoid app bloat by limiting total number of JAR files included.
Home key press not delivered to app:
http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_HOME
https://play.google.com/store/apps/details?id=com.promobitech.mobilock
There is hw fragmentation.
Possible CPUs Arm, MIPS, Intel Atom (mobile x86)
MediaCodec API because devices have different hw accelerated audio and video codecs
There is different sw on same device.
Update video drivers with OTA update.
GPad LG vs Google sw on same device.
Github is more famous. Github charges for private repos.
Bitbucket hosts private repos for free.
Git doesn’t require running a server. Makes version control fast.
Don’t really learn it until you use it.
Always use version control because you can revert files.
Customer Case Study:
http://rmcore.com/collect-email-addresses-android/
Portfolio:
Both sides of the table.
One of the best candidates I had when interviewing had worked on an app during college.
Helped when interviewing for my current position.