You need to enable JavaScript to run this app. 如何在Android Studio制作仅支持Android TV及电视盒子运行的APK
优惠活动
大模型
产品
解决方案
定价
更多

如何在Android Studio制作仅支持Android TV及电视盒子运行的APK

让APK仅在Android TV/电视盒子上运行的配置方案

系统层安装拦截配置(核心生效逻辑)

系统包管理器在检测APK兼容性时,会优先匹配APK声明的required=true的系统特性,缺失对应特性的设备会直接拦截安装流程,不会弹出安装确认框。

  • 强制声明TV专属特性依赖
    在AndroidManifest.xml的<manifest>节点下添加特性声明:
    <!-- 强制要求设备支持Leanback TV适配框架:正规手机/平板默认不会内置该系统特性,触发安装拦截 -->
    <uses-feature
        android:name="android.software.leanback"
        android:required="true" />
    <!-- 明确告知系统应用不依赖触控屏,避免TV/盒子因无触控屏被反向判定为不兼容 -->
    <uses-feature
        android:name="android.hardware.touchscreen"
        android:required="false" />
    
  • 替换为TV专属启动入口
    把适配手机的普通启动类别替换为TV专用的Leanback启动类别,禁止保留普通手机端的启动类别,避免非TV设备安装后在应用抽屉显示入口:
    <activity
        android:name=".MainActivity"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <!-- 仅保留TV系统识别的启动类别,不要添加android.intent.category.LAUNCHER -->
            <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
        </intent-filter>
    </activity>
    
  • 关闭非必要硬件的强制依赖
    把所有和手机端强绑定的硬件特性(相机、GPS、麦克风、通话能力等)的required属性设为false,避免正规TV设备因缺失这些硬件无法完成安装:
    <uses-feature
        android:name="android.hardware.camera"
        android:required="false" />
    <uses-feature
        android:name="android.hardware.location.gps"
        android:required="false" />
    

运行时兜底校验

部分第三方定制手机ROM可能自行添加Leanback特性声明,绕过系统层的安装拦截。这类场景需要在应用启动流程中增加二次校验,在任何业务逻辑加载前判断设备类型:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    val pm = packageManager
    // 同时校验两类TV核心系统特性,确认设备属于TV/盒子范畴
    val isTvDevice = pm.hasSystemFeature(PackageManager.FEATURE_LEANBACK) 
        || pm.hasSystemFeature("android.hardware.type.television")
    if (!isTvDevice) {
        Toast.makeText(this, "当前设备不支持运行本应用", Toast.LENGTH_LONG).show()
        finish()
        return
    }
    // 正常加载应用内容
}

配置效果验证

打包完成后,可以使用Android SDK自带的aapt工具校验APK的兼容性配置,在终端执行命令确认配置生效:
aapt dump badging 你的APK路径.apk
查看输出的uses-feature条目,确认存在required:'true' android.software.leanback的声明,代表系统层拦截规则已经生效。

常见踩坑提示

  • 不要保留普通的android.intent.category.LAUNCHER类别,否则第三方安装器可以绕过系统拦截,强制把APK安装到手机上,且应用会在手机桌面生成可见图标
  • 不要把触控屏的特性依赖设为required="true",所有正规TV和盒子基本都没有内置触控屏,这个配置写反会直接导致所有TV设备都无法安装
  • 不要把Leanback特性的required设为false,否则系统会认为该应用兼容所有设备,完全失去安装拦截能力

内容的提问来源于stack exchange,提问作者yasser elalami

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.26 20:54:03