J'utilise les nouveaux outils de ligne de commande de Android parce que l'ancien référentiel sdk-tools de Android n'est plus disponible. J'ai donc changé mon gitlab-ci en chargez les outils de commande. 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 commandy à 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
Android Studio est nécessaire lors de l'installation des outils de ligne de commande, même si ce n'est pas 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 effacer le problème de licence et vous pouvez revenir à votre favori IDE (tel que VS Code).
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 dans Windows (la même chose peut être répliquée dans un autre système d'exploitation), procédez comme suit:
À l'intérieur de votre Android_sdk
dossier, créez le dossier: cmdline-tools
et à l'intérieur créer un autre dossier: version
extraire/mettre tous vos fichiers "/ bin/lib NOTICE et sources.properties" dans ce dossier version
.
Ensemble Android_HOME
à ton Android_sdk
dossier.
Android_sdk\cmdlineAndroidSDK\cmdline-tools\version\bin\
De même, placez votre Android SDK Platform Tools dans votre Android_sdk/platform-tools/
et ajoutez PATH
correspondant à ENVIRONMENTAL VARIABLES
sous System Variables
la réponse par jing-li fonctionne pour moi Au lieu de passer l'argument --sdk_root pour chaque exécution de commande, plongeons-nous dans la vraie cause.
À partir de Android SDK Command-line Tools 1.0.0 (6200805), contrairement à Android SDK 26.1.1 (4333796)), la hiérarchie des répertoires d'outils a 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 sur 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 -Outils en ligne.
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?