什么是android.media.tv的依赖项

MRM*_*MRM 7 java android gradle android-tv

我尝试将Android TV应用程序移动到Android工作室.当我尝试编译它时,我有一些导入错误.我找不到可以添加到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;
Run Code Online (Sandbox Code Playgroud)

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:+'
}
Run Code Online (Sandbox Code Playgroud)

Yon*_*nto 1

您无法导入它们,因为它们有@SystemApi注释。你可以检查一下这个的源代码TvContentRatingSystemInfo。我也查了一下WatchedPrograms,也有@SystemApi注释。其他三个我没有检查过。

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

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

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

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