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


Answers

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

yes | sdkmanager --licenses
Question

gradleアンドロイドプラグイン2.2-alpha4

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

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

しかし、SDKライブラリをダウンロードするには、次のことが必要です。ライセンス契約に同意するか、またはgradleがあなたに伝えます:

あなたは、以下の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



残念ながら、OPが元々それを解決する方法は必ずしも機能しません。 エラーメッセージからあなたのビルドツールのバージョンを確認してください。 これは、それが欠けているビルドツールの上位バージョンである可能性があります。 その場合は、SDKマネージャを手動で起動し、ビルドツールを追加し、ライセンスを受け入れる必要があります。

OP命令ごとに、以下のようになります。

$ ./gradlew build

 
To honour the JVM settings for this build a new JVM will be forked. Please consider using the daemon: https://docs.gradle.org/2.14.1/userguide/gradle_daemon.html.

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring project ':app'.
> You have not accepted the license agreements of the following SDK components:
  [Android SDK Build-Tools 24.0.2].

...
BUILD FAILED

注:2017-04-16

androidツールは新しいsdkmanagerために推奨されなくなりました。 3月(2017)以降のJoe Lawsonのanswerとその後の記事をご覧ください。

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

android update sdk --no-ui --filter build-tools-24.0.2,android-24,extra-android-m2repository
Refresh Sources:
  Fetching https://dl.google.com/android/repository/addons_list-2.xml
  Validate XML
  Parse XML
  Fetched Add-ons List successfully
  Refresh Sources
  Fetching URL: https://dl.google.com/android/repository/repository-11.xml
  Validate XML: https://dl.google.com/android/repository/repository-11.xml
  Parse XML:    https://dl.google.com/android/repository/repository-11.xml
...
Error: Ignoring unknown package filter 'build-tools-24.0.2'
-------------------------------
License id: android-sdk-license-xxxxxxxx
Used by: 
 - SDK Platform Android 7.0, API 24, revision 2
  - Android Support Repository, revision 39
-------------------------------

...

November 20, 2015
Do you accept the license 'android-sdk-license-xxxxxxxx' [y/n]: y

Installing Archives:
  Preparing to install archives
  Downloading SDK Platform Android 7.0, API 24, revision 2
  Installing SDK Platform Android 7.0, API 24, revision 2
    Installed SDK Platform Android 7.0, API 24, revision 296%)
  Downloading Android Support Repository, revision 39
  Installing Android Support Repository, revision 39
    Installed Android Support Repository, revision 3999%)
  Done. 2 packages installed.

これをもう一度実行しても、Gradleを幸せにしないでください。 だから、誰かが何か良いものを思い付くまで、手作業による受け入れは唯一の解決策です。 (してください!)




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




ちょうど実行することもできます

$ ANDROID_HOME / tools / bin / sdkmanager --licenses

またはWindowsの実行

%ANDROID_HOME%/ tools / bin / sdkmanager --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 =>が問題を解決できることを確認します。




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

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



yes | sdkmanager --licensesを実行する場合yes | sdkmanager --licenses 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






反応するネイティブAPPのために:

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

sdk.dir=/PATH_TO_SDK/



次のコマンドを実行して、すべてのライセンスを受け入れることができます。

 sdkmanager --licenses

これにより、まだ受け入れていないライセンスごとにプロンプ​​トが表示され、 yを入力してそれぞれのライセンスを受け入れることができます。




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

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




コマンドラインSDKに問題がある場合は、受け入れたライセンスが見つからない理由は、必要な場所の$ANDROID_HOME/licenses以外の場所に書き込まれているためです。

最も簡単な解決策は、このようなライセンスを受け入れることでした:

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

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




最後に、この2つの簡単なステップがWindows 10で機能しました。

1)あなたのアンドロイドビルドツールとAPIを更新してください。 Android Sdkでインストールパッケージをクリックするだけで、利用可能なアップデートをインストールできます。

2)あなたのAndroid Studioを起動すると、既に更新されたAPIやツールのために必要なビルドツールをインストールするよう促されます。これにより、ライセンスや完了を含むビルドツールのプロパティがインストールされます。




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

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

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

編集:組み込みのSDKマネージャーを使用している場合は、正しい$ ANDROID_HOMEを取得するために、「Androidプロジェクトの前提条件のインストール」プラグインをビルドステップに追加する必要もあります。