reina ellery
Nota del moderador: Esto parece ser una interrupción del servicio. Stack Overflow no puede proporcionar soporte para este problema
> Failed to list versions for com.google.http-client:google-http-client-android.
> Unable to load Maven meta-data from https://jcenter.bintray.com/com/google/http-client/google-http-client-android/maven-metadata.xml.
> Could not HEAD 'https://jcenter.bintray.com/com/google/http-client/google-http-client-android/maven-metadata.xml'.
> Read timed out
Estaba tratando de crear una aplicación para Android, pero obtuve el error anterior. Cuando me conecto a “https://jcenter.bintray.com/com/google/http-client/google-http-client-android/maven-metadata.xml”, aparece un error nginx 403. ¿JCenter está caído? ¿Qué tengo que hacer?
HBB20
tldr;
Sí. jcenter
está caído ahora mismo. Pero hay una manera de solucionar el problema. jcenter
se apagó hace un tiempo y permaneció disponible en modo de solo lectura. Hasta el momento no hay actualizaciones sobre cuándo volverá a estar disponible. Dependiendo de su situación, usted tiene rápida o no tan rapido opciones para ti.
¿Dónde puedo consultar el estado?
actualización: aquí se informa un nuevo incidente. Mira esto.
Como @Adrian mencionó en el comentario, puede verificar el estado del incidente actual en Página de estado de incidentes de Gradle. Actualización: el estado muestra “Resuelto”, pero aún no puedo realizar el proyecto. Así que me pregunto si esa página de estado solo muestra el impacto de jcenter
en Gradle Plugin Portal y no en el estado de jcenter
en general.
Hasta ahora, no puedo encontrar ningún lugar que informe sobre el estado de la bandeja de basura. Por favor comente abajo si encuentra uno.
¿Qué puedo hacer ahora?
Actualización recomendada:
Ahora que el incidente se resolvió al actualizar gradlePluginPortal para que sirva como jcenter mirror (casi), es muy posible que agregue los siguientes repositorios antes jcenter()
debería resolver el problema:
google()
mavenCentral()
gradlePluginPortal()
Solución temporal:
Alterne el modo fuera de línea de gradle como se muestra a continuación. Esto funcionará para la máquina local, pero no funcionará para CI.
Solución robusta:
Siempre es una buena idea alejarse de un servicio obsoleto. La mayoría las bibliotecas activas ahora están alojadas en otros repositorios populares como google repo, Maven Central o gradle plugin repo.
Para agregar esos repositorios en su proyecto, agregue lo siguiente en el bloque de repositorios (es posible que ya los tenga). El orden importa. Asegúrate de ponerlos antes jcenter()
esto le dice a Gradle que busque en otros repositorios antes de intentar extraer de jcenter()
.
Sugerencia: haga una búsqueda global de jcenter()
y asegúrese de que cada bloque de repositorio que contiene jcenter()
tiene estos otros repositorios.
repositories {
...
google()
mavenCentral()
gradlePluginPortal()
jcenter()
...
}
Haga gradle sync y clean build y vea si eso funciona.
¿Eso no funcionó?
No te preocupes (todavía). Esto es común. La solución anterior no funcionará sola en algunas situaciones:
-
cuando se mueve de
jcenter()
a otro repositorio (comomavenCentral()
), los autores decidieron actualizar el número de versión. Esto simplemente significa que necesita actualizar la versión de esa dependencia para obtenerla de otro repositorio. Busque la biblioteca que aparece como no disponible en el registro de compilación fallida. Encuentre su github o desarrolle documentos para verificar la última versión. Gradle Sync + compilación limpia. -
Los repositorios que acabamos de agregar son populares pero no son los únicos. Cuando los autores de la biblioteca tuvieron que cambiar de
jcenter
a otro lugar, no eligieron uno de estos. En tales casos, consulte la página de github o los documentos de los desarrolladores. Por lo general, los autores colocan el repositorio requerido en esas páginas. Si encuentra que el repositorio no está presente en su proyecto, agréguelo. Gradle Sync + compilación limpia.- Tener cuidado: Algunos autores eligieron opciones de repositorio como
jitpack.io
en gran parte porque era rápido y más fácil que otros. Pero usted debe ser consciente de las preocupaciones con eso. Mélix de gradle resume las preocupaciones con jitpack.io. Debido a posibles problemas de seguridad, recomiendo consultar al equipo y al experto en seguridad antes de agregar eso.
- Tener cuidado: Algunos autores eligieron opciones de repositorio como
-
Bueno, ahora es el momento de la pequeña preocupación. Es muy posible que esté utilizando alguna biblioteca que esté en desuso o que ya no se mantenga. Encuentre la página de github de la biblioteca y vea si el autor la declaró obsoleta o ya no se mantiene en el archivo Léame. Incluso puede verificar cuándo se realizó la última confirmación. Si fue hace un tiempo, significa que ya no se mantiene y que al autor no le importó mover la biblioteca de
jcenter()
a cualquier otro repositorio.- Vaya a los problemas de GitHub del repositorio. Alguien debe haber publicado una pregunta sobre el plan para mudarse de
jcenter
. Si tiene suerte, es posible que alguien haya creado una bifurcación y alojado esa bifurcación en otro lugar. Por ejemplo, yo usospanny
en uno de los proyectos y el autor no lo movió. Gustavo Ross cuidaba suficiente para bifurcar y mover. - ¿Nadie bifurcó y se movió? Entonces tienes dos opciones.
- Busque una biblioteca activa alternativa que haga lo mismo por usted. Por supuesto, esto lleva mucho tiempo, pero nuevamente es una buena idea alejarse de los recursos obsoletos.
- Si no tiene tiempo para integrar una nueva biblioteca o no existe ninguna otra biblioteca, entonces sea el héroe y haga una bifurcación del proyecto GitHub y muévase.
- Vaya a los problemas de GitHub del repositorio. Alguien debe haber publicado una pregunta sobre el plan para mudarse de
-
Pero bueno, ¿no recuerdo haber puesto la biblioteca en duda en mi base de código? Esto significa que es una dependencia transitiva (una dependencia de su dependencia directa). Nuevamente verifique, la última versión de su dependencia directa y, con suerte, la nueva versión ha solucionado esto.
¿Cómo comprobar la dependencia directa y transitiva?
- su registro de compilación fallido tiene la respuesta.
Con suerte, en este punto ya tienes la compilación funcionando. Si no, entonces espera jcenter
volver pronto y comenzar a planear alejarse de él.
-
Página de estado de Gradle también muestra interrupciones relacionadas con JCenter. Recientemente aquí
– Adrián
31 oct a las 8:41
-
aquí hay un grep que puede ejecutar en su proyecto que generará todas las ocurrencias de jcenter en su repositorio, puede usar esto como punto de partida para investigar qué bibliotecas podría necesitar actualizar:
grep -rnw "jcenter" * > output-file. txt
– Lakston
31 oct a las 13:09
Shap Faizal
Finalmente, después de horas de golpes en la cabeza, el problema se resolvió. En android/build.gradle
agregue lo siguiente en la parte superior de allprojects
-> repositories
.
se quitará jcenter()
de todas las dependencias durante la fase de configuración y reemplazarlo con mavenCentral()
.
Debería verse algo como esto:
allprojects {
repositories {
all { ArtifactRepository repo ->
println repo.url.toString()
if (repo.url.toString().startsWith("https://jcenter.bintray.com/")) {
project.logger.warn "Repository ${repo.url} removed."
remove repo
mavenCentral()
}
}
gradlePluginPortal() // add this if you get further errors
...other repos
}
}
Espero eso ayude 🙂
honam wong
Sí, no estás solo. Jcenter parece caer hoy.
Mi solución es cambiar todo el jCenter
a mavenCentral
de root/android/build.gradle
Además, no te olvides de las bibliotecas. node_module/*error libaray*/android/build.gradle
-
mavenCentral no es la alternativa completa a jcenter. Yo sugeriría mantener ambos
– Mahesh
31 de octubre a las 6:11
También me encontré con este problema, no estoy muy seguro de por qué jcenter devuelve 403, pero puede solucionar este problema agregando mavenCentral()
antes de jcenter()
en la configuración de repositorios, así:
repositories {
...
mavenCentral() // add this line
jcenter()
...
}
cani1ver
Creo que mavenCentral no es la alternativa completa a jcenter.
Estoy usando el espejo de aliyun. reemplazar jcenter()
con maven { url "https://maven.aliyun.com/repository/jcenter" }
.
No sé si es accesible desde fuera de China, si Aliyun censura algunos paquetes o si está actualizado.
guía para reemplazar:
en android/build.gradle
buildscript {
...
repositories {
...
- jcenter()
+ maven { url "https://maven.aliyun.com/repository/jcenter" }
}
}
allprojects {
+ buildscript {
+ repositories {
+ maven { url "https://maven.aliyun.com/repository/jcenter" }
+ }
+ }
repositories {
...
- jcenter()
+ maven { url "https://maven.aliyun.com/repository/jcenter" }
}
}
-
Esto hizo el trabajo para mí. ¿Cuáles son las “cosas que debe saber” y cuáles podrían ser las consecuencias de usar esto?
– Itay Feldman
31 oct a las 12:48
-
Esto hizo el trabajo para mí. ¿Cuáles son las “cosas que debe saber” y cuáles podrían ser las consecuencias de usar esto?
– Itay Feldman
31 oct a las 12:48
jcenter está abajo. Hay muchos sitios donde se puede comprobar el estado. Uno de ellos es statusgator.com/services/bintray. Todo lo que puede hacer es esperar a que vuelva a estar en funcionamiento.
– AndroidStud
31 de octubre a las 3:23
Aunque la actualización de jcenter quedó obsoleta en febrero de 2021. hoy hubo un informe de incidente temporal en Gradle. Debido a esto, el problema les había sucedido a los usuarios. He adjuntado el enlace del incidente y el enlace de desaprobación de jcenter aquí. Hacer clic Impacto del cierre de JCenter en las compilaciones de Gradle Hacer clic Problemas de JCenter, informe de incidentes para Gradle
– Sugana Ganesha Vel
31 oct a las 8:34
Votación para reabrir. El título es posiblemente engañoso; JCenter está inactivo, pero se espera que esto sea permanente. Debido a esto, los usuarios aún necesitarán soluciones alternativas y una discusión saludable sobre las mejores soluciones será valiosa para la comunidad. Tal vez cambiando el nombre de esta pregunta a: “JCentre puede estar inactivo permanentemente. ¿Cuáles son nuestras opciones?” o similar para que quede claro que no es solo un tiempo de inactividad temporal.
– dKen
31 oct a las 11:04
Si necesita compilar rápidamente mientras clasifica JCenter, siempre puede compilar en el modo fuera de línea de Gradle.
gradle --offline build
–Roy Hinkley
31 oct a las 13:56