J'utilise les nouveaux outils de ligne de commande d'Android car l'ancien référentiel sdk-tools d'Android n'est plus disponible. J'ai donc changé mon gitlab-ci pour charger les commandlintools. Mais lorsque j'essaie de l'exécuter, j'obtiens l'erreur suivante:
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)
J'ai déjà essayé d'exécuter ces commandants à la main, mais j'obtiens la même erreur. Aussi, si je cours sdkmanager --version
, la même erreur se produit. Mon gitlab-ci ressemble à:
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
commandes.sdkmanager --sdk_root=${ANDROID_HOME} "tools"
bit l'a fait pour moi - merci!Pour ceux qui ont eu du mal à installer les outils de ligne de commande Android pour Appium sur Windows 10 / x64, procédez comme suit:
la source
cmdline-tools
est indispensable, maislatest
n'est pas obligatoire. Et le chemin (ou nom) decmdline-tools
vient du SDK Android lui-même. Vous pouvez exécuter cette commandesdkmanager --sdk_root=${ANDROID_HOME} --list
, où les résultats incluent "cmdline-tools; 1.0 | 1.0 | Outils de ligne de commande SDK Android"Au lieu de passer l'argument
--sdk_root
pour chaque exécution de commande unique, approfondissons la cause réelle.À partir d' Android SDK Command-line Tools 1.0.0 (6200805) , contrairement à Android SDK 26.1.1 (4333796) , la
tools
hiérarchie des répertoires a été modifiée. Auparavant, il était placé juste à l'intérieurANDROID_HOME
, maintenant il est toujours nommé commetools
(la seule chose que vous obtiendrez après avoir déballé le fichier zip commandlinetools téléchargé ), mais différemment, vous devez le placer dans un répertoire appelécmdline-tools
par vous-même. Le nomcmdline-tools
provient de son nom de package, que vous pouvez obtenir à partir de la commande listing packagessdkmanager --list
, dont les sorties incluentcmdline-tools;1.0 | 1.0 | Android SDK Command-line Tools
.Envelopper le
tools
répertoire dans lecmdline-tools
répertoire le ferait fonctionner et vous aiderait à vous débarrasser de l'--sdk_root
argument ennuyeux . Mais qu'en est-il des autres parties?Eh bien, c'est tout ce que vous avez à changer. Laissez-moi vous expliquer plus.
sdkmanager
vit à l'intérieurcmdline-tools/tools/bin
, vous feriez mieux de définirPATH
la variable d'environnementcmdline-tools
ne doit pas être défini commeANDROID_HOME
. Parce que plus tard, lors de la mise à jour du SDK Android ou de l'installation de plusieurs packages, les autres packages seront placés sousANDROID_HOME
, mais pas souscmdline-tools
.ANDROID_HOME
structure du répertoire devrait ressembler comme ci - dessous, se composent d'un bon nombre de sous-répertoires:build-tools
,cmdline-tools
,emulator
,licenses
,patcher
,platform-tools
,platforms
,system-images
. Vous pouvez facilement souligner quebuild-tools
et que vouscmdline-tools
êtes frères et sœurs, tous sont assis à l'intérieur du parentANDROID_HOME
.Permettez-moi de récapituler de manière simple:
ANDROID_HOME
(comme avant)cmdline-tools
, qui se trouve à l'intérieurANDROID_HOME
$ANDROID_HOME/cmdline-tools/tools/bin
à la variable d'environnementPATH
, afin que le système sache où trouversdkmanager
la source
Le téléchargement des nouveaux outils cmdline à partir du site Web des développeurs Android nécessite le respect de la structure de répertoires suivante.
la source
Vous avez le même problème, venu ici par Google. Selon les archives AndroidStudio , c'est aujourd'hui la sortie de la version 4.1. Je suppose que ce n'est pas une coïncidence.
Ce guide complètement indépendant a un lien dur pour une ancienne version des outils sdk pour linux . Vous pouvez changer l'URL en windows ou mac pour d'autres OS. Je vais l'utiliser comme correctif pour l'instant.
(c'était censé être un commentaire et non une solution)
la source
Le sdkmanager essaie de comprendre le chemin android-sdk en fonction de l'endroit où il est décompressé, sans utiliser les variables d'environnement, comme ANDROID_SDK_ROOT. Mais c'est pire, car il a un dossier parent codé en dur nommé cmdline-tools et si vous décompressez commandlinetools dans un dossier avec un autre nom, cela ne fonctionne pas, nous obligeant à utiliser le paramètre sdk_root pour alimenter correctement la variable interne.
Donc, avec cela à l'esprit, nous pouvons utiliser l'approche suivante pour résoudre ce problème.
Je suppose que nous utilisons Ubuntu OS, donc si vous ne l'êtes pas, vous devriez adapter certaines de ces instructions.
Installez Android-SDK.
Après l'installation, vous aurez un dossier appelé android-sdk dans / usr / lib
Créez un dossier appelé cdmline-tools dans le dossier android-sdk
Décompressez le fichier que vous venez de télécharger dans / usr / lib / android-sdk / cmdline-tools
Allez dans votre répertoire d'accueil et modifiez votre .profile
Créer une variable ANDROID_SDK_ROOT
Mettez le dossier sdkmanager sur votre chemin
Recharger votre profil
Courir
Vous devriez voir la version imprimée dans votre terminal.
la source
J'ai trouvé la solution pour utiliser les derniers outils de ligne de commande en suivant ces étapes:
1 - Extraire les outils de ligne de commande dans un dossier avec cette structure: par exemple:
$HOME/Development/android/cmdline-tools/latest
(ce dossier doit contenir lib , bin , notice.txt et source.properties )2 - Définition d' ANDROID_HOME comme variable d'environnement:
3 - Chargement sur PATH :
la source
cmdline-tools
est un must have, maislatest
n'est pas requis.Je voudrais partager mon expérience.
Au début, j'essaie d'expliquer pourquoi la structure du répertoire doit ressembler à celle indiquée dans cette réponse - https://stackoverflow.com/a/60460681/1758733 . https://stackoverflow.com/users/668455/tristan a demandé plusieurs fois des explications, alors j'espère que je clarifierai la situation avec la prochaine expérience:
On peut rencontrer un autre problème - coincé dans ".android / repositories.cfg n'a pas pu être chargé."
Autres problèmes et faits:
Pour résumer, la recette de développement suivante avec Qt peut être composée:
la source
Cette page de la documentation Unity 2018 a également une bonne explication de la résolution de ce problème, y compris des points tels que:
https://docs.unity3d.com/2018.4/Documentation/Manual/android-sdksetup.html
la source
Cela m'est arrivé lors du téléchargement des outils de ligne de commande autonomes (
commandlinetools-mac-6200805_latest
) sur un nouveau Mac.Sur la base de toutes les réponses ici, j'ai pu le faire fonctionner comme ça
Les documents de l'
--sdk_root
option indiquent "Utiliser la racine SDK spécifiée au lieu du SDK contenant cet outil ". Cela m'a fait penser que, malgré son expédition autonome, l'outil s'attend à faire partie d'un ensemble où le SDK est également installé.la source
La première exigence de l'installation du SDK (toute méthode) consiste à installer Java et à définir le chemin JAVA_HOME .
Ensuite, les outils de ligne de commande du SDK ont besoin d'un chemin d'installation sans lequel il lève NullPointerException.
Pour surmonter cela, passez simplement le chemin où vous souhaitez installer le SDK avec l'argument "--sdk_root"
Par exemple. sdkmanager.bat "platform-tools" "platformes; android-" --sdk_root =
la source