507

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 ?

Vega
  • 23,736
  • 20
  • 78
  • 88
nsvir
  • 7,723
  • 10
  • 27
  • 45
  • 12
    You can also pop an `echo y |` in front of that command to auto accept the licence. Useful when running on a headless CI box :) – Dori Jul 15 '16 at 11:22
  • 3
    I had to do `~/.android/tools/android update sdk --no-ui --filter build-tools-25.0.0,android-25,extra-android-m2repository` because the `android` tool was localized to my home – Jacksonkr Mar 13 '17 at 20:13
  • 7
    sdkmanager --licenses no longer works. I used --upgrade, ignored the errors and this sorted the license problems. – jcsubmit Nov 15 '17 at 12:57
  • sdkmanager --licenses in Android\tools\bin folder worked for me! – rodrigorf Apr 08 '18 at 15:26
  • 6
    I've used this command for CI environment build script with small adjustment. I've added --sdk_root=$ANDROID_SDK_PATH. Problem was that licenses were accepted and not saved to Android SDK root folder. Final command: yes | sdkmanager --licenses --sdk_root=$ANDROID_SDK_PATH (without sudo) – adi9090 Apr 16 '18 at 12:39
  • 5
    Be sure to have set `$ANDROID_SDK_PATH` to the actual root path where you've installed the SDK (i.e.: `/opt/android-sdk`), or just put the path directly (i.e.: `yes | sdkmanager --licenses --sdk_root=/opt/android-sdk`) – gmc Nov 07 '18 at 21:14
  • 1
    ```yes | sudo sdkmanager --licenses ``` this throws an ```Error: Unknown argument --licenses``` @nsvir – mochadwi Feb 19 '19 at 05:07
  • In ubuntu docker, this worked for me: `RUN sh -c ' printf "y\ny\ny\ny\ny\ny\ny\ny\ny\ny\n" | ./sdkmanager --licenses` – YoniXw May 25 '19 at 22:13
  • @gmc that comment is quite important actually, if you work through cmd it's very likely you set ANDROID_HOME, so it doesn't work whatever else you do – LowFieldTheory Jun 02 '19 at 09:22
  • I haven't seen "sdkmanager --licenses" work on any SDK since ~2017 - FYI Use "sdkmanager --update" instead – Steazy Feb 28 '20 at 01:55
  • I get ye sno se reconoce como comando interno – oshingc Mar 22 '20 at 14:59
  • Where do you run yes | sdkmanager --licenses --sdk_root=$ANDROID_SDK_PATH because yes is not a command. – oshingc Mar 22 '20 at 15:00
  • for window open cmd and change dir to C:\Users\username\AppData\Local\Android\Sdk\tools\bin and execute " sdkmanager --licenses" – codingwithtashi Feb 13 '21 at 15:05

56 Answers56

455

AndroidSDK can finally accept licenses.

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

Community
  • 1
  • 1
nsvir
  • 7,723
  • 10
  • 27
  • 45
  • 7
    On Widows I had to go to Run then `C:\Users\x1\AppData\Local\Android\sdk\tools\android` then it popped open a GUI and then install missing then click "Accept Liscenses" in new dialog that pops. – Noitidart Dec 25 '17 at 22:02
  • 10
    This is not working for linux. There is no sdkmanager file under the tools/bin dir or somewhere else. Can you please help? – Mehmed Mert Jan 23 '18 at 13:46
  • 41
    On macOS, you can do `yes | sudo ~/Library/Android/sdk/tools/bin/sdkmanager --licenses` – MoOx Jan 30 '18 at 10:56
  • 6
    How can I accept licenses automatically from gradle wrapper? – Howard Swope Mar 07 '18 at 16:00
  • On mac via CLI on the path `/Library/Android/sdk/tools/bin`, execute: `yes | ./sdkmanager --licenses` – Julianesten Mar 10 '18 at 18:37
  • If automating this process (maybe using Travis?), you need to update sdkmanager first by running: `sdkmanager --update` – kurdtpage May 15 '18 at 09:44
  • 1
    Finally, as of which version was this feature introduced? – Alex Harvey Jul 25 '18 at 06:03
  • This worked great in my `Dockerfile` where I had to accept all licenses during installation of certain packages in SDK manager: `RUN yes | sdkmanager "build-tools;28.0.2" "platform-tools"` – void.pointer Sep 27 '18 at 21:36
  • 8
    upvote to @Noitidart for the path, but it didn't work, I had to run C:\Users\x1\AppData\Local\Android\sdk\tools\bin\sdkmanager --licenses from the command prompt and hit "y" + Enter to the prompts – GaneshT Oct 01 '18 at 03:18
  • Thanks @gangt for upvote and sharing the better path! – Noitidart Oct 01 '18 at 11:46
  • 1
    Where do I find sdkmanager? It's not in my bin folder for the "Android Studio and SDK tools" that I downloaded. – Aaron Franke Oct 24 '18 at 04:16
  • Mine is at `C:\Users\UserName\sdk-tools-windows-4333796 \tools\bin\sdkmanager.bat`. – mikebridge Jan 28 '19 at 16:04
  • I have to change the location to { yes | sudo /opt/android/tools/bin/sdkmanager --licenses } – ishab acharya Mar 21 '19 at 05:30
  • on windows, if you happen to have GitBash installed. you can run `yes | C:\Users\x1\AppData\Local\Android\sdk\tools\bin\sdkmanager.bat --licenses` there – pho Jul 22 '19 at 14:03
  • I had issues with this and couldn't run the sdkmanager, if you have an issue with it complaining about some Java.xml file, be sure you're using Java8 as I had Java11 set as my global version – Matas Sep 09 '19 at 21:45
  • None of the command line stuff worked for me on Windows, but going to Tools -> SDK and downloading another SDK prompts you to accept licenses. – Justin Nov 19 '19 at 21:28
  • 1
    Good god android development is garbage. I started out a couple of years ago using one of *their* template examples, and every time I go back to it, there's a new version of android studio, and it takes hours to get that project - which was working fine - working again... – matt Jan 21 '20 at 06:12
  • 3
    "sdkmanager --licenses" hasn't worked in years and people still post it as a solution and people still upvote it. What am I missing? Y'all using old AF AndroidSDKs? – Steazy Feb 28 '20 at 01:54
  • 3
    One license was nicely accepted by command `echo y| "%ANDROID_SDK_PATH%\tools\bin\sdkmanager" "ndk-bundle"` on Windows. It *must* be without space between `y` and `|` – AJIOB Jul 02 '20 at 07:54
  • On Mac while running the above command if you face issue like "zsh command not found sdkmanager Mac" it means you have not installed JDK. So please first install JDK and then run the above command. All licences will be accepted. Now you can proceed with your work like again run the project and you won't get any issue. – user2610335 Oct 23 '20 at 07:43
  • `--licences` is not part of the SDK any longer! – Gary Klasen Feb 09 '21 at 23:16
  • I needed to follow this link before: https://stackoverflow.com/questions/53994924/sdkmanager-command-not-found-after-installing-android-sdk – Mario Codes Feb 18 '21 at 19:03
  • I needed to add `sudo` prefix, then it worked. Otherwise it said "licenses accepted" but when I checked again they were not actually accepted. With `sudo` it became permanent. – gaspar May 08 '21 at 07:13
181

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...

sschuberth
  • 23,652
  • 5
  • 80
  • 125
Dori
  • 17,514
  • 16
  • 69
  • 112
  • There is a small glitch in sdkDownload feature regarding some of the components, e.g., support-v4. It *will* update the components but gradle won't see update until next invocation. One workaround to exec gradle twice, once to throw away: *gradle dependencies || true* -- https://code.google.com/p/android/issues/detail?id=212309 – Joe Bowbeer Oct 17 '16 at 06:08
  • 6
    you can use `mkdir -p` instead of `|| true`. – oldergod Oct 17 '16 at 06:33
  • It works thank you for this glitch, good to know. To check if your SDK path is defined as expected : echo $ANDROID_SDK – tryp Feb 21 '17 at 09:53
  • In my environment ANDROID_SDK is not defined, but it works with ANDROID_HOME – Dimitri L. Apr 18 '17 at 11:38
  • This fails for Android SDk 26. – Chandra Sekhar Jul 30 '17 at 04:57
  • Looks like another UID is needed for platform and build-tools: `d56f5187479451eabf01fb78af6dfcb131a6481e`. `8933bad161af4178b1185d1a37fbf41ea5269c55` still works for Google Repository and Android Support Repository. – Paul Oct 11 '17 at 21:29
  • @Paul, Can you please add a code snippet which adds the new key. For me, the build is failing at the line "Downloading https://services.gradle.org/distributions/gradle-2.14.1-all.zip" – stack_ved Oct 16 '17 at 16:44
  • 5
    @stack_ved: I've just added another `echo`: `echo -e "\nd56f5187479451eabf01fb78af6dfcb131a6481e" >> "${ANDROID_HOME}/licenses/android-sdk-license"`. But I think your problem hides somewhere else. – Paul Oct 16 '17 at 16:58
  • true, the problem is with the new way of installing dependencies may be. SOmehtin like the accepted answer. Or what @nsvir has mentioned above. Any idea? – stack_ved Oct 16 '17 at 17:01
  • Turned out for me what @Paul is suggesting worked. But i am looking forward to fix it for good. Thanks Paul! – stack_ved Oct 16 '17 at 17:39
  • any option to prevent gradle android plugin from automatic download of missing components? – Banee Ishaque K Jan 20 '18 at 05:44
  • if you want to get this sha `n8933bad161af4178b1185d1a37fbf41ea5269c55` you should run in your terminal **sdkmanager --licenses** at the bin folder of the path of your sdk , then accept it , then open the license file you accepted – Islam Ahmed Feb 12 '19 at 08:30
142

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.

tyler.frankenstein
  • 2,085
  • 1
  • 22
  • 33
bgies
  • 9,369
  • 2
  • 14
  • 14
  • This looks like the best way to go and it works on all platforms too, just run `tools/bin/sdkmanager --licenses` – jnv Apr 24 '17 at 22:35
  • If you got old sdk manager --licenses wont work. It is necessary to copy tools folder to another location then use --sdk_root= and point it to your sdk folder, then you would be able to update tools to newer version. – Mirek Michalak Oct 09 '17 at 10:54
  • can we pipe `yes` into this command somehow for automated build systems? You won't always have interactive console access to these machines, so pressing `y` on keyboard physically won't work. – void.pointer Oct 13 '17 at 14:41
  • 1
    Can anyone please guide me how to implement this solution? Got to add this line in build.sh? – stack_ved Oct 16 '17 at 16:45
  • 1
    it worked for me but i had to do ``cd $ANDROID_HOME`` before executing this command – Inus Saha Dec 06 '17 at 10:46
  • Worked for me, but maybe you should add `cd $ANDROID_HOME` just to be more clear where to execute this, anyways thanks a lot. – Daniel Barde Mar 13 '18 at 20:40
  • I have android studion 3.0.1 I have updated all the sdk tools but I still see license error, I do try to run the command but I got this error: -bash: tools/bin/sdkmanager: No such file or directory – Zulqarnain Mar 26 '18 at 08:25
  • Not a valid answer to the question. This still needs manual input and thus it is not automatic as asked. – m0skit0 Feb 12 '19 at 10:09
58

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.

A. Rager
  • 1,810
  • 2
  • 15
  • 15
  • In my install debian9 I only have a sdkmanager.jar: android-sdk-linux/tools/lib/sdkmanager.jar and # java -jar /android-sdk-linux/tools/lib/sdkmanager.jar Error: The tools directory property is not set, please make sure you are executing android – user3313834 Oct 19 '17 at 17:41
  • 1
    This is based on the assumption that you downloaded the SDK tools as an archive from Google and unpacked them into $ANDROID_HOME – A. Rager Nov 09 '17 at 20:09
  • This seems the most `up-to-date` answer. It seems `--licenses` does not exist anymore. Note: to see list of possible versions that can be provided: `$ANDROID_HOME/tools/bin/sdkmanager --list` – Marinos An Jun 05 '18 at 12:36
  • 2
    Thanks for the hint. I ended up using `yes | android-sdk-linux/tools/bin/sdkmanager --licenses || true` in my CI. – iSWORD Jul 17 '18 at 19:19
  • es | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;28.0.3" -> changing the version worked for me . Thanks ! – ishab acharya Feb 19 '19 at 03:44
44

If you are using Jenkins, you can use the following bash script as first step in the build process:

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

This will of course install ALL available updates, but it will save you some time if you can spare the disk space. The sleep is to avoid the broken readline in the installation program, since "yes" does not work properly in this case.

EDIT: You also need to add the "Install Android project prerequisites" plugin in the build step to get the correct $ANDROID_HOME if you are using the built in SDK manager.

raven
  • 449
  • 4
  • 2
  • I add your line of code before "cordova platform add android" in my jenkins build which is running on Ubuntu but still getting following error : BUILD FAILED in 7s Error: /var/lib/jenkins/workspace/qa_global_php/platforms/android/gradlew: Command failed with exit code 1 Error output: FAILURE: Build failed with an exception. * What went wrong: A problem occurred configuring root project 'android'. > You have not accepted the license agreements of the following SDK components: – Ashish Karpe Dec 12 '17 at 06:39
  • [Android SDK Build-Tools 26.0.2]. 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. – Ashish Karpe Dec 12 '17 at 06:39
37

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

Utshaw
  • 1,278
  • 1
  • 15
  • 24
34

We found same issue building the project on Jenkins. With buildToolsVersion '25.0.2', we must accept licenses before building. In our case, we needed to run:

yes | sdkmanager --update that accepts licenses for the sdkmanager itself, and then

yes | sdkmanager --licenses that accepts new licenses not previously accepted

Remember: run these commans with the same user that jenkins does. In our Debian, the Jenkins user is just jenkins. In other words: doing it as root will create the accepted licenses as root, so Jenkins will not be able to read them.

By the way, we found sdkmanager at /var/lib/jenkins/tools/android-sdk/tools/bin. If yours is not there, find it with find / -name "sdkmanager"

Roc Boronat
  • 9,341
  • 3
  • 36
  • 49
  • 2
    this one solved the issue in my case too (build tools 26.0.x), with Jenkins in Docker. Thanks! – Giordano Nov 03 '17 at 12:11
  • 2
    Unfortunately this does not include the "automatically" part of the question. – m0skit0 Feb 12 '19 at 10:07
  • @m0skit0 thanks for your comment! I've updated the question to match with last version feature to automatically accept all licenses without human intervention. – Roc Boronat Feb 14 '19 at 00:14
33

this solved my error

echo yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;25.0.2"
Scott Stensland
  • 22,853
  • 10
  • 81
  • 88
Cristian Agudelo
  • 582
  • 1
  • 5
  • 10
  • 2
    To save a few characters, `yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;25.0.2"` does the same thing. – Flimzy May 27 '18 at 16:39
32

Unfortunately the way as OP originally solved it does not always work. If you find from the error message what is your builds current build-tools version. It could be that it is a higher version of build-tools that is missing. In that case you need to manually start SDK Manager and add the build-tools and accept license.

Per OP instructions, it look as follows.

$ ./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

NOTE: 2017-04-16

The android tool has now been deprecated in favor of the new sdkmanager. Please see Joe Lawson's answer and subsequent posts from March (2017) and onward.

Then adjust you command as follows:

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.

Running this again, still do not make Gradle happy. So manual acceptance is the only solution until someone come up with something better. (Please do!)

Community
  • 1
  • 1
not2qubit
  • 10,014
  • 4
  • 72
  • 101
  • 1
    `android update sdk --no-ui --filter build-tools-24.0.2,android-24,extra-android-m2repository` running this via command prompt with admin right fixed the error. I was unable to install [phonegap plugin manager](https://github.com/phonegap/phonegap-plugin-push) – Ravimallya Jan 07 '17 at 09:15
24

The android tool is deprecated and you should use the sdkmanager instead. sdkmanager also writes the licenses file when you first accept it. The license changes depending on which SDK you are using so even though the command

echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_SDK/licenses/android-sdk-license"

works on some systems. It won't work on all. Some SDK installs expect to license file to end without a newline in the file so try adding a -n to the echo command.

echo -n -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_SDK/licenses/android-sdk-license"

If that isn't working you can try using the base64 encoding instead.

So to discover my license:

$> 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"

It'll prompt you to accept the license. After accepting it'll copy it to ${ANDROID_HOME}/licenses/android-sdk-license. To ensure you always get exactly what is written use base64.

$> base64 ${ANDROID_HOME}/licenses/android-sdk-license
Cjg5MzNiYWQxNjFhZjQxNzhiMTE4NWQxYTM3ZmJmNDFlYTUyNjljNTU=

Then you can use base64 -d recreate the file exactly.

$> echo Cjg5MzNiYWQxNjFhZjQxNzhiMTE4NWQxYTM3ZmJmNDFlYTUyNjljNTU= | base64 -d > ${ANDROID_HOME}/licenses/android-sdk-license

You can verify if the file written is what is expected by running a sha1sum on it.

$> sha1sum ${ANDROID_HOME}/licenses/android-sdk-license
da6b80c9c47b41c0bf7032938e7137a58a3dc249
Joe Lawson
  • 771
  • 6
  • 8
19

if you run yes | sdkmanager --licenses, then we print content of $ANDROID_HOME/licenses/android-sdk-license,

we will get this

# cat $ANDROID_HOME/licenses/android-sdk-license

8933bad161af4178b1185d1a37fbf41ea5269c55

d56f5187479451eabf01fb78af6dfcb131a6481e

For GitLab CI, to accept Android SDK Build-Tools 26.0.2 licenses, you need to run this

before_script:
  - mkdir -p $ANDROID_HOME/licenses
  - echo "8933bad161af4178b1185d1a37fbf41ea5269c55" > $ANDROID_HOME/licenses/android-sdk-license
  - echo "d56f5187479451eabf01fb78af6dfcb131a6481e" >> $ANDROID_HOME/licenses/android-sdk-license
Ryan R
  • 7,902
  • 14
  • 74
  • 107
jk2K
  • 3,217
  • 3
  • 29
  • 38
  • You're second echo is going to the same `$ANDROID_HOME/licenses/android-sdk-license` is this intended? ie. appending – Ryan R Oct 11 '17 at 19:05
  • 1
    @RyanR, yes, the second echo is appending, `Android SDK Build-Tools 26.02` added a new license sha1 string – jk2K Oct 12 '17 at 03:41
  • I'm using bitbucket pipelines, but the concept seems to be the same as with GitLab CI. Your answer helped me understand the whole process better. Thanks! – Ridcully Oct 12 '17 at 12:12
  • @Ridcully I'm also using Bitbucket Pipelines and found myself here when we upgraded to `Build-Tools 26.0.2` and our build broke. My end solution was to simply do `yes | sdkmanager --licenses`. No `echo`s needed and this is future proof. – Ryan R Oct 12 '17 at 23:11
  • @Ryan You mean I can just add 'yes | sdkmanager --licenses' to the pipeline.yml? That would be great! – Ridcully Oct 13 '17 at 06:31
  • Doesn't work for me. sdkmanager says unknown argument --licenses... perhaps a newer version would be required? – Ridcully Oct 17 '17 at 08:46
  • I'm using the latest android sdk https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip. Here's my `Dockerfile`: https://git.io/vdS5k – Ryan R Oct 17 '17 at 15:51
  • (Using SDK 27) since my CI is Windows-based, I did the following: copied and checked-in the whole `%ANDROID_HOME%\licenses` folder into the git repo as `./exported-licenses`, and then in the build file I put as follows: `xcopy exported-licenses %ANDROID_HOME%\licenses /s/h/e/k/f/c/y/i` – jakub.g Jan 12 '18 at 15:23
  • This worked for my non-production build, but production complains I haven't accepted all licenses. Is there something I'm missing? – daraul Mar 04 '20 at 01:59
17

Note that for anyone coming to this question currently, build-tools-24.0.2 is (I think) now considered obsolete, so you'll get:

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

when running the various commands that have been suggested to install them.

The solution is to add --all:

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

Also if you're on 32bit linux, everything after build tools 23.0.1 is 64bit only, so will not run. 32bit users are stuck on 23.0.1, the only way to get a later build tools is to switch to 64bit.

JosephH
  • 36,107
  • 19
  • 126
  • 149
15

If you use tools/bin/sdkmanager --licenses you still need to have a human interaction. I have the problem using my gitlab CI. This is my solution:

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 will say yes if there is any question, but you need to make one line per installe package

Thibaut Mottet
  • 384
  • 2
  • 14
15

You can also just execute:

$ANDROID_HOME/tools/bin/sdkmanager --licenses

And in Windows, execute:

%ANDROID_HOME%/tools/bin/sdkmanager --licenses
0xCursor
  • 2,224
  • 4
  • 13
  • 30
r1si
  • 1,039
  • 1
  • 18
  • 28
13

Ok FOR ANYONE HAVING THIS ISSUE AS OF 2018. The above answers did NOT work for me at all. What DID work was opening Android SDK - clicking the DOWNLOAD button on the tool bar and selecting the appropriate packages. After they finish downloading, it will let you accept the license agreement.

enter image description here

paper1111
  • 4,245
  • 2
  • 21
  • 40
user2967081
  • 157
  • 1
  • 10
11

For an error message about SDK api number 25:

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

ofir_aghai
  • 2,223
  • 1
  • 28
  • 33
7

I solved this problem by creating a public git repo with the accepted license files. Then I use wget to fetch these licenses on any machine I need into a [sdk-dir]/licenses directory before running ./gradlew to build my project.

IgorGanapolsky
  • 23,124
  • 17
  • 109
  • 132
7

Note: This is only for Mac users

I had same issue but none of the answers posted helped since there was no tools folder present in Library/Android/sdk. (I'm using Android 3.6.3 on Mac OS 10.14.4)

error screenshot

Below steps helped me to overcome licensing problem error:

  1. Open Android Studio
  2. Press cmd + shift + A. This opens Actions pop-up window.
  3. Search for SDK Manager and hit enter to open.
  4. This opens pop-up for Android SDK. Select some other version of Android apart from already installed one. (In my case Android 10.0 was already installed so I selected Android 9.0)
  5. Then select Apply button. This will install corresponding SDK.

Solution

  1. Now run your app it should work without any exception.

success screenshot

Jayprakash Dubey
  • 32,447
  • 16
  • 161
  • 169
6

cd $ANDROID_HOME/tools/bin yes | ./sdkmanager --update

or

yes | $ANDROID_HOME/tools/bin/sdkmanager --update

Jimmy Yin
  • 485
  • 6
  • 13
6

For those having issues with the command line SDK, the reason it won't find the licenses you have accepted is because they have have been written to a different location than $ANDROID_HOME/licenses which is where they need to be.

I found the easiest solution was to accept the licenses like this:

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

Note: This assumes you've set ANDROID_HOME to point to wherever your sdk is installed.

sksamuel
  • 15,025
  • 8
  • 54
  • 97
6

for windows, open cmd and enter into bin directory by running command:

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

then run sdkmanager --licenses command, it asks to accept licenses.

Deepak Kumrawat
  • 417
  • 1
  • 5
  • 12
5

I finally found a solution on Windows, to have a real silent and automatic install:

On Windows, the following syntax doesn't work:

echo y | sdkmanager --licenses

It seems the "y" aren't correctly sent to the java program called in the batch.

The workaround is to create a file file-y.txt with several "y", one by line, and to use

call sdkmanager --licenses < file-y.txt

This will create the needed files in the licenses directory. The problem is probably related to the use of BufferedReader in Java

moobyfr
  • 71
  • 1
  • 3
3

Copy the entire licenses/ directory and paste it into the Android SDK home directory on the machine where you wish to build your projects.

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

this resolved the issue for me

surya
  • 549
  • 4
  • 16
3

In Windows PowerShell, you can do

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

This is much more flexible and requires zero manual intervention. The 30 number is arbitrary, should be enough to cover the number of license acceptances, but can be increased if needed

3

I had the same error while using Cordova.

The problem was due to the fact that I installed Android Sdk through Android Studio and through apt with apt install android-sdk adb. And Cordova was calling the files installed through apt instead of the files in my home directory.

It worked once I changed the path to SDK in bash:

# 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

Then I removed the system files that weren't used anymore: apt remove android-sdk adb.

A.L
  • 9,074
  • 9
  • 55
  • 87
3

You can accept all the license by executing the following command:

 sdkmanager --licenses

This will prompt you through each licenses you haven't accepted yet and you can just enter y to accept each of them.

Manoj Shrestha
  • 3,064
  • 3
  • 36
  • 53
3

I tried all the above command on windows 10 machine but the solution was to use the SDKMANAGER to check and accept licenses buy installing missing versions

enter image description here

Aymen Boumaiza
  • 889
  • 6
  • 6
3

Here is my Docker setup.
You can follow from a plain Linux environment.

Note that yes | and --licenses --sdk_root=${ANDROID_HOME} clauses.
It seems sdkmanager --update reverts agreements, so yes | is appeared twice.

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
Youngjae
  • 21,562
  • 14
  • 100
  • 182
  • "It seems sdkmanager --update reverts agreements, so yes | is appeared twice." Wow, you're right. This is very frustrating but good find. – cephus Jan 23 '19 at 04:14
3

If you are using Flutter just run:

flutter doctor --android-licenses 

And accept all the licenses needed.

Juanma Menendez
  • 7,341
  • 4
  • 33
  • 34
2

As of July 2019, the easiest method is to use: flutter doctor --android-licenses in the command prompt.

It proceeds to display the unaccepted T&C of SDKs one by one and you're given option to choose 'y/n'. Choose y for all.

Alternately, when you run flutter doctor, it will run Android toolchain diagnostics which displays how many licenses are not yet accepted, and suggests you to run it with the --android-licenses flag.

Buldo
  • 67
  • 7
  • 2
    I was going to downvote but I am going to make a comment. This is only valid if you have flutter or you are developing with flutter, which is not the case of the OP. sdkmanager is the right way as it is generic enough as it covers everyone that has the Android SDK. – sfratini Aug 15 '19 at 17:46
2

This path has been changed in the recent versions. ./sdkmanager is now in /Library/Android/sdk/cmdline-tools/latest/bin and then just do

./sdkmanager --licenses
Sukeesh
  • 61
  • 1
  • 9
  • Doesn't work. Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema Why the in the living eff does Android make this so hard? It's a license. It should be a checkbox. – Matt West May 28 '21 at 18:23
2

If your "tools" folder is missing on MacOS, then you can do the following-

  1. Use command+shift+A to open actions in Android Studio (the shortcut may vary)
  2. Search for "SDK Manager"
  3. Go to "SDK Tools"
  4. Check Android SDK Platform Tools and click apply.

The tools folder should now appear.

Manish Paul
  • 121
  • 1
  • 3
1

I run

#react-native run-android 

from terminal and met that problem. For manually, go to Android Studio -> Android SDK -> SDK Platform Click Show Packages Detail and check :

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

When install packages, check accept license => can solve the problem.

1

On Mac OSX, navigate to the sdk/tools/bin

Then run ./sdkmanager --licenses, and accept all the licenses.

Micheal C Wallas
  • 158
  • 1
  • 12
1

In windows go to command prompt and type the following commands:

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

This will generate the licences keep pressing "y" to accept all licences.

1

I had this issue and I though that these answers didn't help then I figured out that my environment variables wasn't correct, although I was able to do sdkmanager command anywhere, so make sure that the environment variable is set correctly:

  1. In the environment variables define a new variable with ANDROID_SDK_ROOT as a name and give it a value of where the sdktools are located eg.: C:\Android\sdk\

  2. Edit your path to add the created variable to be %ANDROID_SDK_ROOT%\tools\bin\ restart you cmd.

  3. Run the command that where mentioned in the answers: sdkmanager --licenses

  4. Install the desired packages using sdkmanager "packageName".

Khaled Jamal
  • 498
  • 1
  • 5
  • 14
1

Turns out if you didn't install any SDK, Android Studio also shown "you haven't accept the license"...Such deceiving message, normal people would assume it implied SDK were already installed but anyway. In the Studio's SDK manager, you can just manually select the missing sdk to download and install and it handles license too. You just need to restart the Android Studio.

Here is a YT video showing your where SDK manager is.

Skywalker326
  • 946
  • 2
  • 8
  • 15
1

I have faced two errors while Build my project on Android Studio:

  1. License for package Android SDK Platform 28 not accepted. (while Build my project in Android Studio 4.1)

  2. exception in thread main java.lang.noclassdeffounderror javax/xml/bind/annotation/xmlschema (while running SDK manager to accept license)

For me, it was a java version problem. I have installed JDK instead of java. TO SOLVE THE ISSUE, I did the following steps.

For Windows:

Step1: Download and install the latest JAVA version from https://www.java.com/en/download/

Step2: Search for "View advanced system settings" in the start menu button (windows icon)

Step3: Click on "Environment Variables"

Step4: under "System variables" click on "New", now set "Variable name: JAVA_HOME" and "Variable value: C:\Program Files\Java\jre1.8.0_271" (add latest installed java path here). Then "OK", "OK", and "OK".

Step5: open cmd as an administrator and type the following commands:

  1. cd C:\Users\kevin\AppData\Local\Android\Sdk\tools\bin (*change username here)

  2. sdkmanager --licenses

Press "y" for all questions.

Step6: Restart your Android Studio again.

DONE.

Let me know if anyone having a problem while following the above steps.

Kevin Patel
  • 321
  • 3
  • 8
1

On Windows, with sdkmanager in your PATH and WSL installed and configured, the following one-liner should work with every default distro (in fact I can't think of a counterexample):

wsl --exec yes "y" | sdkmanager --licenses

If that's not enough, you might want to look at this script (disclaimer: it's mine).

mataha
  • 56
  • 3
0

I navigate to:

/usr/lib/android-sdk/licenses

and I typed in terminal:

echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > $ANDROID_SDK/licenses/android-sdk-license"

With root permission. And it works for me now.

0

FOR REACT NATIVE APPs:

If you are having this problem for a React Native app, in addition to above mentioned steps, make sure you have the local.properties file in the android directory(AppName/android) of your app which points to your 'sdk' directory:

sdk.dir=/PATH_TO_SDK/
  • Setting your android_home variable properly works for react native apps as well. Personally, I set it in my IDE run configuration. – aradil Jul 27 '18 at 17:35
0

I got the same error of license not accepted...trying to set up android environment to run a React-native app in android emulator for API level 23.

I did the following:

Based on the link https://developer.android.com/studio/intro/update#download-with-gradle

Verified if the license got downloaded via the Android studio 3.1.3's SDK manager.

Set up ANDROID_HOME as C:\\Android\Sdk

(it was installed in C:\Users\username\AppData\Local\Android\Sdk)

The error got resolved after retrying the build in a new command prompt.

VShank
  • 41
  • 6
0

After trying many the possible solutions mentioned by members from the community I just found there might have been different problems overtime so most of the solutions are outdated.

Currently, and as I posted in the Travis community, Travis should be accepting all the licenses by default, but it kept complaining about not accepting the licenses 27.0.3 which shouldn't happen.

Adding:

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

should fix the problem, we we would be able to even use an a 3.+ version of Android Gradle Tools without needing to even declare what version of build-tools we are using:

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}

This works as October 29th, 2018. Travis might make changes in the future so good luck with that!

cesards
  • 14,087
  • 11
  • 63
  • 63
0

On Windows 10 opening cmd with administrator privileges and then typing cd C:\Program Files (x86)\Android\android-sdk\tools\bin\ and then sdkmanager --update worked for me. After that I just had to press "y" twice in order to accept the licenses.

Tadej
  • 5,099
  • 4
  • 42
  • 57
0

I've spent a half day to looking for solution for Bitbucket Pipelines

If you are using Bitbucket Pipelines and you have the issue with accepting all SDK licences, try to use this code in your .yml file:

image: mingc/android-build-box:latest

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

It should works.

eltray
  • 195
  • 3
  • 9
0

It's late but all above mentioned solutions didn't worked for me and finally this single line would accept all android licences.

yes | sdkmanager --licenses && sdkmanager --update
Swapnil Kotwal
  • 5,054
  • 4
  • 43
  • 73
0

I had similar issue, I solved it by opening Android Studio. The fact was that Android Build Tools 26.0.2 wasn't installed. An error came to warn me about it, I installed it and sync it with project. Problem solved :)

Justine M
  • 1
  • 1
0

All I had to do is yes | sdkmanager --licenses > /dev/null, and everything was accepted, and no huge output on the console or travis log or wherever. It also works like yes | sdkmanager "tools" > /dev/null for example.

pvinis
  • 3,855
  • 5
  • 33
  • 55
0

please mind your sdk location, I change the default folder, so i cant find sdkmanager in " ~/Library/Android/sdk/tools/bin/"....

ylxbcoding
  • 21
  • 2
0

Download the SDK manager from this link. Then unzip and use the following command in terminal.

!tools/bin/sdkmanager --sdk_root=/usr/lib/android-sdk --licenses <<< $'y\ny\ny\ny\ny\ny\ny\n'
AVISHEK GARAIN
  • 167
  • 1
  • 4
0

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

Uninstall and Reinstall the Android SDK Platform 24 and then the License agreements will appear, Accept the agreements and the problem will be solved!

-1

There are 2 approach that I can found to this problem.

  1. Update sdk tools with command window by accepting licence agreement as follows, just change the version according to your need.

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

  2. Second approach is copying licence folders to Android root directory. Goto your development machine open Android Studio. Find your sdk location from Project Structure menu. (C:\Users\UserName\AppData\Local\Android\sdk). Under that directory there must be a licence folder. Copy that folder with the content. Paste that folder in your Jenkins server machine (or where you face with this problem) under android sdk root folder. (C:\Users\UserName.jenkins\tools\android-sdk)

DiRiNoiD
  • 1,073
  • 1
  • 15
  • 20
-1

Finally, this 2 simple steps worked for me on windows 10.

1) Make sure you update your android build tools and api. On your Android Sdk Just click on install packages to install available updates.

2) Start your Android Studio and you'll be prompted to install the reqiured build tools for the already updated api and tools, This will install the build tools properties including the licences and your done.

Chinedu Etoh
  • 143
  • 2
  • 11
-1

in Windows : Open Cmd:

go to install path

falow common: cd D: or C:

go to sdk directory

with cd common

tools/bin/sdkmanager --licenses

-1

WINDOWS SOLUTION

  • Open Terminal o Windows Power Shell

  • Go to Android SDK folder

Generally this folder can be find in C:\Users(your-windows-user)\AppData\Local\Android\Sdk\tools\bin

  • Begin in "....\Sdk" folder enter to \tools\bin

Finally path C:\Users(your-windows-user)\AppData\Local\Android\Sdk\tools\bin

  • Verify that sdkmanager.bat is in location using ls command

  • Excute the next command .\sdkmanager.bat --licenses

  • Then the terminal will show 7 documents, you need put yes In each one

Cristian Mora
  • 1,453
  • 16
  • 26
-2

THIS IS A QUICK FIX; 1. GO TO C:\Users(YOUR USER NAME)\AppData\Local\Android\sdk\build-tools 2. DELETE THE PREEXISTING FOLDER OF THE VERSION THAT HAS NO LICENSE. 3. GO TO ANDROID STUDIO AND MANUALLY INSTALL THE TOOL AGAIN(this will give you an opportunity to accept the license ) ........ (problem solved)