web-dev-qa-db-ja.com

すべてのSDKライセンスを自動的に受け入れる

Androidプラグインをグラドル化して以来 2.2-alpha4 : 

Gradleはプロジェクトが依存している不足しているSDKパッケージをダウンロードしようとします。

これは驚くほどクールで、 JakeWhartonプロジェクトであることがわかっていました

しかし、SDKライブラリをダウンロードするには、次のことを行う必要があります。

次のSDK コンポーネントの使用許諾契約に同意していません:[Android SDK Build-Tools 24、Android SDK Platform 24]。プロジェクトをビルドする前に、ライセンスに同意する必要があります。 Android Studio SDK Managerを使用して、必要なコンポーネントの契約を締結し、インストールを完了します。あるいは、あるワークステーションから別のワークステーションに使用許諾契約を譲渡する方法を学ぶには、 http://d.Android.com/r/studio-ui/export-licensesにアクセスしてください。 html

私はgradle buildをやっている間私はすべてのsdk依存関係をインストールしたいと思うので、これは問題です。

私は自動的にすべてのライセンスを受け入れるための解決策を探しています。たぶん筆記体ですか?何かアイデアはありますか。

ありがとうございます。

[編集]

解決策は、実行することでした:

Android update sdk --no-ui --filter build-tools-24.0.0,Android-24,extra-Android-m2repository

手動でインストールしますが、それを行うのはGradleの新機能です。

[編集2]

より良い解決策はsdkmanangerを使うことです:

yes | Sudo sdkmanager --licenses
312
nsvir

AndroidSDKはついにライセンスを受け入れることができます。

yes | sdkmanager --licenses
192
nsvir

alpha5プレビューでこれに遭遇しました。 

Jake Whartonはあなたが現在使用できると私に指摘しました 

mkdir -p "$Android_SDK/licenses"
echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$Android_SDK/licenses/Android-sdk-license"
echo -e "\n84831b9409646a918e30573bab4c9c91346d8abd" > "$Android_SDK/licenses/Android-sdk-preview-license"

あなたのマシン上の現在の$Android_HOME/licenseフォルダを作り直すため。これは、エラーメッセージのリンクで概説されているプロセスと同じ結果になります( http://tools.Android.com/tech-docs/new-build-system/license )。

ハッシュはライセンステキストの一部です、私はそれが定期的に更新されると思うので、このコードはとても長い間働きます:)

手動でインストールしますが、それを行うのはGradleの新機能です。

最初はAndroidツールで名前付きコンポーネントのライセンスを承諾していても、これがそのままではうまくいかないことに驚きましたが、/licensesフォルダーを作成するAS内のSDKマネージャが指摘されました。 

私は、公式のツールは法的な理由からこのステップをスキップしたくないと思うでしょう。 

それが述べているリリースノートを読み直す

SDKの自動ダウンロード:プロジェクトが依存している不足しているSDKパッケージをダウンロードしようとします。

これは、Androidツールをまだインストールしておらず、最新のライセンスを既に承認している場合でも機能するという意味ではありません。

編集:言っても、それは私がSDKをASにリンクするまで私のテストgubuntuボックスではまだ動作しません。 CIはうまく動作します - 違いが何であるかわからない...

166
Dori

最新のAndroid Studio(2.3)では、すべてのライセンスを更新または受諾するための最良の方法は、実行することです。

tools/bin/sdkmanager --licenses

セットアップに基づいて、ライセンスファイルを他の場所にコピーする必要があるかもしれません。 

117
bgies

新しいsdkmanagerユーティリティの場合:

yes | $Android_HOME/tools/bin/sdkmanager "build-tools;24.0.3"

イエスとイエスの間には少し遅れがあるので、ライセンスがしばらく表示されたままコマンドがハングする可能性がありますが、それは人間の介在を必要としません。

51
A. Rager

Jenkinsを使用している場合は、ビルドプロセスの最初のステップとして次のbashスクリプトを使用できます。

(while sleep 3; do echo "y"; done) | $Android_HOME/tools/Android update sdk -u

これはもちろん利用可能なすべてのアップデートをインストールしますが、ディスクスペースを節約することができれば時間を節約できます。この場合、 "yes"は正しく機能しないため、スリープはインストールプログラムのreadlineの破損を避けるためです。

編集:あなたはまた、組み込みのSDKマネージャを使用している場合、正しい$ Android_HOMEを取得するために "Install Android project prerequisites"プラグインをビルドステップに追加する必要があります。

40
raven

残念ながら、OPが最初に解決した方法では必ずしもうまくいくとは限りません。 エラーメッセージからあなたの現在のビルドは何ですかbuild-tools versionです。それが欠けているのは、ビルドツールのより高いバージョンであるということかもしれません。その場合は、手動でSDKマネージャを起動し、ビルドツールを追加してライセンスに同意する必要があります。 

OP命令ごとに、それは次のように見えます。 

$ ./gradlew build

  
このビルドのJVM設定を尊重するために、新しいJVMがフォークされます。デーモンの使用を検討してください。https://docs.gradle.org/2.14.1/userguide/gradle_daemon.html.

FAILURE:ビルドが例外を伴って失敗しました。 [*。] *問題点:
プロジェクト ':app'の設定中に問題が発生しました。
>次のSDKコンポーネントの使用許諾契約に同意していません:
 [Android] SDK Build-Tools 24.0.2]。
 
 ... 
 BUILD FAILED 

注:2017-04-16

Androidツールは、新しいsdkmanagerのために廃止予定になりました。 Joe Lawsonの answer および3月(2017)以降の投稿を参照してください。 

その後、次のようにコマンドを調整します。

Android update sdk --no-ui --filter build-tools-24.0.2,Android-24,extra-Android-m2repository
ソースの更新:
 https://dl.google.com/Android/repository/addons_list-2.xml
 XMLの検証
 XMLの解析
アドオンリストの取得に成功しましたソースの更新
 URLの取得:https://dl.google.com/Android/repository/repository-11.xml
 XMLの検証: https://dl.google.com/Android/repository/repository-11.xml
 XMLを解析します。https://dl.google.com/Android/repository/repository-11.xml
 ... 
エラー:不明なパッケージフィルタ 'build-tools-24.0.2'を無視しています
 --------------------- ---------- 
ライセンスID:Android-sdk-license-xxxxxxxx 
使用方法:
  -  SDKプラットフォームAndroid 7.0、API 24、リビジョン2 [ -  Android Support Repository、リビジョン39 [ - ] ------------------------------- 
 [
] ... [
] 
 2015年11月20日[
]ライセンス 'Android-sdk-license-xxxxxxxx'に同意しますか?[y/n]:y 
 
アーカイブをインストールする:
アーカイブをインストールする準備をする
ダウンロードSDK Platform Android 7.0、API 24、リビジョン2 
のインストールSDK Platform Android 7.0、API 24、リビジョン2 
のインストールSDK Platform Android 7.0、API 24、リビジョン296%)
 Android Support Repositoryのダウンロード、リビジョン39 
 Android Support Repositoryのインストール、リビジョン39 
インストールされているAndroid Support Repository、リビジョン3999%)
完了。 2個のパッケージがインストールされています。

これをもう一度実行しても、Gradleを幸せにすることはできません。ですから、誰かが何かより良いことを思いつくまでは、手動による承認が唯一の解決策です。 (してください!)

29
not2qubit

これは私のエラーを解決しました

echo yes | $Android_HOME/tools/bin/sdkmanager "build-tools;25.0.2"
27

Androidツールは推奨されていません。代わりにsdkmanagerを使用してください。 sdkmanagerはまた、あなたが最初にそれを受け入れるときにライセンスファイルを書きます。コマンドは、使用しているSDKによってライセンスが変わります。

echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$Android_SDK/licenses/Android-sdk-license"

いくつかのシステムで動作します。それだけではうまくいきません。一部のSDKインストールでは、ファイルに改行なしでファイルを終了することを想定しているため、echoコマンドに-nを追加してみてください。

echo -n -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$Android_SDK/licenses/Android-sdk-license"

それでもうまくいかない場合は、代わりにbase64エンコーディングを使用してみてください。

だから私のライセンスを発見する:

$> rm ${Android_HOME}/
$> unzip tools_r25.2.3-linux.Zip -d ${Android_HOME}
$> ${Android_HOME}/tools/bin/sdkmanager "system-images;Android-23;default;x86_64"

ライセンスに同意するように促されます。受け入れた後、それを${Android_HOME}/licenses/Android-sdk-licenseにコピーします。あなたが常に書かれたものを正確に得るためにはbase64を使用してください。

$> base64 ${Android_HOME}/licenses/Android-sdk-license
Cjg5MzNiYWQxNjFhZjQxNzhiMTE4NWQxYTM3ZmJmNDFlYTUyNjljNTU=

それからbase64 -dを使ってファイルを正確に作り直すことができます。

$> echo Cjg5MzNiYWQxNjFhZjQxNzhiMTE4NWQxYTM3ZmJmNDFlYTUyNjljNTU= | base64 -d > ${Android_HOME}/licenses/Android-sdk-license

書き込まれたファイルがsha1sumを実行することによって予想されるものかどうかを確認できます。

$> sha1sum ${Android_HOME}/licenses/Android-sdk-license
da6b80c9c47b41c0bf7032938e7137a58a3dc249
20
Joe Lawson

yes | sdkmanager --licensesを実行すると、$Android_HOME/licenses/Android-sdk-licenseの内容が表示されます。 

私たちはこれを手に入れます

# cat $Android_HOME/licenses/Android-sdk-license

8933bad161af4178b1185d1a37fbf41ea5269c55

d56f5187479451eabf01fb78af6dfcb131a6481e

GitLab CIでAndroid SDK Build-Tools 26.0.2のライセンスを受け入れるには、これを実行する必要があります

before_script:
  - mkdir -p $Android_HOME/licenses
  - echo "8933bad161af4178b1185d1a37fbf41ea5269c55" > $Android_HOME/licenses/Android-sdk-license
  - echo "d56f5187479451eabf01fb78af6dfcb131a6481e" >> $Android_HOME/licenses/Android-sdk-license
19
jk2K

Jenkinsでプロジェクトをビルドしても同じ問題が見つかりました。 buildToolsVersion '25.0.2'を使用すると、構築する前にライセンスに同意する必要があります。私たちの場合は、実行する必要がありました。

sdkmanager自体のライセンスを受け入れるyes | sdkmanager --update

以前に承認されていない新しいライセンスを承認するyes | sdkmanager --licenses

覚えておいてください:jenkinsと同じユーザでこれらのコマンドを実行してください。私のDebianでは、Jenkinsユーザは単にjenkinsです。言い換えれば、rootとしてそれをすることはrootとして受け入れられたライセンスを作成するので、Jenkinsはそれらを読みません。

ところで、/var/lib/jenkins/tools/Android-sdk/tools/binsdkmanagerが見つかりました。あなたがそこにいない場合は、find / -name "sdkmanager"で見つけてください。

17
Roc Boronat

現時点でこの問題に遭遇している人のために、build-tools-24.0.2は(今だと思うが)今では時代遅れと見なされているので、あなたは得るでしょう:

 Error: Ignoring unknown package filter 'build-tools-24.0.2'

それらをインストールするために提案された様々なコマンドを実行するとき。

解決策は--allを追加することです。

Android update sdk --no-ui --all --filter "build-tools-24.0.2"

32ビットのLinuxを使っているのであれば、 everything ビルドツール23.0.1以降は64ビットのみ なので、実行されません。 32ビットユーザーは23.0.1で立ち往生しています。後でビルドツールを入手する唯一の方法は64ビットに切り替えることです。

15
JosephH

あなたがtools/bin/sdkmanager --licensesを使うならば、あなたはまだ人間との対話をする必要があります。 gitlab CIを使用して問題があります。これが私の解決策です:

wget --quiet --output-document=tools.Zip https://dl.google.com/Android/repository/sdk-tools-linux-3859397.Zip
unzip -qq tools.Zip
echo y | tools/bin/sdkmanager "platforms;Android-25"
echo y | tools/bin/sdkmanager "platform-tools"
echo y | tools/bin/sdkmanager "build-tools;25.0.2"
echo y | tools/bin/sdkmanager "extras;Android;m2repository"
echo y | tools/bin/sdkmanager "extras;google;m2repository"

質問があればecho yはyesと答えますが、インストーラパッケージごとに1行作成する必要があります

12
Thibaut Mottet

実行することもできます:

$Android_HOME/tools/bin/sdkmanager --licenses

そしてWindowsでは、次のコマンドを実行してください。

%Android_HOME%/tools/bin/sdkmanager --licenses
11
r1si

SDK API番号25に関するエラーメッセージの場合:

Android update sdk --no-ui --all --filter build-tools-25.0.1,Android-25,extra-Android-m2repository

10
ofir_aghai

2018年現在、この問題を抱えている人は誰でも大丈夫です。上記の答えは私にはまったくうまくいきませんでした。何がDID作業していたのですか?Android SDKを開いていました - ツールバーのDOWNLOADボタンをクリックして適切なパッケージを選択しました。ダウンロードが完了したら、使用許諾契約に同意します。

enter image description here

7
user2967081

コマンドラインSDKに問題がある人にとって、あなたが受け入れたライセンスが見つからないのは、それらが必要な場所である$Android_HOME/licensesとは異なる場所に書かれているからです。

私は最も簡単な解決策はこのようなライセンスを受け入れることであることがわかりました:

$Android_HOME/bin/sdkmanager --licenses --sdk_root=$Android_HOME

注意:これはあなたのsdkがインストールされている場所を指すようにAndroid_HOMEを設定したと仮定しています。

6
monkjack

私はこの問題を解決するために、受け入れられたライセンスファイルを使って公開gitリポジトリを作成しました。その後、wgetを使用して、必要なマシン上のこれらのライセンスを [sdk-dir]/licenses ディレクトリに取得してから ./gradlew を実行してプロジェクトをビルドします。

5
IgorGanapolsky

私はついにWindows上で本当のサイレントで自動インストールをするための解決策を見つけました。

Windowsでは、次の構文は機能しません。

echo y | sdkmanager --licenses

"y"はバッチで呼び出されたJavaプログラムに正しく送信されないようです。

これを回避するには、いくつかの "y"を1行ずつ含むファイルfile-y.txtを作成します。 

call sdkmanager --licenses < file-y.txt

これにより、licensesディレクトリに必要なファイルが作成されます。問題はおそらくJavaでBufferedReaderの使用に関連しています

4
moobyfr

Cordovaを使用しているときに同じエラーが発生しました。

この問題は、私がAndroid Studioとaptapt install Android-sdk adbを介してAndroid Sdkをインストールしたことが原因でした。そしてCordovaは私のホームディレクトリのファイルの代わりにaptを通してインストールされたファイルを呼び出していました。

パスをSDKに変更したら、それはうまくいきました。

# Change path
export Android_HOME="$HOME/Android/Sdk/"
echo "Android home = $Android_HOME"
# Accept licenses
eval "${Android_HOME}/tools/bin/sdkmanager --licenses"
# Run Cordova
cordova build Android

それから私はもう使われていないシステムファイルを削除しました:apt remove Android-sdk adb

3
A.L

これが私のDockerの設定です。 
あなたは普通のLinux環境から従うことができます。

yes |--licenses --sdk_root=${Android_HOME}句があることに注意してください。 
sdkmanager --updateは契約を元に戻すようなので、yes |は2回現れます。

FROM openjdk:8
# Install dev-essential(gnumake)
RUN apt update
RUN apt install -y build-essential
# Set ENV
ENV SDK_URL="https://dl.google.com/Android/repository/sdk-tools-linux-4333796.Zip" \
    Android_HOME="/usr/local/Android-sdk" \
    Android_VERSION=28 \
    Android_BUILD_TOOLS_VERSION=28.0.3 \
    GRADLE_VERSION=4.10.3 \
    NDK_VERSION=r16b
# Download Android SDK
RUN mkdir "$Android_HOME" .Android \
    && cd "$Android_HOME" \
    && curl -o sdk.Zip $SDK_URL \
    && unzip sdk.Zip \
    && rm sdk.Zip \
    && yes | $Android_HOME/tools/bin/sdkmanager --licenses --sdk_root=${Android_HOME}
# Install Android Build Tool and Libraries
RUN $Android_HOME/tools/bin/sdkmanager --update
RUN yes | $Android_HOME/tools/bin/sdkmanager "build-tools;${Android_BUILD_TOOLS_VERSION}" \
    "platforms;Android-${Android_VERSION}" \
    "platform-tools" --sdk_root=${Android_HOME}
# Install Gradle
RUN wget https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-all.Zip
RUN mkdir /opt/gradle
RUN unzip gradle-${GRADLE_VERSION}-all.Zip -d /opt/gradle
ENV PATH=${PATH}:/opt/gradle/gradle-${GRADLE_VERSION}/bin
# Install NDK
RUN wget https://dl.google.com/Android/repository/Android-ndk-${NDK_VERSION}-linux-x86_64.Zip
RUN mkdir /opt/ndk-bundle
RUN unzip Android-ndk-${NDK_VERSION}-linux-x86_64.Zip -d /opt/ndk-bundle
ENV PATH=${PATH}:/opt/ndk-bundle

RUN mkdir /application
WORKDIR /application
3
Youngjae

次のコマンドを実行して、すべてのライセンスに同意することができます。

 sdkmanager --licenses

これはあなたがまだ受け入れていないそれぞれのライセンスを通してあなたを促すでしょう、そしてあなたはそれらをそれぞれ受け入れるためにyを入力することができます。

3
Manoj Shrestha

Licenses /ディレクトリ全体をコピーして、プロジェクトを構築したいマシンのAndroid SDKホームディレクトリに貼り付けます。

https://developer.Android.com/studio/intro/update.html#download-with-gradle

これで問題は解決しました

3
surya

cd $Android_HOME/tools/bin ./sdkmanager --update

または 

$Android_HOME/tools/bin/sdkmanager --update

2
Jimmy Yin

Windows PowerShellでは、次のことができます。

for($i=0;$i -lt 30;$i++) { $response += "y`n"}; $response | sdkmanager --licenses

これははるかに柔軟性があり、手動による介入は不要です。 30の数は任意です。ライセンスの受諾数をカバーするのに十分なはずですが、必要に応じて増やすことができます

2
Mark Johnson

2019年7月以降、最も簡単な方法は、コマンドプロンプトでflutter doctor --Android-licensesを使用することです。

SDKの未承認のT&Cが1つずつ表示され、「y/n」を選択するオプションが表示されます。すべてにyを選択します。

または、flutter doctorを実行すると、Androidツールチェーン診断が実行され、まだ受け入れられていないライセンスの数が表示され、-Android-licensesフラグで実行するように提案されます。

2
Buldo

走る 

#react-native run-Android 

ターミナルから、その問題を満たした。 手動の場合は、Android Studio - > Android SDK - > SDK Platform の順にクリックし、[Show Packages Detail]をクリックして次の項目を確認します。 

+ Google APIs
+ Android SDK Platform 23
+ Intel x86 Atom_64 System Image
+ Google APIs Intel x86 Atom_64 System Image

パッケージをインストールするとき、accept license =>をチェックすると問題を解決できます。

1
Phuc Nguyen

windowsの場合は、cmdを開き、次のコマンドを実行してbinディレクトリに入ります。

cd C:\Users\username\AppData\Local\Android\sdk\tools\Android\Sdk\tools\bin

それからsdkmanager --licensesコマンドを実行します、それはライセンスを受け入れるように頼みます。

1
Deepak Kumrawat

Mac OSXでは、sdk/tools/binに移動します。

その後、./sdkmanager --licensesを実行し、すべてのライセンスに同意します。

1

私はナビゲートします:

/usr/lib/Android-sdk/licenses

そして私は端末に入力しました:

echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > $Android_SDK/licenses/Android-sdk-license"

ルート許可を得て。

0

Windowsでコマンドプロンプトに移動し、次のコマンドを入力します。

cd C:\Users\<Username>\AppData\Local\Android\Sdk\tools\bin
sdkmanager --licenses

これにより、すべてのライセンスを受け入れるために「y」を押し続けるライセンスが生成されます。

0

私は同じエラーのエラーを受け入れませんでした... APIレベル23のAndroidエミュレータでReactネイティブアプリケーションを実行するためにAndroid環境をセットアップしようとしています.

私は次のことをしました:

リンクに基づく https://developer.Android.com/studio/intro/update#download-with-gradle

ライセンスがAndroid studio 3.1.3のSDKマネージャを介してダウンロードされた場合に検証されます。

Android_HOMEをC:\\ Android\Sdkとして設定します。

(C:\ Users\username\AppData\Local\Android\Sdkにインストールされています)

新しいコマンドプロンプトでビルドを再試行した後、エラーが解決しました。

0
VShank

遅れていますが、上記のすべての解決策が私にはうまくいきませんでした。

yes | sdkmanager --licenses && sdkmanager --update
0
Swapnil Kotwal

私は同様の問題を抱えていた、私はAndroid Studioを開くことによってそれを解決した。実際のところ、Android Build Tools 26.0.2はインストールされていません。エラーが発生したので、インストールしてプロジェクトと同期しました。問題が解決しました :)

0
Justine M

コミュニティのメンバーから言及された多くの可能な解決策を試してみた結果、残念ながらさまざまな問題が発生した可能性があるため、解決策のほとんどは古くなっています。 

現在、そして としてTravisコミュニティに投稿しました 、Travisはデフォルトですべてのライセンスを受け入れているはずですが、ライセンス27.0.3を受け入れていないことについて不平を言い続けていました。 

追加:

before_install:
  - yes | sdkmanager "build-tools;27.0.3"

問題を解決する必要があります、私達は私達が私達が使用しているビルドツールのどのバージョンを宣言する必要さえなくてもAndroid Gradle Toolsの3. +バージョンを使用することができるでしょう:

Android:
  components:
    # Use the latest revision of Android SDK Tools
    - tools
    - platform-tools
    - tools

    # The SDK version used to compile your project
    - Android-${Android_API}
    # - build-tools-28.0.3    # WE DONT NEED THIS ANYMORE FROM AGP 3.+

    # Additional components
    - extra-google-google_play_services
    - extra-google-m2repository
    - addon-google_apis-google-${Android_API}

これは2018年10月29日のように動作します。トラヴィスは将来それほど変わった変更を加えるかもしれません!

0
cesards

Windows 10では、管理者権限でcmdを開いてからcd C:\Program Files (x86)\Android\android-sdk\tools\bin\を入力してからsdkmanager --updateを入力するとうまくいきました。その後、私はただライセンスを受け入れるために "y"を二度押さなければなりませんでした。

0
JedatKinports

私がしなければならなかったのはyes | sdkmanager --licenses > /dev/nullだけで、すべてが受け入れられ、コンソールやtravisログなどのどこにも大きな出力はありませんでした。また、たとえばyes | sdkmanager "tools" > /dev/nullのように機能します。

0
pvinis

反応ネイティブアプリの場合:

上記の手順に加えて、React Nativeアプリでこの問題が発生している場合は、アプリのAndroidディレクトリ(AppName/Android)に 'sdk'ディレクトリを指すlocal.propertiesファイルがあることを確認してください。

sdk.dir=/PATH_TO_SDK/
0
Nauman Tahir

私はwindows 10 machine で上記のすべてのコマンドを試してみましたが、解決策はSDKMANAGERを使用してライセンスを確認し、購入して不足しているバージョンをインストールすることでした。

enter image description here

0
Aymen Boumyza

私は Bitbucket Pipelines のための解決策を探すために半日を費やしました - /

Bitbucket Pipelines を使用していて、すべてのSDKライセンスの受け入れに問題がある場合は、.ymlファイルでこのコードを使用してください。

image: mingc/Android-build-box:latest

pipelines:
  default:
  - step:
      script:
        - chmod +x gradlew
        - ./gradlew assemble

うまくいくはずです。

0
eltray