Search code examples
androidapkgoogle-playsoftware-distribution

Distributing an Android app outside Google Play and get it linked to it


Suppose I have a wifi network with a walled garden that prevents users from accessing Internet unless an authentication procedure is performed via browser.

Suppose I have an application on Google Play that automates this process for inexperienced people. And suppose 95% of users are inexperienced and unwilling to perform SMS-OTP authentication on a site that is not optimized for mobile.

Scenario

A person asks a clerk how to connect to internet using Android. The clerk suggests the person to download the Android app, but the person responds he has no Internet access because he has no 3G data plan.

Possible workaround

The walled garden portal detects the device running Android by user agent and says: "Would you like to download an APK from our internal network without having to go to Google Play?". The user accepts, unlocks unknown sources and installs the app.

Question

In this scenario, if a user downloads an APK of a Google Play-available application, signed with same key, on his device, will the installed application be linked to Play and subject to updates? And I mean without using a Market linker app.


Solution

  • That's my old answer, don't read it, just skip to the edit portion:

    Short answer is no!

    I'm sure there're geeky ways around to link an app to its Google Play variant, but your scenario of non-geeky customers I reckon the best option is to program the network to allow Android mobile access (checking the user agent) to play.google.com (maybe even from the redirection website auto-launch the google play link direct to said app).

    edit:

    I'm thinking a bit more on this problem and I would like to change my answer to "I don't know" (what a horrible answer). But I would like to propose a test that you can do it yourself.

    The reason I'm changing the answer is because I remember now apps like Titanium and they do link the app to the Play whenever restoring a backup. Of course, Titanium needs root, but that's because it's messing with other apps, not its own.

    So in light of what I discusse I'll suggest you a simple test:

    • build an app, anything, Hello world!
    • Upload this app to Google Play and make it active
    • Wait a few hours for Google servers to make it available
    • Manually flash the same build version (with exact same signing key, etc) to a device.
    • Reboot the device (to be sure the system will read through installed applications and do communication with Google Play)
    • Go to Google Play on the device and check if it shows the app

    It's possible that the app have the same package name and signed with the same key, the Google Play on the device itself will recognise it as the same and link it.