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
Android Studioは、アプリの開発に使用するエディターでなくても、コマンドラインツールをインストールするときに必要です。廃止されたパッケージのタブのチェックを外し、ツールをダウンロードすれば実行できます。これでライセンスの問題が解決し、お気に入りのIDE(VS Codeなど))に戻ることができます。
Android SDKツールが次の場所に置かれるようになりました: "Android_sdk/cmdline-tools/version/bin /";
したがって、この問題をWindowsで解決するには(他のOSでも同じように複製できます)、次のようにします。
Android_sdk
フォルダー内に、フォルダーcmdline-tools
を作成し、その中に別のフォルダーを作成します:version
extract /すべてのファイル "/ bin/lib NOTICE and sources.properties"ファイルをこのversion
フォルダー内に配置します。
Android_HOME
をAndroid_sdk
フォルダに設定します。
Android_sdk\cmdlineAndroidSDK\cmdline-tools\version\bin\
同様に、Android SDK Platform ToolsをAndroid_sdk/platform-tools/
内に配置し、対応するPATH
をENVIRONMENTAL VARIABLES
のSystem Variables
に追加します
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引数を取り除くのに役立ちます。しかし、他の部分はどうですか?