[解決済み】Android コマンドラインツール sdkmanager が常に表示されます。警告。設定を作成できませんでした
質問
私は
新しい
コマンドラインツール
アンドロイド用
というのも、古い
sdk-tools(ツール
Androidのリポジトリはもう利用できないのです。そこで、私は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
(ダウンロードしたものを解凍して得られるのは
コマンドラインツール
というディレクトリに配置する必要があります。
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-tools
とcmdline-tools
は兄弟であり、すべて親であるANDROID_SDK_ROOT
.
わかりやすくおさらいしておきましょう。
-
お好みの
ANDROID_SDK_ROOT
(前と同じように) -
をダウンロードし、解凍してください。
コマンドラインツール
という名前のディレクトリにzipファイルをコピーします。
cmdline-tools
の中にある。ANDROID_SDK_ROOT
-
ディレクトリを追加する
$ANDROID_SDK_ROOT/cmdline-tools/tools/bin
を環境変数PATH
がどこにあるか分かるようにします。sdkmanager
!!!アップデイト!!!
ビルド後、再び動作が変更になりました
6858069
(Android SDK Command-line Tools 3.0)。
-
パッケージを解凍すると、一番上にあるディレクトリが
cmdline-tools
. -
から解凍したディレクトリの名前を変更します。
cmdline-tools
からtools
の下に配置します。$ANDROID_SDK_ROOT/cmdline-tools
というようになります。$ANDROID_SDK_ROOT/cmdline-tools/tools
. そしてその内側にはNOTICE.txt bin lib source.properties
. 実際には コマンドラインツール公式ドキュメント ツリー構造は次のようになります。android_sdk/cmdline-tools/version/bin/
しかし、私が確認したところversion
またはtools
は、ここでは違いはありません。 -
環境変数について
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開発で「Attempt to invoke virtual method 'XXX()' on null object reference」というヌルポインター例外に遭遇する。
-
Android studioのインストールと問題発生、Emulator: PANIC: AVDのシステムパスが見つかりません。
-
Google PlayデバイスはPlay保護機構の認証を受けていません。
-
telnet'が内部コマンドまたは外部コマンドとして認識されない 解決方法
-
例外「指定された子にはすでに親がいます」の解決方法。removeViewを呼び出す必要があります" の解決方法(ソースコード付き例)
-
Error:A problem occurred configuring project ':app'. > ビルドを見つけられませんでした。
-
repo: コマンドが見つかりません
-
Android ProgressBarの色を変更する
-
Android Get set image.setImageResource(R.drawable.xxx) リソース
-
アンドロイドスタジオ学習入門
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
AndroidでAttempt to invoke virtual method... on null object referenceの例外が発生する。
-
GoogleMapと連携し、位置情報の取得が可能
-
WeChatとQQは、他のアプリのオープンリストに自分のアプリを追加し、ファイルパスを取得することができます
-
Android ProgressBarの色を変更する
-
Androidの美しいSeekBarスタイルのカスタマイズ
-
アンドロイドスタジオソフトウェア使用詳細説明書
-
Android Studioのgitの使用とgitの設定パス
-
Android studio 制約レイアウト ConstraintLayout
-
[解決済み】Android Studioをダウンロードせずに、Android SDKをダウンロードするにはどうしたらいいですか?
-
[解決済み] コマンドラインからAndroid Studioアプリをビルドする