我无法从github连接库

问题描述 投票:0回答:1

无法解析:com.jcodecraeer:xrecyclerview:1.6.0 无法解析:com.github.smarteist:autoimageslider:1.1.1 无法解析:com.android.volley:volley:1.1.1 无法解析:com.pierfrancescosoffritti.androidyoutubeplayer:core:8.0.1 无法解析:tv.danmaku.ijk.media:ijkplayer-java:0.8.8 无法解析:tv.danmaku.ijk.media:ijkplayer-armv7a:0.8.8 无法解析:tv.danmaku.ijk.media:ijkplayer-armv5:0.8.8 无法解析:tv.danmaku.ijk.media:ijkplayer-arm64:0.8.8 无法解析:tv.danmaku.ijk.media:ijkplayer-x86:0.8.8 无法解析:tv.danmaku.ijk.media:ijkplayer-x86_64:0.8.8

我的build.gradle(app)文件

apply plugin: 'com.android.application'

android {
compileSdkVersion 34
namespace "com.androworld.player.video_player"
defaultConfig {
    applicationId "com.androworld.player.video_player"
    minSdkVersion 21
    targetSdkVersion 34
    versionCode 40
    versionName "4.2.8"
    multiDexEnabled true
    ndk {
        // config you want to support device
        abiFilters 'arm64-v8a', 'armeabi', 'armeabi-v7a', 'x86'
    }
    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
    debugMini {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
configurations.all {
    resolutionStrategy {
        force 'androidx.annotation:annotation:1.2.0'
    }
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == 'com.android.support') {
            if (!requested.name.startsWith("multidex")) {
                details.useVersion '28.0.0'
            }

        }

    }

}

//    sourceSets.main {
//        jniLibs.srcDirs 'src/main/libs'
//    }

}

dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
//noinspection GradleCompatible
//implementation 'androidx.annotation:annotation:1.2.0'
//implementation 'androidx.annotation:annotation-jvm:1.7.0'
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
implementation 'androidx.multidex:multidex:2.0.1'
//support
implementation 'com.google.android.material:material:1.1.0'
implementation 'com.jcodecraeer:xrecyclerview:1.6.0'
implementation 'androidx.recyclerview:recyclerview:1.1.0'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'com.github.bumptech.glide:glide:4.9.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
//vector,percent,palette
implementation 'androidx.palette:palette:1.0.0'
implementation 'androidx.percentlayout:percentlayout:1.0.0'
implementation 'androidx.vectordrawable:vectordrawable:1.1.0'
//equlizer
implementation 'com.joanzapata.iconify:android-iconify-fontawesome:2.2.2'
implementation 'com.joanzapata.iconify:android-iconify-entypo:2.2.2'
//    implementation 'androidx.legacy:legacy-support-v4:1.0.0'

implementation 'com.github.smarteist:autoimageslider:1.1.1'
//data
implementation 'com.google.code.gson:gson:2.8.5'
implementation 'com.android.volley:volley:1.1.1'
implementation 'org.apache.commons:commons-io:1.3.2'
//youtubeplayer
implementation 'com.pierfrancescosoffritti.androidyoutubeplayer:core:8.0.1'
//    implementation 'com.pierfrancescosoffritti.androidyoutubeplayer:core:10.0.5'
//Ads
//implementation 'com.google.android.gms:play-services-ads:20.4.0'
//intro_screen
implementation project(':material-intro-screen')
//player
implementation 'tv.danmaku.ijk.media:ijkplayer-java:0.8.8'
implementation 'tv.danmaku.ijk.media:ijkplayer-armv7a:0.8.8'
implementation 'tv.danmaku.ijk.media:ijkplayer-armv5:0.8.8'
implementation 'tv.danmaku.ijk.media:ijkplayer-arm64:0.8.8'
implementation 'tv.danmaku.ijk.media:ijkplayer-x86:0.8.8'
implementation 'tv.danmaku.ijk.media:ijkplayer-x86_64:0.8.8'

//    implementation project(':ijkplayer-java')
//    implementation 'tv.danmaku.ijk.media:ijkplayer-exo:0.8.8'

//    implementation project(':xvideoplayer')
//    implementation 'com.henryblue.mxvideoplayer:xvideoplayer:1.2.1'
implementation 'com.firebase:firebase-client-android:2.5.0'
implementation 'com.yandex.android:mobileads:5.10.0'
implementation 'com.yandex.android:mobmetricalib:5.0.0'
//implementation 'com.google.android.gms:play-services-ads:17.2.1'

//implementation 'com.facebook.android:audience-network-sdk:5.3.0'

implementation 'androidx.work:work-runtime-ktx:2.7.1' //no started android api 32
}

settings.gradle(项目)

pluginManagement {
repositories {
    google()
    mavenCentral()
    gradlePluginPortal()
    maven { url "https://www.jitpack.io" }
}
}

plugins {
id 'org.gradle.toolchains.foojay-resolver-convention' version '0.8.0'
}

dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
    google()
    mavenCentral()
    jcenter() // Note: JCenter is deprecated and should be avoided if possible
    maven { url "https://www.jitpack.io" }
    maven {
        url "https://artifactory-external.vkpartner.ru/artifactory/maven"
    }
    maven { url 'https://dl.bintray.com/yandexmobile/maven' } // Likely deprecated, use 
alternatives
    maven { url "https://raw.github.com/embarkmobile/zxing-android-minimal/mvn-repo/maven- 
repository/" }
    maven { url "https://dl.bintray.com/theartofdev/Edmodo" } // Deprecated
}
}

include ':app', ':material-intro-screen'
android gradle
1个回答
0
投票

我的博客交叉发布此材料:


虽然造成这种情况的原因有很多,但最令许多开发人员困惑的一个原因是 现在源于以下事实:JCenter 的 Maven 存储库被许多库出版商使用, 已经不存在了。

对于积极发布的库,库开发人员现在可能已经转移到其他地方了。 对于许多开发人员来说,最好的答案是 Maven Central,尽管有些开发人员还有其他选择。 例如,Google 通过他们自己的 Maven 存储库提供了最新版本的 Volley。

但是,有很多不活跃发布的库。这些可能永远消失了。

JCenter 的更改没有同时影响所有人的原因在于 Gradle 缓存。 Gradle 会缓存工件,并且仅在需要时尝试下载它们,例如:

  • 您添加了新的库依赖项
  • 您更改了要使用的依赖项的版本
  • 您的 Gradle 工件缓存已被清除
  • 您尝试在一台新机器上进行构建,而不是以前的机器

后两者可能是造成与 JCenter 最相关的悲伤的原因。有些人建造了 以前工作过,也许在其他地方工作过(例如,在同事的机器上)不适合您, 因为“其他地方”已缓存工件,而您没有。使用 CI 服务器进行检索的团队 每个构建上的工件可能会在 JCenter 关闭后的一天内被发现。那些使用 只是本地构建机器可能多年都无法发现,这取决于它们保留多长时间 Gradle 工件缓存周围。


那么,如果你被这个事情抓住了,你会怎么做?

首先,在“teh interwebs”中搜索该库,看看是否有相关网站。许多 这些库是在 GitHub 等地方公开开发的。看看那个网站有没有说明 对于一些更新的维护版本,并迁移到它。相反,如果图书馆还没有 数年更新,考虑迁移到积极维护的内容。

您还可以搜索MvnRepository。这是几个索引 不同的工件存储库,包括 Maven Central 和 Google 的 Maven 存储库。它曾经 index JCenter,它还有一些其他不太常见的 Maven 存储库。或许你会发现 您需要的特定工件的另一个来源。但是,依赖时要小心 在来自更加随机的存储库的半随机库上 - 你要求成为 供应链攻击的受害者。

如果源代码在 GitHub 或其他地方可用,您可以分叉源代码并维护自己的源代码 复制。无论您将其公开(例如,在 Maven Central 上)还是只是共享 与你的团队取决于你。 Maven Local 是一种快速而简单的方式来建立 Maven 存储库 您的工件机器。设置私有共享存储库(例如通过 Amazon S3)是 非常可行,虽然有点神秘。

展望未来,目标是定期在干净的环境上进行干净的构建。即使你不 选择每晚进行 CI 服务器工作,每月在缺乏 CI 服务器的环境中进行一次构建 Gradle 缓存。这些构建的部分价值是更快地识别这样的问题, 这样您就可以在问题开始影响个别开发人员的生产力之前采取措施。

© www.soinside.com 2019 - 2024. All rights reserved.