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
AndroidSDKはついにライセンスを受け入れることができます。
yes | sdkmanager --licenses
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はうまく動作します - 違いが何であるかわからない...
最新のAndroid Studio(2.3)では、すべてのライセンスを更新または受諾するための最良の方法は、実行することです。
tools/bin/sdkmanager --licenses
セットアップに基づいて、ライセンスファイルを他の場所にコピーする必要があるかもしれません。
新しいsdkmanager
ユーティリティの場合:
yes | $Android_HOME/tools/bin/sdkmanager "build-tools;24.0.3"
イエスとイエスの間には少し遅れがあるので、ライセンスがしばらく表示されたままコマンドがハングする可能性がありますが、それは人間の介在を必要としません。
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"プラグインをビルドステップに追加する必要があります。
残念ながら、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を幸せにすることはできません。ですから、誰かが何かより良いことを思いつくまでは、手動による承認が唯一の解決策です。 (してください!)
これは私のエラーを解決しました
echo yes | $Android_HOME/tools/bin/sdkmanager "build-tools;25.0.2"
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
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
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/bin
にsdkmanager
が見つかりました。あなたがそこにいない場合は、find / -name "sdkmanager"
で見つけてください。
現時点でこの問題に遭遇している人のために、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ビットに切り替えることです。
あなたが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行作成する必要があります
実行することもできます:
$Android_HOME/tools/bin/sdkmanager --licenses
そしてWindowsでは、次のコマンドを実行してください。
%Android_HOME%/tools/bin/sdkmanager --licenses
SDK API番号25に関するエラーメッセージの場合:
Android update sdk --no-ui --all --filter build-tools-25.0.1,Android-25,extra-Android-m2repository
2018年現在、この問題を抱えている人は誰でも大丈夫です。上記の答えは私にはまったくうまくいきませんでした。何がDID作業していたのですか?Android SDKを開いていました - ツールバーのDOWNLOADボタンをクリックして適切なパッケージを選択しました。ダウンロードが完了したら、使用許諾契約に同意します。
コマンドラインSDKに問題がある人にとって、あなたが受け入れたライセンスが見つからないのは、それらが必要な場所である$Android_HOME/licenses
とは異なる場所に書かれているからです。
私は最も簡単な解決策はこのようなライセンスを受け入れることであることがわかりました:
$Android_HOME/bin/sdkmanager --licenses --sdk_root=$Android_HOME
注意:これはあなたのsdkがインストールされている場所を指すようにAndroid_HOME
を設定したと仮定しています。
私はこの問題を解決するために、受け入れられたライセンスファイルを使って公開gitリポジトリを作成しました。その後、wget
を使用して、必要なマシン上のこれらのライセンスを [sdk-dir]/licenses ディレクトリに取得してから ./gradlew を実行してプロジェクトをビルドします。
私はついにWindows上で本当のサイレントで自動インストールをするための解決策を見つけました。
Windowsでは、次の構文は機能しません。
echo y | sdkmanager --licenses
"y"はバッチで呼び出されたJavaプログラムに正しく送信されないようです。
これを回避するには、いくつかの "y"を1行ずつ含むファイルfile-y.txtを作成します。
call sdkmanager --licenses < file-y.txt
これにより、licensesディレクトリに必要なファイルが作成されます。問題はおそらくJavaでBufferedReaderの使用に関連しています
Cordovaを使用しているときに同じエラーが発生しました。
この問題は、私がAndroid Studioとapt
とapt 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
。
これが私の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
次のコマンドを実行して、すべてのライセンスに同意することができます。
sdkmanager --licenses
これはあなたがまだ受け入れていないそれぞれのライセンスを通してあなたを促すでしょう、そしてあなたはそれらをそれぞれ受け入れるためにy
を入力することができます。
Licenses /ディレクトリ全体をコピーして、プロジェクトを構築したいマシンのAndroid SDKホームディレクトリに貼り付けます。
https://developer.Android.com/studio/intro/update.html#download-with-gradle
これで問題は解決しました
cd $Android_HOME/tools/bin
./sdkmanager --update
または
$Android_HOME/tools/bin/sdkmanager --update
Windows PowerShellでは、次のことができます。
for($i=0;$i -lt 30;$i++) { $response += "y`n"}; $response | sdkmanager --licenses
これははるかに柔軟性があり、手動による介入は不要です。 30の数は任意です。ライセンスの受諾数をカバーするのに十分なはずですが、必要に応じて増やすことができます
2019年7月以降、最も簡単な方法は、コマンドプロンプトでflutter doctor --Android-licenses
を使用することです。
SDKの未承認のT&Cが1つずつ表示され、「y/n」を選択するオプションが表示されます。すべてにyを選択します。
または、flutter doctor
を実行すると、Androidツールチェーン診断が実行され、まだ受け入れられていないライセンスの数が表示され、-Android-licensesフラグで実行するように提案されます。
走る
#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 =>をチェックすると問題を解決できます。
windowsの場合は、cmdを開き、次のコマンドを実行してbin
ディレクトリに入ります。
cd C:\Users\username\AppData\Local\Android\sdk\tools\Android\Sdk\tools\bin
それからsdkmanager --licenses
コマンドを実行します、それはライセンスを受け入れるように頼みます。
Mac OSXでは、sdk/tools/bin
に移動します。
その後、./sdkmanager --licenses
を実行し、すべてのライセンスに同意します。
私はナビゲートします:
/usr/lib/Android-sdk/licenses
そして私は端末に入力しました:
echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > $Android_SDK/licenses/Android-sdk-license"
ルート許可を得て。
Windowsでコマンドプロンプトに移動し、次のコマンドを入力します。
cd C:\Users\<Username>\AppData\Local\Android\Sdk\tools\bin
sdkmanager --licenses
これにより、すべてのライセンスを受け入れるために「y」を押し続けるライセンスが生成されます。
私は同じエラーのエラーを受け入れませんでした... 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にインストールされています)
新しいコマンドプロンプトでビルドを再試行した後、エラーが解決しました。
遅れていますが、上記のすべての解決策が私にはうまくいきませんでした。
yes | sdkmanager --licenses && sdkmanager --update
私は同様の問題を抱えていた、私はAndroid Studioを開くことによってそれを解決した。実際のところ、Android Build Tools 26.0.2はインストールされていません。エラーが発生したので、インストールしてプロジェクトと同期しました。問題が解決しました :)
コミュニティのメンバーから言及された多くの可能な解決策を試してみた結果、残念ながらさまざまな問題が発生した可能性があるため、解決策のほとんどは古くなっています。
現在、そして として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日のように動作します。トラヴィスは将来それほど変わった変更を加えるかもしれません!
Windows 10では、管理者権限でcmd
を開いてからcd C:\Program Files (x86)\Android\android-sdk\tools\bin\
を入力してからsdkmanager --update
を入力するとうまくいきました。その後、私はただライセンスを受け入れるために "y"を二度押さなければなりませんでした。
私がしなければならなかったのはyes | sdkmanager --licenses > /dev/null
だけで、すべてが受け入れられ、コンソールやtravisログなどのどこにも大きな出力はありませんでした。また、たとえばyes | sdkmanager "tools" > /dev/null
のように機能します。
反応ネイティブアプリの場合:
上記の手順に加えて、React Nativeアプリでこの問題が発生している場合は、アプリのAndroidディレクトリ(AppName/Android)に 'sdk'ディレクトリを指すlocal.propertiesファイルがあることを確認してください。
sdk.dir=/PATH_TO_SDK/
私は Bitbucket Pipelines のための解決策を探すために半日を費やしました - /
Bitbucket Pipelines を使用していて、すべてのSDKライセンスの受け入れに問題がある場合は、.ymlファイルでこのコードを使用してください。
image: mingc/Android-build-box:latest
pipelines:
default:
- step:
script:
- chmod +x gradlew
- ./gradlew assemble
うまくいくはずです。