Building for Android TV with Unity

So you're porting your game over to Android TV using Unity 4.6. And it's not working and not getting approved by Google you say? And you've tried everything? Even sacrificing a goat in the name of the dark lord, you say? Well, the latter won't work! That's just silly!
You should be sacrificing a pig, not a goat. Geesh.

So anyway, what you need to do is write a proper manifest with all the right permissions. Unity 5 does most of this for you, so it shouldn't be a big problem. For those of us temporarily stuck in 4.6 though, it's a big problem. So here's the manifest you need:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.unity3d.player" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" android:installLocation="preferExternal" android:versionCode="1" android:versionName="1.0">
  
  <uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="com.android.vending.BILLING" />
  
  <uses-feature android:name="android.hardware.gamepad" android:required="true"/>
  <uses-feature android:name="android.software.leanback" android:required="true" />

  <uses-feature android:name="android.hardware.touchscreen" android:required="false"/>
  <uses-feature android:name="android.hardware.faketouch" android:required="false"/>
  <uses-feature android:name="android.hardware.telephony" android:required="false"/>
  <uses-feature android:name="android.hardware.camera" android:required="false"/>
  <uses-feature android:name="android.hardware.bluetooth" android:required="false"/>
  <uses-feature android:name="android.hardware.nfc" android:required="false"/>
  <uses-feature android:name="android.hardware.location.gps" android:required="false"/>
  <uses-feature android:name="android.hardware.microphone" android:required="false"/>
  <uses-feature android:name="android.hardware.sensor" android:required="false"/>
  
  <application 
        android:icon="@drawable/app_icon"
        android:banner="@drawable/banner" 
        android:label="@string/app_name" 
        android:debuggable="true" 
        android:isGame="true">
    
    <meta-data android:name="isGame" android:value="true" />
    
   <activity android:name="com.unity3d.player.UnityPlayerNativeActivity" android:label="@string/app_name">
  
      <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
      
          <intent-filter>
      <action android:name="android.intent.action.MAIN" />
      <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
    </intent-filter>
    
  </activity>
    
</application>
</manifest>

 

Note: remember to add a banner.jpg to Plugins/Android/res/drawable-xhdpi/  (if you're on Unity 4.6.X)