解决Android TV版APP在真机上无法安装的问题

最近接了个与TV开发相关的项目,采用AS自动生成的项目在模拟器上运行没问题,但是在电视真机上就是安装不上,跑不起来,我这还没有电视测试,测试还要去找朋友借设备,有点郁闷。

AS自动生成的manifest文件如下

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:banner="@drawable/app_icon_your_company"
        android:theme="@style/Theme.Leanback">
        <activity
            android:name=".MainActivity"
            android:icon="@drawable/app_icon_your_company"
            android:label="@string/app_name"
            android:logo="@drawable/app_icon_your_company"
            android:screenOrientation="landscape">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
            intent-filter>
        activity>
    application>

与我们平常看到的项目不同的是category 的值LEANBACK_LAUNCHER,这是官方对TV启动的配置参数,用google的模拟器启动只要你配置了banner,在桌面上就能正常显示图标和打开;但是在国内的各大TV真机上还是又找不到图标无法打开的问题。为了解决这个问题我是全网搜索,但是网上TV开发的案例不多,而且都是和AS自动生成的代码类似,估计都是在Google的模拟器上测试的结果。无果,只能去sdk里面看官方文档了,我这没等级的英文水平居然找到了自己想要的答案。所以正确的manifest应该是下面的

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:banner="@drawable/app_icon_your_company"
        android:theme="@style/Theme.Leanback">
        <activity
            android:name=".MainActivity"
            android:icon="@drawable/app_icon_your_company"
            android:label="@string/app_name"
            android:logo="@drawable/app_icon_your_company"
            android:screenOrientation="landscape">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
                <category android:name="android.intent.category.LAUNCHER" />
            intent-filter>
        activity>

    application>

区别就是一行配置:

<category android:name="android.intent.category.LAUNCHER" />

也就是得用我们传统得启动配置。

学习正确的姿势还是得去看官方文档:…sdk/docs/training/tv/start/start.html#dev-project

你可能感兴趣的:(android)