Google TV

One vs Multiple Apks

One app for all platforms or multiple apps in the Google Play Store?

Developers frequently ask if they need to create a new Google Play Store listing for their app that is specifically for Google TV, instead of using one listing for all the devices they want to support, including phones, tablets, and TV. The answer differs, depending on the project's technical requirements and the developer's business plans. For example, remember that if you have one application for all devices, your marketing ratings and feedback are aggregated over all those devices. On the other hand, if you create separate applications, ratings and feedback are collected for each app. If you develop a paid app, you can set different price points for each platform, but your users have to purchase the app multiple times.

The following sections describe some of the alternatives you have:

  1. Multiple apks, Multiple Listings
  2. Single apk, Single Listing
  3. Multiple apks, Single Listing

Multipe apks, Multiple Listings

The most straightforward alternative is using a using a separate Google Play Store listing and separate apk for Google TV app. To use this, follow the Google Play Store Filtering for Google TV and Google Play Store Publishing Checklist for Google TV documentation.

Single apk, Single Listing

The best practice is to use a single .apk file for all devices. To learn how to do this, read the section Using Single Apk in the Android documentation.

To use a single .apk, follow these Google TV-specific guidelines:

  1. The user interface on Google TV is a non-touchscreen device, users view the screen from a distance (10 ft environment), and there is more horizontal than vertical space on the screen (landscape UI), and the screen does not change orientation. Using alternate resources, you can provide a landscape layout and high-resolution drawable resources to use with Google TV. Remember that users view the screen for a distance, users can't use a touchscreen, and the screen stays in a landscape orientation. You can use layout-large-notouch for layouts and drawable-land-xhdpi (1080p) or drawable-land-tvdpi (720p) for drawables to target Google TV. Also, ensure that all the controls in UI are D-pad-navigable and appear with focus and selection highlights when needed. For more information, read the section Controlling navigation and focus.
  2. The Android system assumes that all applications require a touchscreen. If you want a single app that works on both Google TV and regular touchscreen devices, declare:
    <uses-feature 
        android:name="android.hardware.touchscreen" 
        android:required="false"/>

    in your application's AndroidManifest.xml file. This doesn't affect your application's ability to use the touchscreen, but it does cause the Google Play Store to filter your application as Google TV-compatible.

  3. Runtime Feature detection: Your application logic can detect if your app is running on a Google TV device at runtime, and act accordingly. Google TV includes the system feature com.google.android.tv. This feature is unique to the Google TV platform, and indicates to applications that Android is running on a Google TV device. The following code snippet demonstrates how to detect the feature using PackageManager:
    if (getPackageManager().hasSystemFeature("com.google.android.tv")) {
        Log.d("TV Test", "Running on Google TV!");
    }

Multiple apks, Single Listing

Using Multiple APK Support, you can keep a separate code base for each device (Google TV, phone, and tablet) you support, while at the same time aggregating your ratings and feedback across all devices. However, none of the features which differentiate apks in multiple-apk support are helpful in differentiating a Google TV apk from your Android mobile or tablet apk. Differentiating between a Google TV and mobile device using screen size with multiple-apk support doesn't work, because while Google TV is a "large screen" device, so is a large-display mobile phone. You can use mutiple-apk support along with Google Play Store Filtering for Google TV criteria as a workaround:

To do this:

  1. Define the following element in your Google TV apk:
    <uses-feature android:name="com.google.android.tv" android:required="true"/>

    Google Play Store filtering will prevent your app from appearing on non-GoogleTV devices.

  2. Configure the non-Google TV .apk to use one of the features that is not supported on Google TV but is supported on mobile devices. The best feature to use is touchscreen. Google Play Store filtering will prevent it from appearing in the Google Play Store for Google TV.
  3. Set the android:minSdkVersionof each apk to a different value. For example, set the Google TV apk to android:minSdkVersion = "12" and mobile/tablet apks to android:minSdkVersion = "3" (or anything other than 12). API level is one of the attributes recognized by the multiple-apk feature, so using it allows you to upload multiple apks under the same listing.

Authentication required

You need to be signed in with Google+ to do that.

Signing you in...

Google Developers needs your permission to do that.