Home Automatically accept all SDK licences
Reply: 26

# Automatically accept all SDK licences

nsvir
1#
nsvir Published in 2016-06-29 09:56:41Z
 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 ? Thanks! [EDIT] A solution was to execute: android update sdk --no-ui --filter build-tools-24.0.0,android-24,extra-android-m2repository  And install it manually, but it is the gradle's new feature purpose to do it. [EDIT 2] A better solution is to use the sdkmananger: yes | sudo sdkmanager --licenses 
sschuberth
2#
sschuberth Reply to 2017-05-18 11:51:20Z
 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...
Community
3#
Community Reply to 2017-05-23 12:34:44Z
 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!) Igor Ganapolsky 4# Igor Ganapolsky Reply to 2016-11-15 17:21:29Z  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. JosephH 5# JosephH Reply to 2016-12-10 15:47:54Z  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. raven 6# raven Reply to 2016-12-29 10:43:03Z  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. ofir_aghai 7# ofir_aghai Reply to 2017-02-01 11:21:25Z  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 Joe Lawson 8# Joe Lawson Reply to 2017-02-02 18:35:11Z  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 
A. Rager
9#
A. Rager Reply to 2017-02-08 23:45:29Z
 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. DiRiNoiD 10# DiRiNoiD Reply to 2017-02-19 20:27:00Z  There are 2 approach that I can found to this problem. 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 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) Roc Boronat 11# Roc Boronat Reply to 2017-05-20 18:23:47Z  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: ./sdkmanager --update that requests us to accept a license for the sdkmanager, and then ./sdkmanager --licenses that requests us to accept new licenses not previously accepted Remember: run these commans with the same user that jenkins does. In my 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 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" surya 12# surya Reply to 2017-03-22 10:13:28Z  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 jnv 13# jnv Reply to 2017-04-25 04:48:51Z  For the newest Android Studio (2.3) the best way to update/accept all licenses is to run: tools/bin/sdkmanager --licenses  you might still need to copy the licence files to other locations based on your setup. Thibaut Mottet 14# Thibaut Mottet Reply to 2017-04-28 05:21:19Z  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 Chinedu Etoh 15# Chinedu Etoh Reply to 2017-05-30 10:54:57Z  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. Mark Johnson 16# Mark Johnson Reply to 2017-06-02 23:41:19Z  In Windows PowerShell, you can do for($i=0;$i -lt 30;$i++) { $response += "yn"};$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
Phuc Nguyen
17#
Phuc Nguyen Reply to 2017-06-28 09:55:34Z
 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.
Vinicius de Santana
18#
Vinicius de Santana Reply to 2017-07-31 01:54:34Z
 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. Cristian Agudelo 19# Cristian Agudelo Reply to 2017-08-14 07:37:51Z  this solved my error yes |$ANDROID_HOME/tools/bin/sdkmanager "build-tools;25.0.2" 
Ryan R
20#
Ryan R Reply to 2017-08-20 13:33:03Z
 AndroidSDK can finally accept licenses. yes | sdkmanager --licenses 
Samrat Basra
21#
Samrat Basra Reply to 2017-10-31 07:10:53Z
 this work like a charm. gotcha. (while sleep 3; do echo "y"; done) | $ANDROID_HOME/tools/android update sdk -u Jimmy Yin 22# Jimmy Yin Reply to 2017-11-07 03:05:31Z  cd$ANDROID_HOME/tools/bin ./sdkmanager --update
A.L
23#
A.L Reply to 2017-11-17 15:27:49Z
 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.
Nauman Tahir
24#
Nauman Tahir Reply to 2017-12-03 00:47:29Z
 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/ 
Manoj Shrestha
25#
Manoj Shrestha Reply to 2017-12-11 22:39:07Z
 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.
Micheal C Wallas
26#
Micheal C Wallas Reply to 2018-01-28 18:34:56Z
 On Mac OSX, navigate to the sdk/tools/bin Then run ./sdkmanager --licenses, and accept all the licenses.
moobyfr
27#
moobyfr Reply to 2018-01-31 09:48:18Z
 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
 You need to login account before you can post.
Processed in 0.424403 second(s) , Gzip On .

© 2016 Powered by mzan.com design MATCHINFO