【问题标题】:what is a dependency for android.media.tvandroid.media.tv 的依赖项是什么
【发布时间】:2018-02-08 08:10:01
【问题描述】:

我尝试将 Android TV 应用移至 Android Studio。当我尝试编译它时,我遇到了一些导入错误。我找不到可以添加到 build.gradle 来解决这些问题的依赖项。进口清单是:

import android.media.tv.TvContentRatingSystemInfo;
import android.media.tv.TvContract.WatchedPrograms;
import com.android.tv.tuner.data.nano.Track.AtscCaptionTrack;
import com.android.tv.tuner.data.nano.Track.AtscAudioTrack;
import com.android.tv.tuner.data.nano.Channel;

build.gradle 是:

apply plugin: 'com.android.application'

android {
 compileSdkVersion 26
 buildToolsVersion "26.0.1"

 defaultConfig {
     applicationId "com.android.tv"
     minSdkVersion 23
     targetSdkVersion 23
     versionCode 1
     versionName "1.0"

     ndk {
         moduleName "libtunertvinput_jni"
     }
 }
 sourceSets {
     main {
         res.srcDirs = ['src/main/res', 'src/main/usbtuner-res']
         jni.srcDirs = []
     }
 }
 buildTypes {
     release {
         minifyEnabled false
         proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
     }
     debug {
         minifyEnabled false
         proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
     }
 }
}

dependencies {
 compile fileTree(dir: 'libs', include: ['*.jar'])
 compile files('libs/exoplayer.jar')
 compile project(':common')
 compile 'com.android.support:palette-v7:+'
 compile 'com.android.support:support-v4:+'
 compile 'com.android.support:support-annotations:+'
}

【问题讨论】:

  • 你能在 github 上发布一个具有这种行为的简单项目吗?

标签: java android gradle android-tv


【解决方案1】:

您无法导入这些,因为它们有 @SystemApi 注释。您可以查看this 获取TvContentRatingSystemInfo 的源代码。我还检查了WatchedPrograms,它也有@SystemApi 注释。其他三个我没有检查。

您需要成为系统应用才能访问这些。如您所见here,您需要将您的应用推送到\system\ 文件夹中。您可以找到有关 AOSP 构建系统的详细信息here

解决方案: 将您的android.jar 更改为github 中的.jar 应该使您能够访问系统API。原因是您的标准 android.jar 没有系统 API。因此,您需要从模拟器中获取framework.jar(通过adb pull)并将其与core.jar 结合,然后您可以拥有包含系统API 的新android.jar(系统方法和类在模拟器中的framework.jar 中可用) .

此外,您应该将您的 apk 推送到 \system\priv-app\ 文件夹以访问某些系统 API,但我不知道为什么当我使用该 github 帐户中的 .jar 时,我可以在不将我的 apk 推送到 \system\priv-app\ 的情况下访问系统 API。

我觉得我写的不是很清楚,但至少现在你对你所面临的事情有了更多的了解。

【讨论】:

    【解决方案2】:

    android.media.tvcom.android.tv 是 Android SDK 的一部分。所以你不需要在 gradle.build 文件中包含任何额外的库。

    只要确保:

    Update your SDK tools to version 24.0.0 or higher

    Update your SDK with Android 5.0 (API 21) or higher

    例子,

     android {
            compileSdkVersion 26
            buildToolsVersion "26.0.1"
            defaultConfig {
                applicationId "com.example.tvapp"
                minSdkVersion 15
                targetSdkVersion 26
                versionCode 1
                versionName "1.0"
            }
    }
    

    【讨论】:

    • android 平台版本是:API 26 android SDK 工具:26.0.02 但仍然无法正常工作
    • 您是否尝试过文件 > 使缓存无效/重新启动?此外,发布您的 build.gradle 文件应用程序和模块。 @MRM
    【解决方案3】:

    在您的依赖项“com.android.support:support-media-compat:26.0.2”中使用它

    并且还使用工具版本“26.0.1”

    编译的 SDK 版本 26。

    【讨论】:

      【解决方案4】:

      您可以在应用级别的 gradle 中添加依赖项。

      compile 'com.google.android.libraries.tv:companionlibrary:0.1'
      

      【讨论】:

        猜你喜欢
        • 2015-04-13
        • 2013-01-20
        • 1970-01-01
        • 2017-10-25
        • 1970-01-01
        • 2020-07-14
        • 2012-05-24
        • 2013-07-10
        • 1970-01-01
        相关资源
        最近更新 更多