usr-local-ΕΨΗΕΛΩΝ
usr-local-ΕΨΗΕΛΩΝ

Reputation: 26904

Android application for limited enterprise audience

This is the Android version of App for limited or restricted audience

The project

I'm going to start a brand new project for one of our customers that will be deployed to our customer's suppliers to track on-field activity. I am skilled enough on Java/Android development so this question is only about deployment.

Owned vs provided devices

Our customer will either provide a Samsung Galaxy Ace 4 device to the suppliers or will allow the supplier to use their own Android 4 smartphone without warranties from us. Our customer currently has a Google for Business organization set up, but we cannot rely on that (see partial answer).

Technical (non functional) requirements

The question is

Given the above "should not be visible to the public" statement, what is the most effective and efficient way to deploy an Android app targeted only for enterprise users? I'll post a partial answer below. I'm asking others to enrich it with other possible means, including using Alpha/beta channels for which I don't have experience about

Upvotes: 0

Views: 822

Answers (2)

Ed Holloway-George
Ed Holloway-George

Reputation: 5149

From your requirements, I would suggest distributing the APK via a direct URL and integrating a service such as HockeyApp (see their Android SDK for more) to manage both the crash reports and app updates.

  • "Ability to easily distribute application and updates across enterprise users"

    Many services allow .apk files to be uploaded directly to their service for deployment. A direct download link is then generated for that build.

    Crash information is collected and updates are automatically displayed if the app implements the Android SDK provided by the service.

  • "Application should not be visible to the public"

    Services such as HockeyApp do not publicise direct download links publicly. This link can therefore be distributed as required.

  • "Application must be able to send crash reports so our team can inspect and investigate"

    Full stack-trace and device information is sent along with crash reports and can be viewed online by technicians.

From my experience there are a few pros and cons:

  • Pros:

    • App distribution is super easy, as simple as visiting a website.
    • Bug reports are comparable to those received through Google Play
  • Cons:

    • Crash report's aren't sent automatically and updates aren't automatic

      By default, updates and crashes appear as system dialogs prompting users to either send the crash report/update the app or cancel. Ideally, no user interaction should be required to perform the desired actions. I am sure it is possible but have not found relevant documentation for it.

    • Cost. These services aren't free.
    • Would require the removal of the service SDK from the app if uploaded to Play Store

Upvotes: 1

usr-local-ΕΨΗΕΛΩΝ
usr-local-ΕΨΗΕΛΩΝ

Reputation: 26904

Currently, limited-audience Android applications can be deployed like this:

Publishing on Google Play as a free app for the public

Maybe adding a limitation to our country

Advantages:

  • Simplemost and well documented
  • Auto deployes updates as soon as no new permission is enforced
  • Collects crash reports on Dashboard

Disadvantages:

  • Everyone can download the app
    • This has the disadvantage that some organizations may not be happy as publicly available code might in some cases help exploit vulnerabilites on remote systems (but it is almost impossible if app is well-written and obfuscated)
  • If country limitation is enforced, imported devices won't download

Distributing the APK direct URL

Advantages:

  • The app remains private (enterprise users are surely not going to redistribute the app to friends as it's no use without enterprise credentials)

Disadvantages:

  • No crash reports unless implementing a third-party library
  • No auto updates unless implemented by custom code or third party library. Implementing auto updates prevents the app from being published to Google Play in the future, even on a private channel, as Play prohibits apps that auto-update themselves via third-party channels. Or, to be precise, the auto-update feature and Play publishing require, in order to exist together, maintaining two APKs

Google Play for Enterprise

As mentioned on this link, Google Play provides a private channel for app deploying for users withing a Google for Business organization. This is the perfect approach for applications that organization's users must use

Advantages:

  • Same as publishing for the public (simple, auto update, crash report)
  • Visible only to restricted audience

Disadvantages:

  • Every device must come with a Google account within the organization, and it will be economically unfeasible to [request the Sysadmin to] enable Google accounts for every external supplier in our target organization

Permanently in Alpha/Beta

I haven't tested this yet, as it is also very tricky. Basically, it involves using testing mode without ever going to production. With Google Play, one can deploy artifacts into Alpha (e.g. test server environment) and Beta (a trick to point to production server environment) without ever moving the app to Google Play's Production stage.

All requires setting up special moderated Google+ groups

Potential advantages:

  • Same as publishing to enterprise

Disadvantages:

  • Only telling users to subscribe to Google+ and joining a community

Upvotes: 1

Related Questions