gpt4 book ai didi

Android 命令行工具 sdkmanager 总是显示 : Warning: Could not create settings

转载 作者:行者123 更新时间:2023-12-01 23:01:31 24 4
gpt4 key购买 nike

我使用 new command line tools for Android因为 Android 的旧 sdk-tools 存储库不再可用。所以我改变了我的 gitlab-ci 来加载 commandlintools .但是当我尝试运行它时,我收到以下错误:

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)
我已经尝试过手动执行这些命令,但我得到了同样的错误。另外,如果我运行 sdkmanager --version ,同样的错误发生。
我的 gitlab-ci 看起来像:
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

最佳答案

而不是传递参数 --sdk_root对于每个单独的命令执行,让我们深入了解真正的原因。
开始Android SDK 命令行工具 1.0.0 (6200805) ,与 相比Android SDK 26.1.1 (4333796) , tools目录层次结构已更改。
以前它被放置在 ANDROID_HOME 内。 (已弃用,我们将在本段的其余部分使用术语 ANDROID_SDK_ROOT),现在仍将其命名为 tools (解压下载的 commandlinetools zip 文件后你会得到唯一的东西),但不同的是,你必须将它放在一个名为 cmdline-tools 的目录中靠自己。姓名cmdline-tools来自它的包名,可以从列出包的命令sdkmanager --list中得到,其输出包括 cmdline-tools;1.0 | 1.0 | Android SDK Command-line Tools .
包装 tools cmdline-tools 内的目录目录将使它工作,并帮助您摆脱烦人的--sdk_root争论。但是其他部分呢?
好吧,这就是你必须改变的一切。让我再解释一下。

  • 国王 - sdkmanager住在里面cmdline-tools/tools/bin , 你最好设置在PATH环境变量
  • cmdline-tools不应设置为 ANDROID_SDK_ROOT .因为以后更新Android SDK,或者安装更多包的时候,其他的包都会放在ANDROID_SDK_ROOT下,但不在 cmdline-tools 下.
  • 最终的,完整的ANDROID_SDK_ROOT目录结构应如下所示,由多个子目录组成:build-tools , cmdline-tools , emulator , licenses , patcher , platform-tools , platforms , system-images .您可以轻松指出 build-toolscmdline-tools是 sibling ,都坐在父级内ANDROID_SDK_ROOT .

  • 让我以简单的方式回顾一下:
  • 设置您的首选ANDROID_SDK_ROOT (和以前一样)
  • 下载 commandlinetools zip 文件并将其解压缩到名为 cmdline-tools 的目录中。 ,位于 ANDROID_SDK_ROOT
  • 追加目录$ANDROID_SDK_ROOT/cmdline-tools/tools/bin到环境变量 PATH ,以便系统知道在哪里可以找到 sdkmanager

  • !!更新!!
    自构建 6858069 以来,行为再次发生了变化(Android SDK 命令行工具 3.0):
  • 解压后,最顶层的目录是cmdline-tools .
  • 将解压后的目录重命名为 cmdline-toolstools , 并将其放在 $ANDROID_SDK_ROOT/cmdline-tools 下,所以现在应该是这样的:$ANDROID_SDK_ROOT/cmdline-tools/tools .在里面,你应该有:NOTICE.txt bin lib source.properties .实际上根据official Command-Line Tools doc ,树形结构应该是android_sdk/cmdline-tools/version/bin/ ,但我已经检查过,使用 versiontools在这里没有区别。
  • 对于您的环境变量 PATH ,我建议你这样设置:PATH=$PATH:$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$ANDROID_SDK_ROOT/cmdline-tools/tools/bin ,因为稍后更新后,您将获得最新的sdkmanager置于 $ANDROID_SDK_ROOT/cmdline-tools/latest/bin 下, 放在前面会使其优先级更高。
  • 关于Android 命令行工具 sdkmanager 总是显示 : Warning: Could not create settings,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60440509/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com