Tag Archives: Android

android_wear_logo_new

Developers to Android Wear – Are We There Yet?

The short answer seems to be no, but maybe soon.

The long answer is quite a bit more involved.

Development

From a development aspect, starting an Android Wear project is straight forward and simple. In reality, creating a great Android Wear app is neither straight forward nor easy. I’ve been holding off on beginning any Android Wear projects that utilize features present in the Wear 2.0 Preview, so right now a developer usually ends up with a project that contains at least two modules: a handset app module and a wear app module. By default, you’re not presented with any shared code layer since the mobile app “depends” on the wearable, you can either move all shared objects to the wearable module (don’t do this), or you can create a new shared module that both the handset and the wear apps will depend on. This seems somewhat straightforward, but is yet another area developers are left on their own to figure out the quirks of the platform. My favorite part about developing for Android Wear has been using the hardware. I now have a Huawei Watch that really gives my Apple Watch a run for its money in terms of style and use (though my Apple Watch is still my daily driver).

Deployment

Android Wear app deployment is hilariously convoluted. Currently, using the wearApp() gradle dependency the wearable app will only be packaged when the app is built using the release variant. What about a debug build? Don’t bother looking – Google’s documentation on this subject is sparse at best. Here’s what I ended up adding to my mobile app’s debug buildType:

gradle.taskGraph.whenReady { graph ->
    if (!graph.hasTask(assembleRelease)) {
        android.applicationVariants.all { v ->
            if (v.buildType.name == "debug") {
                v.preBuild.doFirst {
                    copy {
                        from("../wearable/build/outputs/apk") {
                            include "**/wearable-*.apk"
                            exclude "**/*-unaligned.apk"
                            rename "wearable-", "wearable_"
                            rename "-unsigned", "_unsigned"
                        }
                        into "./src/main/res/raw/"
                    }
                    println("Packaged Wearable APK in Mobile App")
                }
            }
        }
    }
}

But this isn’t all you need – you’ll also need to create a wearable_desc.xml file to tell your app what your wearable’s name under res/raw will be. BUT WAIT, THERE’S MORE! You’ll need this file to be different for release, because the release apk will be named android_wear_micro_apk.apk. Is this tiring you yet? We haven’t even touched the problems inherent when testing with a wear emulator and various versions of Google Play Services being outdated/out of sync, problems with the wear app properly syncing over to the wearable device, or the problems with synchronizing communications.

User Perception

Most Android users have no idea that a Samsung Gear S2 is any different than an Android Wear device, that it runs a different operating system (Tizen), or that it’s basically not compatible with anything you write for Android Wear. I’ve had requirements in the past that asked me to deliver an Android Wear application only to find out they had wrongly assumed Samsung’s Gear S2 devices would be supported. This fragmentation is bad for Google and for Samsung. Google gets wrongly accused of having no Wear apps (there are tons) when a user is only interacting with the Gear (Tizen) app store. For those in the know – they complain about Samsung selling them a wearable that’s not compatible with the much larger Android Wear ecosystem. Going forward this doesn’t seem like it will be as big of a deal as Android Wear looks to be the “Android” smartwatch platform with partners like Tag Heuer, Huawei, LG, Motorola, Fossil, and more, but for now this isn’t a stellar ecosystem for users to dive into without any guiding hand or clear answers.

Wear Are We Going?

Wear isn’t leaving us – as Google presented a brand new 2.0 redesign of Wear at this year’s I/O conference, it’s only getting better. The redesign is a huge improvement in terms of usability that goes toe-to-toe with Apple’s WatchOS 3.0, and I truly hope that Google only postponed the 2.0 release because it wanted to make the development story less of a headache. Developers need a better way to test on the emulator without worries of remembering all the little tricks they need to do in order to test and debug their apps. Developers need the emulators to update Google Play Services, if we want them to, just like a real device does. And finally, developers need users to somewhat understand and adopt the platform so their apps are seen and used. There’s nothing more satisfying than seeing someone using your app in public, and there’s nothing more heartbreaking than developing for a half-baked platform created by a multi-billion dollar company.