Directorio de artículos
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 jcenter
la 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
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.
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