Substitua o endereço do armazém dos repositórios em gradle no Flutter e no Android

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 jcentero 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
insira a descrição da imagem aqui
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.
insira a descrição da imagem aqui

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

Acho que você gosta

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