如何使一个apk既可以在移动端也可以在android-TV中使用?

Posted

技术标签:

【中文标题】如何使一个apk既可以在移动端也可以在android-TV中使用?【英文标题】:How to make an apk can be used both in mobile and android-TV? 【发布时间】:2015-10-25 01:27:16 【问题描述】:

现在我正在为移动和 android-TV 开发一个应用程序。根据android develop guide,可以这样做。

由于某些原因,我单独开发了两个应用程序。

只是简单地合并两个应用程序的源来存档吗?还是有什么需要注意的?

【问题讨论】:

【参考方案1】:

在您的 Android Manifest 中,您必须以稍微不同的方式装饰您的 App Activity 和 TV Activity:

这是你如何装饰你的应用活动

<activity
    android:name=".player.app.LaunchActivity"
    android:label="@string/app_name">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

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

这是你如何装饰你的电视活动

<activity
    android:name=".player.tv.TvActivity"
    android:theme="@style/Theme.Leanback" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
    </intent-filter>
</activity>
注意 Leanback 主题的使用和 LEANBACK_LAUNCHER 的类别意图

还要确保限制和不需要的功能

<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.camera.front"
    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:name=".library.core.MainApplication"
    android:allowBackup="true"
    android:banner="@drawable/mythtv_logo"
    android:icon="@drawable/ic_mythtv"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

【讨论】:

【参考方案2】:

是的,移动和电视专用代码都可以打包在同一个 APK 中。事实上,大部分非 UI 代码理论上可以在两者之间共享。

【讨论】:

以上是关于如何使一个apk既可以在移动端也可以在android-TV中使用?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以同时运行两个 apk 并使它们通过 Windows 服务进行通信?

如何使按钮每秒在布局中随机移动

构建 APK(s):构建 APK 时出错。您可以在“消息”视图中找到错误

Hbuilder中如何将移动APP打包成APK

如何使用手机CAD看图将图纸放大缩小?

如何使用手机CAD看图将图纸放大缩小?