Anule la dirección del almacén de repositorios en gradle en Flutter y Android

Anular la dirección del almacén de la biblioteca de tres partes de Android

escenario del problema

Se usa una biblioteca de permisos de ubicación location_permissions en flutter y se informa el siguiente error cuando se ejecuta.

* What went wrong:
A problem occurred configuring project ':location_permissions'.
> Could not resolve all artifacts for configuration ':location_permissions:classpath'.
   > Could not resolve org.ow2.asm:asm-util:6.0.
     Required by:
         project :location_permissions > com.android.tools.build:gradle:3.5.0
         project :location_permissions > com.android.tools.build:gradle:3.5.0 > com.android.tools.build:builder:3.5.0
         project :location_permissions > com.android.tools.build:gradle:3.5.0 > com.android.tools.build.jetifier:jetifier-processor:1.0.0-beta04
      > Could not resolve org.ow2.asm:asm-util:6.0.
         > Could not get resource 'https://jcenter.bintray.com/org/ow2/asm/asm-util/6.0/asm-util-6.0.pom'.
            > Could not HEAD 'https://jcenter.bintray.com/org/ow2/asm/asm-util/6.0/asm-util-6.0.pom'.
               > The server may not support the client's requested TLS protocol versions: (TLSv1.2, TLSv1.3). You may need to configure the client to allow other protocols to be used. See: https://docs.gradle.org/7.2/userguide/build_environment.html#gradle_system_properties
                  > Remote host terminated the handshake
> Failed to notify project evaluation listener.
   > Could not get unknown property 'android' for project ':location_permissions' of type org.gradle.api.Project.
   > Could not get unknown property 'android' for project ':location_permissions' of type org.gradle.api.Project.

análisis del problema

Según el mensaje de error, esta biblioteca depende de otras bibliotecas de terceros y jcenterla descarga desde el almacén falló.
Pero el almacén predeterminado de jcenter y el almacén de maven se han reemplazado en Android, ¿por qué todavía lo descarga de jcenter.

Abrimos el almacén de Github de location_permissions , abrimos build.gradle en el directorio de Android
inserte la descripción de la imagen aquí
y vimos aquí para comprender que la configuración de Android del complemento original usaba el almacén de jencter, por lo que las dependencias relacionadas con el complemento se descargarán de jencter.

solución

A continuación, sobrescribamos la referencia de los repositorios en la biblioteca tripartita.
Abra settings.gradle
Agregue el siguiente contenido

dependencyResolutionManagement {
    
    
  repositories {
    
    
        maven {
    
    
            url 'https://maven.aliyun.com/repository/public/'
        }
        maven {
    
    
            url 'https://maven.aliyun.com/repository/central/'
        }
        maven {
    
    
            url 'https://maven.aliyun.com/repository/google/'
        }
        maven {
    
    
            url 'https://maven.aliyun.com/repository/gradle-plugin/'
        }
  }
  repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)
}

Abra build.gradle en el directorio raíz del proyecto

buildscript {
    
    
    repositories {
    
    
        maven {
    
    
            url 'https://maven.aliyun.com/repository/public/'
        }
        maven {
    
    
            url 'https://maven.aliyun.com/repository/central/'
        }
        maven {
    
    
            url 'https://maven.aliyun.com/repository/google/'
        }
        maven {
    
    
            url 'https://maven.aliyun.com/repository/gradle-plugin/'
        }
    }
	......
}

allprojects {
    
    
    buildscript {
    
    
	    repositories {
    
    
            maven {
    
    
                url 'https://maven.aliyun.com/repository/public/'
            }
            maven {
    
    
                url 'https://maven.aliyun.com/repository/central/'
            }
            maven {
    
    
                url 'https://maven.aliyun.com/repository/google/'
            }
            maven {
    
    
                url 'https://maven.aliyun.com/repository/gradle-plugin/'
            }
	    }
	}
    repositories {
    
    
        maven {
    
    
            url 'https://maven.aliyun.com/repository/public/'
        }
        maven {
    
    
            url 'https://maven.aliyun.com/repository/central/'
        }
        maven {
    
    
            url 'https://maven.aliyun.com/repository/google/'
        }
        maven {
    
    
            url 'https://maven.aliyun.com/repository/gradle-plugin/'
        }
    }
}

Vuelva a ejecutarlo, y las dependencias en la biblioteca de tres partes se pueden descargar normalmente, y no se informará el error de falla de descarga.

Reemplazar repositorio flutter sdk

escenario del problema

Ejecutar de nuevo, todavía encuentra el siguiente error

* Where:
Build file '/Users/ado/Developer/project/x_creator/android/app/build.gradle' line: 33

* What went wrong:
A problem occurred evaluating project ':app'.
> Could not resolve all artifacts for configuration 'classpath'.
   > Could not resolve com.google.flatbuffers:flatbuffers-java:1.12.0.
     Required by:
         unspecified:unspecified:unspecified > com.android.tools.build:gradle:4.1.0
      > Could not resolve com.google.flatbuffers:flatbuffers-java:1.12.0.
         > Could not get resource 'https://repo.maven.apache.org/maven2/com/google/flatbuffers/flatbuffers-java/1.12.0/flatbuffers-java-1.12.0.pom'.
            > Could not HEAD 'https://repo.maven.apache.org/maven2/com/google/flatbuffers/flatbuffers-java/1.12.0/flatbuffers-java-1.12.0.pom'.
               > The server may not support the client's requested TLS protocol versions: (TLSv1.2, TLSv1.3). You may need to configure the client to allow other protocols to be used. See: https://docs.gradle.org/7.2/userguide/build_environment.html#gradle_system_properties
                  > Remote host terminated the handshake
   > Could not resolve org.tensorflow:tensorflow-lite-metadata:0.1.0-rc1.
     Required by:
         unspecified:unspecified:unspecified > com.android.tools.build:gradle:4.1.0
      > Could not resolve org.tensorflow:tensorflow-lite-metadata:0.1.0-rc1.
         > Could not get resource 'https://repo.maven.apache.org/maven2/org/tensorflow/tensorflow-lite-metadata/0.1.0-rc1/tensorflow-lite-metadata-0.1.0-rc1.pom'.
            > Could not GET 'https://repo.maven.apache.org/maven2/org/tensorflow/tensorflow-lite-metadata/0.1.0-rc1/tensorflow-lite-metadata-0.1.0-rc1.pom'.
               > The server may not support the client's requested TLS protocol versions: (TLSv1.2, TLSv1.3). You may need to configure the client to allow other protocols to be used. See: https://docs.gradle.org/7.2/userguide/build_environment.html#gradle_system_properties
                  > Remote host terminated the handshake

análisis del problema

De acuerdo con el mensaje de error, busque app/build.gradle y busque la siguiente referencia en la línea 33.
Al ejecutar o compilar en el lado de Android, llamará a la configuración del almacén de gradle en el sdk de flutter para descargar las dependencias correspondientes.
inserte la descripción de la imagen aquí

Luego fuimos a flutter.gradle en el directorio correspondiente de flutter sdk según esta dirección, y encontramos la siguiente configuración de almacén. Simplemente corresponde al número de versión 4.1.0 de Gradle en el mensaje de error anterior.

solución

Solo necesitamos reemplazar google y mavenCentral() con imágenes de almacenes domésticos.

buildscript {
    repositories {
        //google()
        //mavenCentral()
        maven {
            url 'https://maven.aliyun.com/repository/public/'
        }
        maven {
            url 'https://maven.aliyun.com/repository/central/'
        }
        maven {
            url 'https://maven.aliyun.com/repository/google/'
        }
        maven {
            url 'https://maven.aliyun.com/repository/gradle-plugin/'
        }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:4.1.0'
    }
}

参考:No se pueden anular los repositorios de Gradle en dependencias transitivas de complementos

Supongo que te gusta

Origin blog.csdn.net/adojayfan/article/details/126269390
Recomendado
Clasificación