web-dev-qa-db-ja.com

Androidコマンドラインツールのsdkmanagerが常に表示する:警告:設定を作成できませんでした

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

Android Studioは、アプリの開発に使用するエディターでなくても、コマンドラインツールをインストールするときに必要です。廃止されたパッケージのタブのチェックを外し、ツールをダウンロードすれば実行できます。これでライセンスの問題が解決し、お気に入りのIDE(VS Codeなど))に戻ることができます。

0
user13328626

Android SDKツールが次の場所に置かれるようになりました: "Android_sdk/cmdline-tools/version/bin /";

したがって、この問題をWindowsで解決するには(他のOSでも同じように複製できます)、次のようにします。

  1. Android_sdkフォルダー内に、フォルダーcmdline-toolsを作成し、その中に別のフォルダーを作成します:version extract /すべてのファイル "/ bin/lib NOTICE and sources.properties"ファイルをこのversionフォルダー内に配置します。

  2. Android_HOMEAndroid_sdkフォルダに設定します。

  3. システムパスに追加:Android_sdk\cmdlineAndroidSDK\cmdline-tools\version\bin\

同様に、Android SDK Platform ToolsAndroid_sdk/platform-tools/内に配置し、対応するPATHENVIRONMENTAL VARIABLESSystem Variablesに追加します

0
shahab Uddin

jing-liによる回答 コマンドを実行するたびに引数--sdk_rootを渡す代わりに、実際の原因を詳しく調べてみましょう。

Android SDK 26.1.1(4333796)とは対照的に、Android SDK Command-line Tools 1.0.0(6200805)から始まり、ツールのディレクトリ階層は以前はAndroid_HOME内に配置されていましたが、現在はツールとして名前が付けられています(ダウンロードされたcommandlinetools Zipファイルを解凍した後に取得されるのは唯一のものです)が、別の方法として、cmdline-tools cmdline-toolsという名前は、そのパッケージ名に由来します。ここで、パッケージの一覧表示コマンドsdkmanager --listから取得できます。その出力には、cmdline-tools; 1.0 | 1.0 | Android SDK Commandが含まれます。 -lineツール。

Cmdline-toolsディレクトリ内のtoolsディレクトリをラップすると機能し、煩わしい--sdk_root引数を取り除くのに役立ちます。しかし、他の部分はどうですか?

0
ashiq