Uso las nuevas herramientas de línea de comandos de Android porque el antiguo repositorio de herramientas SDK de Android ya no está disponible. Así que cambié mi gitlab-ci para cargar las herramientas de comando. Pero cuando intento ejecutarlo me sale el siguiente error:
Warning: Could not create settings
java.lang.IllegalArgumentException
at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.<init>(SdkManagerCliSettings.java:428)
at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.createSettings(SdkManagerCliSettings.java:152)
at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.createSettings(SdkManagerCliSettings.java:134)
at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:57)
at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:48)
Ya intenté ejecutar esos comandos a mano, pero obtengo el mismo error. Además, si ejecuto sdkmanager --version
, se produce el mismo error. Mi gitlab-ci se ve así:
image: openjdk:9-jdk
variables:
ANDROID_COMPILE_SDK: "29"
ANDROID_BUILD_TOOLS: "29.0.3"
ANDROID_SDK_TOOLS: "6200805"
before_script:
- apt-get --quiet update --yes
- apt-get --quiet install --yes wget tar unzip lib32stdc++6 lib32z1
- wget --quiet --output-document=android-sdk.zip https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_SDK_TOOLS}_latest.zip
- unzip -d android-sdk-linux android-sdk.zip
- echo y | android-sdk-linux/tools/bin/sdkmanager "platform-tools" "platforms;android-${ANDROID_COMPILE_SDK}" >/dev/null
#- echo y | android-sdk-linux/tools/bin/sdkmanager "platform-tools" >/dev/null
- echo y | android-sdk-linux/tools/bin/sdkmanager "build-tools;${ANDROID_BUILD_TOOLS}" >/dev/null
- export ANDROID_HOME=$PWD/android-sdk-linux
- export PATH=$PATH:$PWD/android-sdk-linux/platform-tools/
- chmod +x ./gradlew
# temporarily disable checking for EPIPE error and use yes to accept all licenses
- set +o pipefail
- yes | android-sdk-linux/tools/bin/sdkmanager --licenses
- set -o pipefail
stages:
- build
- test
lintDebug:
stage: build
script:
- ./gradlew -Pci --console=plain :app:lintDebug -PbuildDir=lint
assembleDebug:
stage: build
script:
- ./gradlew assembleDebug
artifacts:
paths:
- app/build/outputs/
debugTests:
stage: test
script:
- ./gradlew -Pci --console=plain :app:testDebug
echo y
comandos.sdkmanager --sdk_root=${ANDROID_HOME} "tools"
bit lo hizo por mí, ¡gracias!Para aquellos que tuvieron dificultades para instalar las herramientas de línea de comandos de Android para Appium en Windows 10 / x64, simplemente haga lo siguiente:
fuente
cmdline-tools
es imprescindible, perolatest
no es obligatorio. Y la ruta (o nombre)cmdline-tools
proviene del propio SDK de Android. Puede ejecutar este comandosdkmanager --sdk_root=${ANDROID_HOME} --list
, donde los resultados incluyen "cmdline-tools; 1.0 | 1.0 | Android SDK Command-line Tools"La descarga de las nuevas herramientas cmdline del sitio web para desarrolladores de Android requiere que se respete la siguiente estructura de directorios.
fuente
En lugar de pasar el argumento
--sdk_root
para cada ejecución de comando individual, profundicemos en la causa real.A partir de Android SDK Command-line Tools 1.0.0 (6200805) , en contraste con Android SDK 26.1.1 (4333796) , la
tools
jerarquía de directorios ha cambiado. Anteriormente se colocó justo dentroANDROID_HOME
, ahora todavía se llama comotools
(lo único que obtendrá después de desempacar el archivo zip descargado de la línea de comandos ), pero de manera diferente, debe colocarlo dentro de un directorio llamadocmdline-tools
por su cuenta. El nombrecmdline-tools
proviene de su nombre de paquete, donde puede obtenerlo del comando de listado de paquetessdkmanager --list
, cuyas salidas incluyencmdline-tools;1.0 | 1.0 | Android SDK Command-line Tools
.Ajustar el
tools
directorio dentro delcmdline-tools
directorio lo haría funcionar, y lo ayudaría a deshacerse del--sdk_root
argumento molesto . ¿Pero qué hay de las otras partes?Bueno, eso es todo lo que tienes que cambiar. Déjame explicarte más.
sdkmanager
vive dentrocmdline-tools/tools/bin
, será mejor que establezcasPATH
una variable de entornocmdline-tools
no debe establecerse comoANDROID_HOME
. Porque más tarde, al actualizar el SDK de Android o al instalar más paquetes, los otros paquetes se colocarán debajoANDROID_HOME
, pero no debajocmdline-tools
.ANDROID_HOME
estructura de directorios debe ser similar a continuación, consistirá en un buen número de subdirectorios:build-tools
,cmdline-tools
,emulator
,licenses
,patcher
,platform-tools
,platforms
,system-images
. Puede señalarlo fácilmentebuild-tools
ycmdline-tools
son hermanos, todos se sientan dentro de los padresANDROID_HOME
.Permítanme recapitular de una manera simple:
ANDROID_HOME
(como antes)cmdline-tools
, que está dentroANDROID_HOME
$ANDROID_HOME/cmdline-tools/tools/bin
a la variable de entornoPATH
, de modo que el sistema sepa dónde encontrarsdkmanager
fuente
Tengo el mismo problema, vino aquí por Google. Según el AndroidStudio Archive , hoy fue el lanzamiento de 4.1. Supongo que no es casualidad.
Esta guía completamente no relacionada tiene un enlace duro para una versión anterior de las herramientas SDK para Linux . Puede cambiar la URL a Windows o Mac para otros sistemas operativos. Lo usaré como revisión por ahora.
(se suponía que era un comentario, no una solución)
fuente
El sdkmanager intenta descubrir la ruta android-sdk en función de dónde está desempaquetado, sin usar las variables de entorno, como ANDROID_SDK_ROOT. Pero empeora, porque tiene una carpeta principal codificada llamada cmdline-tools y si descomprime las herramientas de línea de comandos dentro de una carpeta con otro nombre, no funciona, lo que nos obliga a usar el parámetro sdk_root para alimentar la variable interna correctamente.
Entonces, con eso en mente, podemos usar el siguiente enfoque para resolver esto.
Asumiré que estamos usando Ubuntu OS, por lo que si no lo está, debe adaptar algunas de esas instrucciones.
Instale Android-SDK.
Después de la instalación, tendrá una carpeta llamada android-sdk en / usr / lib
Cree una carpeta llamada cdmline-tools dentro de la carpeta android-sdk
Descomprima el archivo que acaba de descargar dentro de / usr / lib / android-sdk / cmdline-tools
Ve a tu directorio de inicio y edita tu .profile
Crear una variable ANDROID_SDK_ROOT
Pon la carpeta sdkmanager en tu camino
Recarga tu perfil
correr
Debería ver la versión impresa en su terminal.
fuente
Encontré la solución para usar las últimas herramientas de línea de comandos siguiendo estos pasos:
1 - Extracción de las herramientas de línea de comandos en una carpeta con esta estructura: por ejemplo:
$HOME/Development/android/cmdline-tools/latest
(esta carpeta debe contener lib , bin , Notice.txt y source.properties )2 - Definición de ANDROID_HOME como una variable de entorno:
3 - Cargando en RUTA :
fuente
cmdline-tools
es imprescindible, sin embargo, nolatest
es obligatorio.Me gustaría compartir mi experiencia.
Al principio trato de explicar por qué la estructura de directorios tiene que verse como se muestra en esta respuesta: https://stackoverflow.com/a/60460681/1758733 . https://stackoverflow.com/users/668455/tristan pidió una explicación varias veces, así que espero aclarar la situación con el próximo experimento:
Uno puede encontrar otro problema: bloqueado en ".android / repositories.cfg no se pudo cargar".
Otros asuntos y hechos:
Para resumir, se puede componer la siguiente receta para el desarrollo con Qt:
fuente
Esta página de la documentación de Unity 2018 también tiene una buena explicación para resolver este problema, incluidos puntos como:
https://docs.unity3d.com/2018.4/Documentation/Manual/android-sdksetup.html
fuente
Esto me sucedió al descargar las herramientas de línea de comandos independientes (
commandlinetools-mac-6200805_latest
) en una nueva Mac.Basado en todas las respuestas aquí, pude hacer que funcione así
Los documentos de la
--sdk_root
opción dicen "Usar la raíz del SDK especificada en lugar del SDK que contiene esta herramienta ". Esto me hizo pensar que, a pesar de ser enviado de forma independiente, la herramienta espera ser parte de un paquete donde también se instala el SDK.fuente
El primer requisito para instalar SDK (Cualquier método) es instalar Java y configurar la ruta JAVA_HOME .
Luego, las herramientas de línea de comandos del SDK necesitan una ruta de instalación sin la cual arroja NullPointerException.
Para superar esto, simplemente pase la ruta donde desea instalar SDK con el argumento "--sdk_root"
Ej. sdkmanager.bat "plataforma-herramientas" "plataformas; android-" --sdk_root =
fuente