Nau*_*lus 5 android gradle bintray flutter tensorflow
当我编译 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
Run Code Online (Sandbox Code Playgroud)
Bintray 已关闭https://google.bintray.com/exoplayer/org/tensorflow/tensorflow-lite/maven-metadata.xml
出现此问题后,尝试将 android/build.gradle 中的存储库从 Jcenter() 更改为 mavenCentral()
我的 android/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
}
Run Code Online (Sandbox Code Playgroud)
进行此更改后,错误继续出现,因为它来自 Google Bintray 存储库,但我无法删除存储库中的 Google,因为我使用了一些服务,应该如何解决该问题?我知道 Bintray 已经关闭了大约 10 天,但我想知道如何为 tensor-flow-lite 包正确实现 mavenCentral() 。
我是全新的,我不知道maven-metadata是否可以下载以及如何实现它,所以我需要知道如何解决这些依赖关系,这对我来说非常复杂。
[更新]
Android [502] 中 Bintray 的依赖问题已解决。IDE Android Studio 版本 4.1.1 。
在等待 bintray 的回复并通过电子邮件联系我后,我意识到最终 bintray 服务器将被阻止,因为 Jfrog 正在将工件迁移到 Artifactory,电子邮件回复如下“正如博客文章中所述,Bintray 将被日落无限期地,并且不会成为一个功能工具,因为我们将 Bintray 工具集迁移到 Artifactory。” 这是 bintray 的博客文章已关闭
此后,bintray 很可能将不再可用,或者尽管正如电子邮件回复所述,如果 Jfrog 考虑提升 bintray 服务器,迁移工件将需要很长时间。
要解决这个问题并且它完美地工作是:
[1.] 检查您的项目需要哪些工件
[2.] 将包含工件的存储库导入到存储库中的 build.gradle
[3.] 评论(如果您希望 google bintray 返回)google 存储库 ()。
[4.]验证依赖项的正确实现
所有这些将使存储库查找 bintray 中的依赖项并从您选择的提升服务器中占用它。
就我个人而言,我的工件位于 maven() 存储库中,因此我在 build.gradle 中进行了此更改。
将存储库中的 google() 和 jCenter() 替换为 maven()。
构建.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
}
Run Code Online (Sandbox Code Playgroud)
这为他们提供了他们需要的存储库......
检查您是否安装了 Google Play 服务,它解决了我的一些问题。
颤振插件
有一个类似的答案可以帮助解决这个问题,但它与 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.
Run Code Online (Sandbox Code Playgroud)
这是一个颤振插件“tflite”的示例。
为了解决这个问题,你必须寻找pubspec.yaml获取的flutter插件。
注意:重要的是,这些更改只是一个临时技巧,直到 google 修复其在 bintray 中的存储问题,或者虽然,直到有针对 maven () 的版本,至少这允许应用程序被编译并且可以在我的情况是好的,但我再说一遍,这是一个诡计,不应该这样做。
[1.]在项目级别,在外部库>Flutter插件>搜索插入错误(例如tflite)中查找flutter插件。
[2.]打开插件并修改其build.gradle,更改工件在另一台服务器上的存储库,在我的例子中它仍然在maven()中。
更改依赖项中工件的版本,如果出现+,则将其删除,保留固定版本。
注意:添加repository中的“includeGroup”是为了让插件不再寻找bintray插件,如果删除这个或者google仓库(),我不知道为什么插件一直在寻找那个路径,所以就最好将其排除在外,以便它在自行指定的存储库中查找。
插件的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'
}
}
Run Code Online (Sandbox Code Playgroud)
提醒:记得检查好存储库,并在依赖项中删除包含 + 的版本,例如 0.0.5+,并将其更改为现有的固定版本例如 0.0.2。
如果您的编辑器说该文件不属于您的项目,请选择“我仍然想编辑此文件”。
所有这些更改将导致 Flutter 插件本身搜索具有补充且功能正常的服务器,而 google 不会修复此问题或启动新版本,如果您更新 pubspec.yaml,您可能可以在插件中恢复您自己的更改,所以要小心,但这现在应该可以编译你了。
小智 4
我可以确认这是有效的修复。已经赞成你的答案。
这是我为我的tensorflow-lite项目修改的tflite构建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'
}
}
Run Code Online (Sandbox Code Playgroud)
这是我当前的构建 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
}
Run Code Online (Sandbox Code Playgroud)
通过我使用TFlite plugin version 1.1.1
Gradle 包装版本
distributionUrl = https\://services.gradle.org/distributions/gradle-6.1.1-all.zip
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4871 次 |
最近记录: |