Since gradle android plugins 2.2-alpha4:

Gradle will attempt to download missing SDK packages that a project depends on

Which is amazingly cool and was know to be a JakeWharton project.

But, to download the SDK library you need to: accept the license agreements or gradle tells you:

You have not accepted the license agreements of the following SDK components: [Android SDK Build-Tools 24, Android SDK Platform 24]. Before building your project, you need to accept the license agreements and complete the installation of the missing components using the Android Studio SDK Manager. Alternatively, to learn how to transfer the license agreements from one workstation to another, go to http://d.android.com/r/studio-ui/export-licenses.html

And this is a problem because I would love to install all sdk dependencies while doing a gradle build.

I am looking for a solution to automatically accept all licenses. Maybe a gradle script ? Do you have any ideas ?


UPDATE 2021 This should be the accepted answer as its easy and upto date


AndroidSDK can finally accept licenses.

Go to Android\sdk\tools\bin

yes | sdkmanager --licenses

EDIT:

as pointed out in the comments by @MoOx, on macOS, you can do

yes | sudo ~/Library/Android/sdk/tools/bin/sdkmanager --licenses

as pointed out in the comments by @pho, @mikebridge and @ Noitidart on Windows, you can do

cmd.exe /C"%ANDROID_HOME%\tools\bin\sdkmanager.bat --licenses"

be sure to install java before


I was getting this error:

License for package Android SDK Build-Tools 30.0.2 not accepted.

So, I went to Tools -> SDK Manager -> SDK Tools. Then I installed Google Play Licensing Library. It solved the problem.

enter image description here


I have encountered this with the alpha5 preview.

Jake Wharton pointed out to me that you can currently use

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

to recreate the current $ANDROID_HOME/license folder on you machine. This would have the same result as the process outlined in the link of the error msg (http://tools.android.com/tech-docs/new-build-system/license).

The hashes are sha1s of the licence text, which I imagine will be periodically updated, so this code will only work for so long :)

And install it manually, but it is the gradle's new feature purpose to do it.

I was surprised at first that this didnt work out of the box, even when I had accepted the licenses for the named components via the android tool, but it was pointed out to me its the SDK manager inside AS that creates the /licenses folder.

I guess that official tools would not want to skip this step for legal reasons.

Rereading the release notes it states

SDK auto-download: Gradle will attempt to download missing SDK packages that a project depends on.

Which does not mean it will work if you have not installed the android tools yet and have already accepted the latest license(s).

EDIT: Saying that, it still does not work on my test gubuntu box until I link the SDK up to AS. CI works fine though - not sure what the difference is...


For the newest Android Studio (2.3) the best way to update/accept all licenses is to run:

cd $ANDROID_HOME
tools/bin/sdkmanager --licenses

you might still need to copy the licence files to other locations based on your setup.


For the new sdkmanager utility:

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

There's a bit of a delay between yesses, so the command could hang with the license showing for a while, but it doesn't require human intervention.