Bintray 502 的 Android 存储库 Flutter TensorFlow-lite 中的问题

Posted

技术标签:

【中文标题】Bintray 502 的 Android 存储库 Flutter TensorFlow-lite 中的问题【英文标题】:Problems in Android repository Flutter TensorFlow-lite by Bintray 502 【发布时间】:2022-01-15 09:58:10 【问题描述】:

当我编译我的 android Flutter 应用程序时出现此错误

Could not determine the dependencies of task ':app:processDebugResources'.
> Could not resolve all task dependencies for configuration ':app:debugRuntimeClasspath'.
   > Could not resolve org.tensorflow:tensorflow-lite:+.
     Required by:
         project :app > project :tflite
      > Failed to list versions for org.tensorflow:tensorflow-lite.
         > Unable to load Maven meta-data from https://google.bintray.com/exoplayer/org/tensorflow/tensorflow-lite/maven-metadata.xml.
            > Could not get resource 'https://google.bintray.com/exoplayer/org/tensorflow/tensorflow-lite/maven-metadata.xml'.
               > Could not GET 'https://google.bintray.com/exoplayer/org/tensorflow/tensorflow-lite/maven-metadata.xml'. Received status code 502 from server: Bad Gateway

Bintray 因这个 https://google.bintray.com/exoplayer/org/tensorflow/tensorflow-lite/maven-metadata.xml 而失败

出现此问题后尝试将 android/build.gradle 中的存储库从 Jcenter() 更改为 mavenCentral()

我的安卓/build.gradle

buildscript 
    repositories 
        mavenCentral()
        google()
        //jcenter()
    

    dependencies 
        //classpath 'com.android.tools.build:gradle:3.5.0'
        classpath 'com.android.tools.build:gradle:3.5.4'
        //classpath 'com.google.gms:google-services:4.3.5'
        classpath 'com.google.gms:google-services:4.3.4'
    


allprojects 
    repositories 
        mavenCentral()
        //google()
        //jcenter()
    


rootProject.buildDir = '../build'
subprojects 
    project.buildDir = "$rootProject.buildDir/$project.name"

subprojects 
    project.evaluationDependsOn(':app')


task clean(type: Delete) 
    delete rootProject.buildDir


更改后,由于来自Google Bintray存储库,错误继续出现,但是由于我使用了一些服务,无法删除存储库中的Google,应该如何解决问题?我知道 Bintray 已经关闭了大约 10 天,但我想知道如何为 tensor-flow-lite 包正确实现 mavenCentral()。

我是新手,不知道maven-metadata是否可以下载以及如何实现,所以我需要知道如何解决这些依赖关系,这对我来说非常复杂。

[更新]

Bintray 在 Android [502] 中的依赖问题已解决。 IDE Android Studio 4.1.1 版。

在等待 bintray 的回复并通过电子邮件与我联系后,我意识到最终 bintray 服务器将被阻止,因为 Jfrog 正在将工件迁移到 Artifactory,电子邮件回复如下 “正如博文中所述,Bintray 将无限期地被淘汰,并且在我们将 Bintray 工具集迁移到 Artifactory 时将不再是一个功能性工具。 " This is the blog post for bintray is down

在此之后,很可能 bintray 将不再可用,或者尽管正如电子邮件回复所说,如果 Jfrog 考虑解除 bintray 服务器,迁移工件将需要很长时间。

要解决这个问题并完美运行的是:

[1.] 检查您的项目需要哪些工件

[2.] 将包含工件的仓库导入仓库中的 build.gradle

[3.] 注释(如果您希望 google bintray 返回)google 存储库 ()。

[4.] 验证依赖项的正确实现

所有这些都将使存储库查找 bintray 中的依赖项,并从您选择的提升服务器中占用它。

就我个人而言,我的工件位于 maven() 存储库中,因此我在 build.gradle 中进行了此更改。

将仓库中的 google() 和 jCenter() 替换为 maven()。

build.gradle


buildscript 
    repositories 
        mavenCentral()
        maven 
            url 'https://maven.google.com'
        
        //mavenCentral()
        //google()
        //jcenter()
    

    dependencies 

        //classpath 'com.android.tools.build:gradle:3.5.0'
        classpath 'com.android.tools.build:gradle:4.1.0'

        //classpath 'com.google.gms:google-services:4.3.5'
        classpath 'com.google.gms:google-services:4.3.4'
    


allprojects 
    repositories 
        mavenCentral()
        maven 
            url 'https://maven.google.com'
        
        //mavenCentral()

        //google()
        //jcenter()
    


rootProject.buildDir = '../build'
subprojects 
    project.buildDir = "$rootProject.buildDir/$project.name"

subprojects 
    project.evaluationDependsOn(':app')


task clean(type: Delete) 
    delete rootProject.buildDir


这得到了他们需要的存储库...

检查您是否安装了 Google Play 服务,它为我解决了一些问题。

Flutter 插件

有一个类似的答案similar对此有所帮助,但它与 Android IDE 不对应,这需要更多的小步骤。

Flutter 插件(一些)尽管在通用项目中通过 maven() 更改 build.gradle 中的存储库,但仍会继续搜索 google.bintray 存储库,因为插件本身在其 build.gradle 中有此存储库,肯定会出现此错误如果没有解决以下问题,则出现。

 > Unable to load Maven meta-data from https://google.bintray.com/exoplayer/org/tensorflow/tensorflow-lite/maven-metadata.xml.

这是一个带有颤振插件“tflite”的示例。

要解决这个问题,你必须寻找pubspec.yaml获得的flutter插件。

注意:重要的是,这些更改只是一个临时技巧,直到 google 修复了它在 bintray 中的存储问题,或者尽管直到有指向 maven() 的版本,至少这允许编译应用程序并且它有效,在我的情况下它很好,但我再说一遍,这是一个技巧,不应该这样做。

[1.]在项目层面,在External library>Flutter plugins>Search plugging error(example tflite)中寻找flutter plugins。

[2.]打开插件并修改它的 build.gradle,更改工件在另一台服务器上的存储库,在我的情况下它仍然在 maven() 中。

更改依赖中的artifact的版本,如果出现+,删除,保留固定版本。

注意:添加repository中的“includeGroup”是为了让插件不再寻找bintray插件,如果你删除这个或者google repository(),不知道为什么插件一直在找那个路径,因此最好将其排除在外,以便在自指定的存储库中查找。

插件的build.gradle(例如tflite)

group 'sq.flutter.tflite'
version '1.0-SNAPSHOT'

buildscript 
    repositories //Changes here ***************
        mavenCentral()
        maven 
            url 'https://maven.google.com'
        
        google 
            content 
                includeGroup "https://google.bintray.com/exoplayer/org/tensorflow/tensorflow-lite/0.0.1/tensorflow-lite-0.0.1.pom"
            
        

    

    dependencies 
        classpath 'com.android.tools.build:gradle:3.1.2'
    


rootProject.allprojects 
    repositories 
        mavenCentral()
        maven 
            url 'https://maven.google.com'
        
        google 
            content 
                includeGroup "https://google.bintray.com/exoplayer/org/tensorflow/tensorflow-lite/0.0.1/tensorflow-lite-0.0.1.pom"
            
        
    


apply plugin: 'com.android.library'

android 
    compileSdkVersion 27

    defaultConfig 
        minSdkVersion 16
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    
    lintOptions 
        disable 'InvalidPackage'
    

    dependencies //Changes here, delete 0.0.5+ to 0.0.5 example..
        compile 'org.tensorflow:tensorflow-lite:0.0.1-gpu-experimental'
    


提醒:记得检查好仓库,并在依赖关系中删除包含+的版本,例如0.0.5+并将其更改为现有的固定版本例如0.0.2。

如果您的编辑器说该文件不属于您的项目,请选择“我还是要编辑此文件”。

所有这些更改将导致 Flutter 插件本身搜索具有补充功能且功能正常的服务器,而 google 未修复此问题或启动新版本,可能如果您更新 pubspec.yaml,您可以恢复您自己的更改插件,所以要小心,但现在应该编译你。

【问题讨论】:

你可以试试我发布的答案for a similar question。在您的情况下,您将不得不寻找tflite 插件而不是location,并将插件build.gradle 中包含org.tensorflow:tensorflow-lite:+ 的任何行替换为固定版本号而不是末尾的+。看起来你可以找到一些版本号来尝试here。另一种选择是更改为最近更新的 Tensor Flow Lite 插件。 @Magnus 非常感谢我能够做到这一点,但我还必须进行其他更改并且它有效,我将发布更新以提供帮助。 【参考方案1】:

我可以确认这是有效的修复程序。已经对您的答案表示赞同。

这是我为我的 tensorflow-lite 项目修改的 tflite build gradle 插件

group 'sq.flutter.tflite'
version '1.0-SNAPSHOT'

buildscript 
    repositories 
        google()
        mavenCentral()
    

    dependencies 
        classpath 'com.android.tools.build:gradle:3.1.2'
    


rootProject.allprojects 
    repositories 
        google()
        mavenCentral()
    


apply plugin: 'com.android.library'

android 
    compileSdkVersion 30

    defaultConfig 
        minSdkVersion 21
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    
    lintOptions 
        disable 'InvalidPackage'
    

    dependencies 
        implementation 'org.tensorflow:tensorflow-lite:2.3.0'
        implementation 'org.tensorflow:tensorflow-lite-gpu:2.3.0'
    

这是我当前的构建 gradle。我将所有 jcenter 更改为 mavencentral 以使其正常工作。我的项目现在可以离线和在线工作。

buildscript 
    ext.kotlin_version = '1.3.50'
    repositories 
        google()  // Google's Maven repository
        mavenCentral()  // removed jcenter add this
    

    dependencies 
        classpath 'com.google.gms:google-services:4.3.4'
        classpath 'com.android.tools.build:gradle:4.0.1'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    


allprojects 
    repositories 
        google()  // Google's Maven repository
        mavenCentral() // removed jcenter add this
    


rootProject.buildDir = '../build'
subprojects 
    project.buildDir = "$rootProject.buildDir/$project.name"

subprojects 
    project.evaluationDependsOn(':app')


task clean(type: Delete) 
    delete rootProject.buildDir

即时通讯使用TFlite plugin version 1.1.1

Gradle 包装器版本

distributionUrl = https\://services.gradle.org/distributions/gradle-6.1.1-all.zip

【讨论】:

以上是关于Bintray 502 的 Android 存储库 Flutter TensorFlow-lite 中的问题的主要内容,如果未能解决你的问题,请参考以下文章

502 google.bintray.com 网关错误

Bintray日落后Android项目构建失败

使用选定的风格将 Android 库 (aar) 发布到 Bintray

android studio maven 拉取代码出现 bad gateway 502

android studio maven 拉取代码出现 bad gateway 502

android studio maven 拉取代码出现 bad gateway 502