Jetifier不会转换支持依赖性

时间:2018-12-12 12:40:52

标签: android exoplayer android-jetifier

我在本地克隆了ExoPlayer,并使用settings.gradle将模块添加到了现有项目中,如文档所述:

gradle.ext.exoplayerRoot = 'path/to/exoplayer'
gradle.ext.exoplayerModulePrefix = 'exoplayer-'
apply from: new File(gradle.ext.exoplayerRoot, 'core_settings.gradle')

每当我尝试构建项目时,都会收到以下构建错误:

  

错误:程序包android.support.annotation不存在

ExoPlayer模块中的所有@NonNull@Nullable注释都会发生这种情况。

我在Android Studio 3.2.1中创建了一个新项目,在我的gradle.properties文件中添加了AndroidX支持,并相应地更新了我的build.gradle文件。

build.gradle

android {
    compileSdkVersion 28
    defaultConfig {
        minSdkVersion 26
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
    }

    dataBinding {
        enabled = true
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    //ExoPlayer
    implementation project(':exoplayer-library-core')
}

gradle.properties

org.gradle.jvmargs=-Xmx1536m
android.databinding.enableV2=true
android.useAndroidX=true
android.enableJetifier=true

如果我理解正确,Jetifier应该能够解析并将支持依赖关系转换为AndroidX依赖关系,但是这些本地模块似乎并非如此。

1 个答案:

答案 0 :(得分:1)

我设法通过为应用程序中使用的项目中的每个本地exoplayer模块指定一个gradle.properties文件来解决此问题。我仍然不知道是什么原因引起的,但是阻止Jetifier 迁移到AndroidX 来解决本地模块似乎可以解决此问题。

# Local module Gradle settings.
android.useAndroidX=false
# Jetifier will convert support libraries of all your dependencies to AndroidX automatically,
# if you don't set it true then your project will have both support
android.enableJetifier=false