Second class Android

It should be no surprise to anyone here that I’m a big fan of Android, though I’m by no means a “fanboy.” I’ve had a smart phone since the days of the original Handspring Treo, and since then I’ve used palm OS, windows mobile, Symbian, iOS, and Android devices. Really the only mobile platforms I missed were WebOS and meego (both died to quickly.)

The number one reason I settled on Android was the extremely tight/core integration of Google services, and the generally “Open” nature of the platform on the whole.

I like to hack and tinker with my electronic devices, and Android affords me the greatest opportunity to do so.

That said, it’s extremely disheartening to see that after 5 years of rapid development, Android is still a second class citizen when it comes to many cross-platform applications.

A recent example of this is a popular exercise app, Sworkit.

The paid/pro version of this app ($1) has an overall rating of 4.6 on the Play store. And the free version has an overall rating of 4.5, and both apps combined have an “install” base of ~105,000-510,000 users according to the ranges indicated on their product pages.

And Sworkit for Android is a borderline unusable iOS port, and an example of a terrible developer pushing crap as quickly as possible to make money, instead of focusing on quality.

Here’s a few or the biggest problems with Sworkit for Android:

  • Sworkit isn’t native, but an extremely poor performing web-wrapper, using Cordova.
  • Sworkit completely ignores every Android UI guideline. This is a huge, HUGE issue. Menu’s don’t work the way they should, There’s no action bar, nav drawer, view control, etc.
  • Sworkit completely ignored the systemwide “Holo” themes, instead using UI elements straight from the iOS app that don’t fit with Android at all.
  • Sworkit largely ignores hardware buttons which either don’t work as they should (back causes endless loops in many screens), crash the application, or don’t do anything at all (e.g. menu button)
  • Sworkit uses built-in, pre-recorded voice files instead of utilizing the Android TTS services, so the only language it supports is English.
  • Sworkit embeds assets (e.g. system fonts like Roboto) instead of calling them from the operating system framework.
  • Sworkit even ignores common APK structure, placing all drawables into the /assets folder instead of the /res folder.

This is by no means an exhaustive list of all the problems with Sworkit for Android, but it’s definitely some of the most glaring issues.

I don’t really know how else to say this, but to anyone developing for mobile platforms, your applications need to show that you actually care about them. Android users by and large want apps that look and feel like they belong on Android, not iOS or web ports. Just like iOS users want apps that look and feel like they belong on iOS.

If you’re going to develop for multiple platforms, take your time. Learn the platform. Use it’s strengths wherever possible, and only develop custom workarounds in the absolute worst/last case scenario.

4 thoughts on “Second class Android

  1. Ryan 7 October, 2013 / 05:59

    Sorry about not being able to take a native approach at this point. This is the first project I have ever made and it is something I do in my spare time as a self taught developer with under 4 months of experience when it was first released. Beyond aesthetics, if there are any problems getting to the actual workouts and being able to complete them without errors, please don’t hesitate to let me know and hopefully at some point I can get things native. I actually do agree with you on many of the points. I am learning a lot and it has helped me make a great career change.

    • jocelynmallon 7 October, 2013 / 09:01

      Hi Ryan,

      First, thank you for your time and the explanation. I really do appreciate what you’re trying to do with Sworkit, if I didn’t care, I wouldn’t have written the post in the first place. I do feel that not being a native app is a big deal, and I hope that you continue on your new career path to the point that Sworkit becomes a native application.

      For now, I would say the biggest issue is hardware button support, and I don’t have experience with the Cordova wrapper to know if they can actually be implemented properly using it. Frequently the back button just loops between screens, and the only way to actually close the app is to force stop it.

      Individual workouts seem to work, though an option for a 5-10 second countdown/warning towards the end of an exercise would be nice, as would a “Queue” system to select multiple workouts to cycle, e.g. stretch, warm-up, circuit 1, circuit 2, circuit 3, cool-down without having to create a custom workout.

      Anyway, thank you again for your comment, and I hope you keep improving Sworkit, and one day make the transition to native code. Android (and iOS to an extent) is a great platform, with a lot of amazing tools and features at your disposal.

      • Ryan 7 October, 2013 / 09:08

        I will definitely have a look at the back button interactions for the next update. I was worried at first about people getting out of their workout on accident or perhaps thinking that they would use the Home button instead. Sounds like I need to fire up my development Nexus as my at home device and just get a better feel for other apps as well.

        Your ideas for for the countdown and queue sound like they are directly off of my future features list. The 10 second pause between exercises helped a lot when I added it, but more of a flow with pre-warning would be great too. Also working on variable interval lengths, a better workout log, a few more useful things.

        Thanks for the encouragement. Have a great week.

    • jocelynmallon 7 October, 2013 / 09:42

      I’m glad to hear that you’re going to look into the back button interactions, in general, the back button should always page back one screen until the main fragment/activity, then it should exit the app clean completely.

      Right now, if you go into the settings, and drill down (on many pages, but not all), the back button returns you to the home screen, and entering the settings menu again returns you to the drilled down state, not the main settings fragment.

      In the custom workout screens, the back some ~50% of the time the back button just loops, and won’t exit to the main screen, requiring a force quit, and restart to get back to the main activity/screen.

      Back on the topic of native development, Google and a lot of Universities have Android development courses available online for free, I’d recommend these links to start if you haven’t already:

      You can select older sessions on the CS76 site in the upper right corner of the screen if you don’t want to follow along with any in-progress sessions.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s