166
votes

Les outils de ligne de commande Android sdkmanager affichent toujours: Avertissement: impossible de créer les paramètres

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)


0 commentaires

17 Réponses :


5
votes

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)


1 commentaires

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.



109
votes

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.


8 commentaires

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



22
votes

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.


2 commentaires

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.



5
votes

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"


3 commentaires

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.



40
votes

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:

  1. Téléchargez les derniers outils de ligne de commande depuis Android ie commandlinetools-win-6200805_latest.zip
  2. Décompressez le fichier téléchargé
  3. Créez un répertoire pour stocker les outils de ligne de commande quelque part sur votre disque, avec le chemin suivant inclus: android / cmdline-tools / latest Fondamentalement, lorsque vous décompressez ces outils de ligne Cmd, renommez simplement le répertoire des outils en dernier et assurez-vous de mettre ce dernier dossier dans android / cmdline -tools répertoire quelque part sur votre disque
  4. Créez la variable d'environnement ANDROID_HOME pour le répertoire qui stocke l'emplacement du répertoire des outils cmdline comme: C: \ YourLocationWhereYouStoreTheDirectory \ android \ cmdline-tools \ latest
  5. Créez une nouvelle entrée dans la variable d'environnement Path en tant que % ANDROID_HOME% \ bin

6 commentaires

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.



3
votes

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.


0 commentaires

1
votes

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:

  1. Installation du SDK Android sans Android Studio.
  2. Solution de contournement pour «Avertissement: impossible de créer les paramètres» et «java.lang.IllegalArgumentException»
  3. L'astuce pour Android Studio version 3.6 ou plus récente.
  4. Avertissement concernant Java 9 ou version ultérieure, un JDK doit être la version 8.

https://docs.unity3d.com/2018.4/Documentation/Manual/android-sdksetup.html


1 commentaires

Cela fonctionne réellement, toutes les autres réponses sont très dépassées.



2
votes

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é.


1 commentaires

--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



23
votes

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.

  1. Installez Android-SDK.

    sdkmanager --version
    

    Après l'installation, vous aurez un dossier appelé android-sdk dans / usr / lib

  2. Créez un dossier appelé cdmline-tools dans le dossier android-sdk

    . ~/.profile
    
  3. Téléchargez le zip des outils de ligne de commande Android à partir d'ici ( https://developer.android.com/studio?hl=en-419#downloads )
  4. 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
    
  5. Accédez à votre répertoire personnel et modifiez votre .profile

    export ANDROID_SDK_ROOT=/usr/lib/android-sdk
    
  6. Créer une variable ANDROID_SDK_ROOT

    nano .profile
    
  7. Mettez le dossier sdkmanager dans votre chemin

    sudo unzip /path/for/commandlinetools-linux-6200805_latest.zip -d /usr/lib/android-sdk/cmdline-tools
    
  8. Sauvegarder et quitter
  9. Recharger votre profil

    sudo mkdir /usr/lib/android-sdk/cmdline-tools
    
  10. Courir

    sudo apt install android-sdk
    

Vous devriez voir la version imprimée dans votre terminal.


7 commentaires

Ç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/…



332
votes

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.

  • Le roi - 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 .
  • La structure de répertoires 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:

  • Définissez votre ANDROID_SDK_ROOT préféré (comme avant)
  • Téléchargez et décompresser le fichier zip commandlinetools dans un répertoire appelé cmdline-tools , qui est à l' intérieur ANDROID_SDK_ROOT
  • Ajoutez le répertoire $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):

  • Après avoir décompressé le package, le répertoire le plus cmdline-tools que vous obtiendrez est cmdline-tools .
  • Renommez le répertoire décompressé de 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.
  • Pour votre variable d'environnement 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.

17 commentaires

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



0
votes

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 =


0 commentaires

3
votes

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:

  1. Ouverture de sdkmanager.bat par notepad ++
  2. Changer cette ligne de

"%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


1 commentaires

Merci, facile et ça marche! :) Mais maintenant, vous devriez utiliser à la place --sdk_root =% ANDROID_SDK_ROOT%.



7
votes

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
[...]


0 commentaires

1
votes

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?


0 commentaires

2
votes

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:

  1. 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 .

  2. Définissez ANDROID_HOME dans votre dossier android_sdk .

  3. Ajoutez à votre chemin système: 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


2 commentaires

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.



-1
votes

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).


1 commentaires

ce n'est pas la réponse à ma question



0
votes

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.


0 commentaires