Diretório de artigos
Substitua o endereço do depósito da biblioteca de terceiros do Android
cenário de problema
Uma biblioteca de permissão de localização location_permissions é usada em flutter e o seguinte erro é relatado durante a execução.
* 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.
analise de problemas
De acordo com a mensagem de erro, esta biblioteca depende de outras bibliotecas de terceiros e jcenter
o download do armazém falhou.
Mas o armazém jcenter padrão e o armazém maven foram substituídos no Android, por que você ainda o baixa do jcenter.
Abrimos o warehouse Github de location_permissions , abrimos o build.gradle no diretório android
e vimos aqui para entender que a configuração android do plug-in original usava o warehouse jencter, então as dependências relacionadas ao plug-in serão baixadas de jencter.
solução
Em seguida, vamos sobrescrever a referência de repositórios na biblioteca tripartida.
Abra settings.gradle.
Adicione o seguinte conteúdo
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 no diretório raiz do projeto
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/'
}
}
}
Execute-o novamente e as dependências na biblioteca de terceiros podem ser baixadas normalmente, e o erro de falha de download não será relatado.
Substitua o repositório SDK do flutter
cenário de problema
Execute novamente, ainda encontre o seguinte erro
* 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
analise de problemas
De acordo com a mensagem de erro, encontre app/build.gradle e encontre a seguinte referência na linha 33.
Ao executar ou compilar no lado do Android, ele chamará a configuração do gradle warehouse no flutter sdk para baixar as dependências correspondentes.
Em seguida, fomos para flutter.gradle no diretório correspondente do flutter sdk de acordo com esse endereço e encontramos a seguinte configuração de armazém. Corresponde apenas ao número da versão gradle 4.1.0 na mensagem de erro acima.
solução
Só precisamos substituir google e mavenCentral() por imagens de armazém doméstico.
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'
}
}
参考: Não é possível substituir repositórios Gradle em dependências de plug-in transitivas