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 quand j'essaye de l'exécuter, j'obtiens l'erreur suivante:
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
J'ai déjà essayé d'exécuter ces commandy à la main, mais j'obtiens la même erreur. De plus, si sdkmanager --version
, la même erreur se produit. Mon gitlab-ci ressemble à:
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)
17 Réponses :
J'ai le même problème, venu ici par Google. Selon les archives d'AndroidStudio , aujourd'hui était la sortie de la version 4.1. Je suppose que ce n'est pas une coïncidence.
Ce guide totalement indépendant a un lien en dur pour une ancienne version des outils sdk pour Linux . Vous pouvez modifier l'URL en Windows ou Mac pour d'autres systèmes d'exploitation. Je vais l'utiliser comme correctif pour le moment.
(c'était censé être un commentaire pas une solution)
Les liens ne fonctionnent pas, j'ai déjà essayé d'utiliser une ancienne version, mais j'utilise de nouvelles fonctionnalités dans ma base de code donc je ne peux plus utiliser l'ancienne. Donc, cette solution ne fonctionne pas pour moi.
Cela semble être un bogue avec la façon dont sdkmanager localise le dossier d'installation du SDK.
Une --sdk_root
consiste à définir l'indicateur --sdk_root
. Vous pouvez déplacer la déclaration ANDROID_HOME plus haut, puis l'utiliser avec les commandes suivantes.
- export ANDROID_HOME=$PWD/android-sdk-linux - yes | android-sdk-linux/tools/bin/sdkmanager --sdk_root=${ANDROID_HOME} --licenses - android-sdk-linux/tools/bin/sdkmanager --sdk_root=${ANDROID_HOME} "platform-tools" "platforms;android-${ANDROID_COMPILE_SDK}" >/dev/null
De plus, la commande d'acceptation de licence globale a été déplacée vers la première commande pour nettoyer les parties d' echo y
.
Curieusement, si vous exécutez sdkmanager --sdk_root=${ANDROID_HOME} "tools"
il mettra à jour les outils de 3.6.0 à 26.1.1 et sdkmanager n'a plus ce problème. Cette mise à jour prend du temps et de la bande passante et n'est pas exactement nécessaire avec la solution de contournement.
fonctionnait bien, maintenant j'obtiens une erreur avec ./gradlew assembleDebug, mais il semble que cela n'a plus rien à voir avec le sdkmanager. Merci!
Pouvez-vous s'il vous plaît me donner un exemple comment je peux nettoyer mon écho? Je ne comprends pas.
J'ai mis à jour l'extrait de code dans ma réponse d'origine pour clarifier la suppression des commandes echo y
.
Merci! Aide beaucoup!
la ligne d'exportation et ensuite le sdkmanager --sdk_root=${ANDROID_HOME} "tools"
ont fait pour moi - merci!
Les -
au début de la déclaration sont trompeurs.
Faire sdkmanager --sdk_root=${ANDROID_HOME} "tools"
me conduit à des erreurs signalant que le dossier "tools" est déjà utilisé (car il contient sdkmanager
-être sdkmanager
lui-même). La réponse ArturS, proposant de stocker sdkmanager dans cmdline-tools/latest
fait que tout fonctionne parfaitement.
~ J'avais besoin d'ajouter yes | android-sdk-linux/tools/bin/sdkmanager --sdk_root=${ANDROID_HOME} --licenses || true
car la commande a continué à être détectée comme échouée par gitlab-ci ~. Désolé, +o pipefail
manqué +o pipefail
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.
Pourquoi est-ce nécessaire? D'où est-ce que ça vient ? code source ? doc?
J'ai configuré mon CI pour utiliser cette structure et même si cela me permet d'exécuter sdkmanager, lorsque mon projet est construit avec gradle, il ne sait pas comment localiser correctement les plates-formes et les licences et tout échoue.
J'ai trouvé la solution pour utiliser les derniers outils de ligne de commande en suivant ces étapes:
1 - Extraction des outils en 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 de ANDROID_HOME comme variable d'environnement:
PATH="$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/tools/lib:$ANDROID_HOME/tools/bin:$ANDROID_HOME/platform-tools"
3 - Chargement sur PATH :
ANDROID_HOME="$HOME/Development/android/cmdline-tools/latest"
Informations contradictoires: "latest (ce dossier doit contenir lib, bin, ...)", ANDROID_HOME = "... / latest" PATH = "... $ ANDROID_HOME / tools / lib
lib est dans les outils ou dans ANDROID_HOME?
cmdline-tools
est indispensable, mais la latest
n'est pas requise.
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:
D'où vient le besoin de ce "android / cmdline-tools / latest"? code source ? un doc quelque part?
La raison est décrite sous cette rubrique: stackoverflow.com/questions/60460429/...
Dans le sujet auquel vous faites référence, la réponse dit "export ANDROID_HOME =" / Users / darish / development / sdk / android "" pas de "dernier", pas de "cmdline-tools"
@Tristan cmdline-tools
est un must, mais la latest
n'est pas requise. Et le chemin (ou le nom) de cmdline-tools
provient du SDK Android lui-même. Vous pouvez exécuter cette commande sdkmanager --sdk_root=${ANDROID_HOME} --list
, où les résultats incluent "cmdline-tools; 1.0 | 1.0 | Android SDK Command-line Tools"
Je ne sais pas quelle logique se cache derrière cela. Mais ça marche :-)
Parfait, cela a fonctionné pour moi aussi. Soyez juste très prudent avec la dénomination des dossiers et cela devrait fonctionner correctement.
J'aimerais partager mon expérience.
Au début, j'essaie d'expliquer pourquoi la structure des répertoires doit ressembler à celle indiquée dans cette réponse - https://stackoverflow.com/a/60460681/1758733 . https://stackoverflow.com/users/668455/tristan a demandé des explications à plusieurs reprises, alors j'espère que je clarifierai la situation avec la prochaine expérience:
1. download commandlinetools-win-6200805_latest.zip 2. extract cmdline-tools so there will be hierarchy SDKROOT - cmdline-tools - latest - bin - sdkmanager.bat - ... - lib - ... 3. install JDK 8. set JAVA_HOME=c:\path\to\java so that %JAVA_HOME%/bin/java.exe exists. 4. set JAVA_OPTS=-Djavax.net.ssl.trustStoreType=Windows-ROOT -Djavax.net.ssl.trustStore=NUL 5. NDK may be downloaded manually or installed with sdkmanager 6. install required components: SDKROOT\cmdline-tools\latest\bin\sdkmanager "tools" "build-tools;BUILD_TOOLS_VERSION" "platform-tools" "platforms;ANDROID_VERSION" 7. run qtcreator from console so JAVA_OPTS is taken into account (or set it globaly for windows user or even station) 8. tools -> options -> devices set paths to JDK 8, SDKROOT and NDK
On peut rencontrer un autre problème - Coincé à ".android / repositories.cfg n'a pas pu être chargé."
Autres problèmes et faits:
1. QtCreator works with another sdkmanager that placed in SDK_ROOT/tools/bin 2. SDK_ROOT/tools/bin/sdkmanager works only with JDK 8 3. Java uses its own storage for certificates and it's not convinient usually. Thus one may want to use Windows certificate store. Unfortunately Grandle has the issue - https://stackoverflow.com/a/59056537 - so use the following: set JAVA_OPTS=-Djavax.net.ssl.trustStoreType=Windows-ROOT -Djavax.net.ssl.trustStore=NUL
Pour résumer, la recette suivante pour le développement avec Qt peut être composée:
1. unpack cmdline-tools to any path, for example c:\Android\tools; 2. create a folder for SDK, let it be c:\Android\SDK; 3. install cmdline-tools (yes, we install cmdline-tools again =)): c:\Android\tools\bin\sdkmanager --sdk_root=c:\Android\SDK "cmdline-tools;latest" 4. at this moment we can examine c:\Android\SDK and locate the path c:\Android\SDK\cmdline-tools\latest. If we compare this folder with the previous version c:\Android\tools we find out that they are identical. The new installed c:\Android\SDK\cmdline-tools\latest\sdkmanager works without --sdk_root argument so we could initially unpack cmdline-tools to cmdline-tools\latest.
Cette page de la documentation Unity 2018 a également une bonne explication sur la résolution de ce problème, y compris des points tels que:
https://docs.unity3d.com/2018.4/Documentation/Manual/android-sdksetup.html
Cela fonctionne réellement, toutes les autres réponses sont très dépassées.
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
# Define ANDROID_HOME, if not defined already export ANDROID_HOME="~/Library/Android/sdk" # Create the folder if missing mkdir -p $ANDROID_HOME # Let the tool know that it should use that SDK location. sdkmanager --list --sdk_root=$ANDROID_HOME
La documentation de l'option --sdk_root
indique "Utilisez la racine du SDK spécifiée au lieu du SDK contenant cet outil ". Cela m'a fait penser que, bien qu'il soit livré de manière autonome, l'outil s'attend à faire partie d'un ensemble où le SDK est également installé.
--sdk_root
simplement un dossier à --sdk_root
fonctionne sur le poste de travail fedora 29 x86_64. par exemple ./sdkmanager --version --sdk_root=/home/software/androidsdk
Le sdkmanager essaie de déterminer 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.
sdkmanager --version
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
. ~/.profile
Décompressez le fichier que vous venez de télécharger dans / usr / lib / android-sdk / cmdline-tools
export PATH=$ANDROID_SDK_ROOT/cmdline-tools/tools/bin:$PATH
Accédez à votre répertoire personnel et modifiez votre .profile
export ANDROID_SDK_ROOT=/usr/lib/android-sdk
Créer une variable ANDROID_SDK_ROOT
nano .profile
Mettez le dossier sdkmanager dans votre chemin
sudo unzip /path/for/commandlinetools-linux-6200805_latest.zip -d /usr/lib/android-sdk/cmdline-tools
Recharger votre profil
sudo mkdir /usr/lib/android-sdk/cmdline-tools
Courir
sudo apt install android-sdk
Vous devriez voir la version imprimée dans votre terminal.
Ça a marché comme sur des roulettes! merci encore pour cette solution complète
J'ai toujours l'erreur "Erreur: impossible de trouver ou de charger la classe principale java.se.ee" - Pouvez-vous expliquer pourquoi? Et que dois-je faire pour résoudre ce problème? Vous n'avez rien mentionné à ce sujet. À votre santé
Je n'ai pas rencontré ce problème, mais peut-être que cette réponse peut vous aider. essayer
ordre et noms plus insensés ... très important!
Je reçois android-sdk : Depends: android-sdk-platform-tools (>= 20) but it is not going to be installed
et cela a une chaîne de dépendances qui ne se résout pas automatiquement
Suivi chaque étape. A travaillé sans aucun problème. Merci!
a fonctionné comme un charme. pour toute personne ayant des problèmes avec les mises à jour de package. Warning: Failed to read or create install properties file.
vérifiez ceci [ askubuntu.com/questions/1227439/…
Au lieu de passer l'argument --sdk_root
pour chaque exécution de commande, --sdk_root
profondeur dans la vraie cause.
À partir des outils de ligne de commande du SDK Android 1.0.0 (6200805) , contrairement au SDK Android 26.1.1 (4333796) , la hiérarchie des répertoires des tools
a été modifiée. Auparavant, il était placé directement dans ANDROID_HOME
(qui est obsolète, nous utiliserons le terme ANDROID_SDK_ROOT
pour le reste du paragraphe), maintenant il est toujours nommé comme tools
(la seule chose que vous obtiendrez après avoir décompressé le fichier zip de commandlinetools téléchargé), mais autrement, vous devez le placer vous-même dans un répertoire appelé cmdline-tools
. Le nom cmdline-tools
vient de son nom de package, où vous pouvez obtenir en listant la commande sdkmanager --list
, dont les sorties incluent cmdline-tools;1.0 | 1.0 | Android SDK Command-line Tools
.
L'emballage du répertoire tools
répertoire cmdline-tools
ferait fonctionner et vous aiderait à vous débarrasser de l'argument ennuyeux --sdk_root
. Mais qu'en est-il des autres parties?
Eh bien, c'est tout ce que vous avez à changer. Laissez-moi vous expliquer davantage.
sdkmanager
vit dans cmdline-tools/tools/bin
, vous feriez mieux de le définir dans la variable d'environnement PATH
cmdline-tools
ne doit pas être défini comme ANDROID_SDK_ROOT
. 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 sous ANDROID_SDK_ROOT
, mais pas sous cmdline-tools
.ANDROID_SDK_ROOT
finale et complète devrait ressembler à celle ci-dessous, composée de quelques sous-répertoires: build-tools
, cmdline-tools
, emulator
, licenses
, patcher
, platform-tools
, platforms
- platforms
, system-images
. Vous pouvez facilement souligner que build-tools
et cmdline-tools
sont des frères et sœurs, tous se trouvent à l'intérieur du parent ANDROID_SDK_ROOT
.Permettez-moi de récapituler d'une manière simple:
ANDROID_SDK_ROOT
préféré (comme avant)cmdline-tools
, qui est à l' intérieur ANDROID_SDK_ROOT
$ANDROID_SDK_ROOT/cmdline-tools/tools/bin
à la variable d'environnement PATH
, afin que le système sache où trouver sdkmanager
!!MISE À JOUR!!
Le comportement a de nouveau changé depuis la build 6858069
(Android SDK Command-line Tools 3.0):
cmdline-tools
que vous obtiendrez est cmdline-tools
.cmdline-tools
en tools
, et placez-le sous $ANDROID_SDK_ROOT/cmdline-tools
, donc maintenant il devrait ressembler à: $ANDROID_SDK_ROOT/cmdline-tools/tools
. Et à l'intérieur, vous devriez avoir: NOTICE.txt bin lib source.properties
. En fait, selon le document officiel des outils de ligne de commande , l'arborescence devrait être android_sdk/cmdline-tools/version/bin/
, mais j'ai vérifié, l'utilisation de la version
ou des tools
ne fait aucune différence ici.PATH
, je vous recommande de définir comme ceci: PATH=$PATH:$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$ANDROID_SDK_ROOT/cmdline-tools/tools/bin
, car après la mise à jour plus tard, vous obtenir le dernier sdkmanager
placé sous $ANDROID_SDK_ROOT/cmdline-tools/latest/bin
, le mettre en avant le rendra plus prioritaire.C'est la bonne réponse. Contrairement aux autres réponses, cela conserve le répertoire "tools", qui est en fait ce qui se trouve dans le fichier zip.
Merci beaucoup, vous avez répondu à ma question :)
J'ai suivi les instructions ici - très utiles - merci! Cependant, j'ai remarqué qu'après avoir exécuté "sdkmanager --install" build-tools; 29.0.3 ", un autre dossier" tools "a été créé dans $ ANDROID_HOME, en plus du" $ ANDROID_HOME / cmdline-tools / tools "déjà existant. Ce dossier semblent avoir quelques binaires supplémentaires, donc il semble que ce soit celui qui devrait être ajouté au PATH. Avez-vous fait face à cela? Utilisation de sdkmanager v3.6.0 - téléchargé aujourd'hui.
ANDROID_HOME est obsolète. nous devrions migrer vers ANDROID_SDK_ROOT. source: developer.android.com/studio/command-line/variables#envar
Au moment de l'écriture, il existe 3 binaires sdkmanager
différents après la mise à jour. $ANDROID_SDK_ROOT/tools/bin/sdkmanager --version
=> 26.1.1
$ANDROID_SDK_ROOT/cmdline-tools/tools/bin/sdkmanager --version
=> 3.6.0
$ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager --version
=> 4.0.0
Merci. Renommer le cmdline-tools
parent des tools
en cmdline-tools
corrigé pour moi. Je ne peux pas croire à quel point le SDK Android est fragile
Je suis tout à fait sûr que c'est intentionnel - Google veut rendre le processus aussi difficile que possible pour essayer de migrer tout le monde vers l'énorme package studio. C'est génial que nous ayons Stack Overflow pour résoudre ces ennuis.
Je viens de placer le dossier des outils téléchargé dans cmdline-tools, puis je l'ai renommé en dernier comme $ ANDROID_SDK_ROOT / cmdline-tools / latest / bin / sdkmanager ... Et après avoir exécuté sdkmanager, je ne vois pas d'autres dossiers inutiles créés comme décrit par @JingLi dans son commentaire ci-dessus comme $ ANDROID_SDK_ROOT / tools / bin / ..., $ ANDROID_SDK_ROOT / cmdline-tools / tools / bin / ..., et tout fonctionne parfaitement. Ubuntu 20.04. Merci.
Cela a fonctionné pour moi, mais maintenant j'ai un avertissement "L'identifiant du paquet 'tools' a été observé dans un emplacement incohérent '/home/{username}/.android/sdk/cmdline-tools/tools' (attendu '/ home / {username} /. android / sdk / tools ') "
@PaulLaffitte c'est bizarre. Comme le chemin /tools
est l'ancien, le nouveau devrait être /cmdline-tools/tools
. Pourriez-vous s'il vous plaît essayer une mise à jour de votre AndroidSDK, peut-être que l'avertissement disparaîtra car il devrait avoir le dernier /cmdline-tools/tools
.
Les gars qui utilisent cette réponse considèrent qu'il y a un dossier tools
dans le dossier cmdline-tools
j'ai essayé trois fois avant de le remarquer (et les filles)
@PaulLaffitte, l'emplacement doit être /home/{username}/.android/sdk/cmdline-tools/latest
Cela a-t-il changé récemment? Au sein du commandlinetools-win-6858069_latest.zip
(ainsi que la version linux) j'archiver téléchargé, sdkmanager
est situé à cmdline-tools\bin\sdkmanager
. Est-il nécessaire d'ajouter un latest
dossier ou des tools
?
D'accord, après avoir déplacé le contenu de cmdline-tools
sous cmdline-tools\latest
, sdkmanager
semble fonctionner.
@ ChristianReall-Fluharty oui, le comportement du paquet le plus récent 6858069 est changé, je travaille sur une mise à jour. Mais TBH, Google devrait plutôt le corriger et rendre le comportement cohérent et prévisible, au lieu de toujours deviner et s'adapter.
Après une mise à jour des outils, la dernière version vient d'être placée dans ma <android_sdk_root> \ tools \ bin, donc le chemin ci-dessus peut nécessiter une mise à jour? (Cet outil est / tellement / fragile)
Oui @Ian, cela change lorsque vous le mettez à jour. Et le comportement est différent, c'est pourquoi je ne peux pas donner de chemin précis ici. Il est également mentionné ici: github.com/thyrlian/AndroidSDK/issues/36
La première condition requise pour installer le SDK (toute méthode) est d'installer Java et de définir le chemin JAVA_HOME .
Ensuite, les outils de ligne de commande du SDK ont besoin d'un chemin d'installation sans lequel ils lèvent 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" "plates-formes; android-" --sdk_root =
J'ai eu la même erreur. Après avoir fait toutes les solutions, je ne pouvais pas le réparer. J'ai résolu ce problème en lisant: https://forum.unity.com/threads/android-build-not-working.844969/
Simplifiez une réponse:
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %SDKMANAGER_OPTS% -classpath "%CLASSPATH%" com.android.sdklib.tool.sdkmanager.SdkManagerCli %CMD_LINE_ARGS%
à "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %SDKMANAGER_OPTS% -classpath "%CLASSPATH%" com.android.sdklib.tool.sdkmanager.SdkManagerCli %CMD_LINE_ARGS% --sdk_root=%ANDROID_HOME%
(Remarque: Ajout de --sdk_root=%ANDROID_HOME%
à la fin
Merci, facile et ça marche! :) Mais maintenant, vous devriez utiliser à la place --sdk_root =% ANDROID_SDK_ROOT%.
En mélangeant les réponses de Jing Li et de l'appelant9, voici mon script:
variables: ANDROID_COMPILE_SDK: "29" ANDROID_BUILD_TOOLS: "29.0.3" ANDROID_SDK_TOOLS: "6200805" before_script: - apt-get update --yes - apt-get install --yes wget tar unzip lib32stdc++6 lib32z1 - export ANDROID_HOME=${PWD}android-home - install -d $ANDROID_HOME - wget --output-document=$ANDROID_HOME/cmdline-tools.zip https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_SDK_TOOLS}_latest.zip - pushd $ANDROID_HOME - unzip -d cmdline-tools cmdline-tools.zip - popd - export PATH=$PATH:${ANDROID_HOME}/cmdline-tools/tools/bin/ - sdkmanager --version - set +o pipefail - yes | sdkmanager --sdk_root=${ANDROID_HOME} --licenses - set -o pipefail - sdkmanager --sdk_root=${ANDROID_HOME} "platforms;android-${ANDROID_COMPILE_SDK}" - sdkmanager --sdk_root=${ANDROID_HOME} "platform-tools" - sdkmanager --sdk_root=${ANDROID_HOME} "build-tools;${ANDROID_BUILD_TOOLS}" - export PATH=$PATH:${ANDROID_HOME}/platform-tools/ - chmod +x ./gradlew [...]
answer by jing-li fonctionne pour moi Au lieu de passer l'argument --sdk_root pour chaque exécution de commande, plongons en profondeur dans la vraie cause.
À partir des outils de ligne de commande du SDK Android 1.0.0 (6200805), contrairement au SDK Android 26.1.1 (4333796), la hiérarchie des répertoires des outils a été modifiée. Auparavant, il était placé directement dans ANDROID_HOME, maintenant il est toujours nommé en tant qu'outils (la seule chose que vous obtiendrez après avoir décompressé le fichier zip de commandlinetools téléchargé), mais différemment, vous devez le placer dans un répertoire appelé cmdline-tools vous-même. Le nom cmdline-tools vient de son nom de package, où vous pouvez obtenir en listant la commande sdkmanager --list, dont les sorties incluent cmdline-tools; 1.0 | 1.0 | Outils de ligne de commande du SDK Android.
L'emballage du répertoire tools dans le répertoire cmdline-tools le ferait fonctionner et vous aiderait à vous débarrasser de l'argument ennuyeux --sdk_root. Mais qu'en est-il des autres parties?
Les outils du SDK Android reposent désormais à l'emplacement suivant: " android_sdk / cmdline-tools / version / bin / ";
Par conséquent, pour résoudre ce problème sous Windows (la même chose peut être répliquée dans un autre système d'exploitation), procédez comme suit:
Dans votre dossier android_sdk
, créez le dossier: cmdline-tools
et à l'intérieur créez un autre dossier: version
extract / placez tous vos fichiers "/ bin / lib NOTICE et sources.properties" dans ce dossier de version
.
Définissez ANDROID_HOME
dans votre dossier android_sdk
.
android_sdk\cmdlineAndroidSDK\cmdline-tools\version\bin\
De même, placez vos outils de android_sdk/platform-tools/
Android SDK dans votre android_sdk/platform-tools/
et ajoutez le PATH
correspondant aux ENVIRONMENTAL VARIABLES
sous System Variables
Non .. c'est "android_sdk / cmdline-tools / tools / bin /" ??
pour moi "android_sdk / cmdline-tools / version / bin /" a fonctionné à 100% correctement. et il est également mentionné sur le site Web du studio Android.
Android Studio est nécessaire lors de l'installation des outils de ligne de commande, même s'il ne s'agit pas de l'éditeur avec lequel vous développez des applications. Décocher l'onglet des packages obsolètes et télécharger les outils devrait le faire; cela devrait résoudre le problème de licence et vous pouvez revenir à votre IDE préféré (tel que VS Code).
ce n'est pas la réponse à ma question
Si vous utilisez Linux et en même temps, vous ne voulez pas vous gâcher les mains avec des solutions de contournement complexes, je vous recommande de télécharger et d'utiliser la version Snap de sdkmanager .
Rappelez - vous d'utiliser androidsdk
au lieu de sdkmanager
dans le terminal.