I use the new command line tools for Android because the old sdk-tools repository of Android isn’t available anymore. So I changed my gitlab-ci to load the commandlintools
. But when I try to run it I get the following error:
Warning: Could not create settings
java.lang.IllegalArgumentException
at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.<init>(SdkManagerCliSettings.java:428)
at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.createSettings(SdkManagerCliSettings.java:152)
at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.createSettings(SdkManagerCliSettings.java:134)
at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:57)
at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:48)
I already tried executing those commandy by hand, but I get the same error. Also if I run sdkmanager --version
, the same error occurs.
My gitlab-ci looks like:
image: openjdk:9-jdk
variables:
ANDROID_COMPILE_SDK: "29"
ANDROID_BUILD_TOOLS: "29.0.3"
ANDROID_SDK_TOOLS: "6200805"
before_script:
- apt-get --quiet update --yes
- apt-get --quiet install --yes wget tar unzip lib32stdc++6 lib32z1
- wget --quiet --output-document=android-sdk.zip https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_SDK_TOOLS}_latest.zip
- unzip -d android-sdk-linux android-sdk.zip
- echo y | android-sdk-linux/tools/bin/sdkmanager "platform-tools" "platforms;android-${ANDROID_COMPILE_SDK}" >/dev/null
#- echo y | android-sdk-linux/tools/bin/sdkmanager "platform-tools" >/dev/null
- echo y | android-sdk-linux/tools/bin/sdkmanager "build-tools;${ANDROID_BUILD_TOOLS}" >/dev/null
- export ANDROID_HOME=$PWD/android-sdk-linux
- export PATH=$PATH:$PWD/android-sdk-linux/platform-tools/
- chmod +x ./gradlew
# temporarily disable checking for EPIPE error and use yes to accept all licenses
- set +o pipefail
- yes | android-sdk-linux/tools/bin/sdkmanager --licenses
- set -o pipefail
stages:
- build
- test
lintDebug:
stage: build
script:
- ./gradlew -Pci --console=plain :app:lintDebug -PbuildDir=lint
assembleDebug:
stage: build
script:
- ./gradlew assembleDebug
artifacts:
paths:
- app/build/outputs/
debugTests:
stage: test
script:
- ./gradlew -Pci --console=plain :app:testDebug
JJD
49k57 gold badges199 silver badges335 bronze badges
asked Feb 27, 2020 at 19:32
Instead of passing the argument --sdk_root
for each single command execution, let’s deep dive into the real cause.
Starting from Android SDK Command-line Tools 1.0.0 (6200805), in contrast to Android SDK 26.1.1 (4333796), the tools
directory hierarchy has been changed.
Previously it was placed right inside ANDROID_HOME
(which is deprecated, we will use the term ANDROID_SDK_ROOT
for the rest of the paragraph), now it’s still named as tools
(the only thing you’ll get after unpacking the downloaded commandlinetools zip file), but differently, you have to place it inside a directory called cmdline-tools
on your own. The name cmdline-tools
comes from its package name, where you can get from listing packages command sdkmanager --list
, whose outputs include cmdline-tools;1.0 | 1.0 | Android SDK Command-line Tools
.
Wrapping tools
directory inside cmdline-tools
directory would make it work, and help you get rid of the annoying --sdk_root
argument. But what about the other parts?
Well, that’s all you have to change. Let me explain more.
- The king —
sdkmanager
lives insidecmdline-tools/tools/bin
, you’d better set inPATH
environment variable cmdline-tools
should not be set asANDROID_SDK_ROOT
. Because later, when updating Android SDK, or installing more packages, the other packages will be placed underANDROID_SDK_ROOT
, but not undercmdline-tools
.- The final, complete
ANDROID_SDK_ROOT
directory structure should look like below, consist of quite a few sub-directories:build-tools
,cmdline-tools
,emulator
,licenses
,patcher
,platform-tools
,platforms
,system-images
. You can easily point out thatbuild-tools
andcmdline-tools
are siblings, all sit inside the parentANDROID_SDK_ROOT
.
Let me recap in a simple way:
- Set your preferred
ANDROID_SDK_ROOT
(just like before) - Download and unpack the commandlinetools zip file into a directory called
cmdline-tools
, which is insideANDROID_SDK_ROOT
- Append the directory
$ANDROID_SDK_ROOT/cmdline-tools/tools/bin
to environment variablePATH
, so that the system knows where to findsdkmanager
!!UPDATE!!
The behavior has changed again since the build 6858069
(Android SDK Command-line Tools 3.0):
- After unzipping the package, the top-most directory you’ll get is
cmdline-tools
. - Rename the unpacked directory from
cmdline-tools
totools
, and place it under$ANDROID_SDK_ROOT/cmdline-tools
, so now it should look like:$ANDROID_SDK_ROOT/cmdline-tools/tools
. And inside it, you should have:NOTICE.txt bin lib source.properties
. Actually according to the official Command-Line Tools doc, the tree structure should beandroid_sdk/cmdline-tools/version/bin/
, but I’ve checked, usingversion
ortools
makes no difference here. - For your environment variable
PATH
, I would recommend you to set like this:PATH=$PATH:$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$ANDROID_SDK_ROOT/cmdline-tools/tools/bin
, because after update later, you’ll get the latestsdkmanager
placed under$ANDROID_SDK_ROOT/cmdline-tools/latest/bin
, put it in front will make it higher priority.
answered Apr 12, 2020 at 19:06
Jing LiJing Li
14.2k5 gold badges57 silver badges68 bronze badges
21
This appears to be a bug with the way sdkmanager locates the SDK installation folder.
A work-around is to set the flag --sdk_root
. You can move ANDROID_HOME declaration higher, then use it with the subsequent commands.
- export ANDROID_HOME=$PWD/android-sdk-linux
- yes | android-sdk-linux/tools/bin/sdkmanager --sdk_root=${ANDROID_HOME} --licenses
- android-sdk-linux/tools/bin/sdkmanager --sdk_root=${ANDROID_HOME} "platform-tools" "platforms;android-${ANDROID_COMPILE_SDK}" >/dev/null
Also, moved blanket license acceptance command to the first command to clean up the echo y
parts.
Oddly enough if you run sdkmanager --sdk_root=${ANDROID_HOME} "tools"
it will upgrade tools from 3.6.0 to 26.1.1 and sdkmanager no longer has this issue. This update takes time and bandwidth and isn’t exactly necessary with the work-around.
answered Feb 28, 2020 at 14:56
caller9caller9
2,1871 gold badge17 silver badges11 bronze badges
8
For those who struggled with installing Android Command Line Tools for Appium on Windows 10/x64 just do as following:
- Download latest Command line tools from android i.e. commandlinetools-win-6200805_latest.zip
- Unzip the downloaded file
- Create directory for storing commandline tools somewhere on your disk, with following path included: android/cmdline-tools/latest Basically when You unzip this Cmd line tools, just rename tools directory to latest and make sure You put this latest folder in android/cmdline-tools directory somewhere on your disk
- Create ANDROID_HOME environment variable for directory that stores the cmdline tools directory location like:
C:YourLocationWhereYouStoreTheDirectoryandroidcmdline-toolslatest - Create new entry in Path environment variable as %ANDROID_HOME%bin
answered Mar 9, 2020 at 10:44
ArturSArturS
7231 gold badge6 silver badges19 bronze badges
6
The sdkmanager
tries to figure out the android-sdk path based in where it’s unpacked, without use the environment variables, like ANDROID_SDK_ROOT
. But it’s get worse, because it have a hard coded parent folder named cmdline-tools
and if you unzip commandlinetools inside a folder with another name, it doesn’t work, forcing us to use the parameter sdk_root
to feed the inside variable correctly.
So, with that in mind we can use the following approach to solve this.
I will assume that we are using Ubuntu OS, so if you aren’t, you should adapt some of that instructions.
-
Install Android-SDK.
sudo apt install android-sdk
After the instalation you will have a folder called android-sdk in /usr/lib
-
Create a folder called cdmline-tools inside the android-sdk folder
sudo mkdir /usr/lib/android-sdk/cmdline-tools
-
Download the Android command line tools zip from here (https://developer.android.com/studio?hl=en-419#downloads)
-
Unpack the file you just downloaded inside /usr/lib/android-sdk/cmdline-tools
sudo unzip /path/for/commandlinetools-linux-6200805_latest.zip -d /usr/lib/android-sdk/cmdline-tools
-
Go to you home dir and edit your .profile
nano .profile
-
Create an ANDROID_SDK_ROOT variable
export ANDROID_SDK_ROOT=/usr/lib/android-sdk
-
Put the sdkmanager folder in your path
export PATH=$ANDROID_SDK_ROOT/cmdline-tools/tools/bin:$PATH
-
Save and Exit
-
Reload you profile
. ~/.profile
-
Run
sdkmanager --version
You should see the version printed in your terminal.
JJD
49k57 gold badges199 silver badges335 bronze badges
answered Apr 11, 2020 at 0:59
awquadrosawquadros
4993 silver badges4 bronze badges
7
Downloading the new cmdline-tools from Android Developer website requires the following directory structure to be respected.
answered Feb 28, 2020 at 23:45
3
Simple Solution:
- Open Android Studio Tools Menu,
- SDK Manager In the window that comes
up there are inner panels, - Choose SDK Tools panel Tick Android SDK Command-line Tools
- Choose Apply button near the bottom of the window
answered Aug 17, 2021 at 18:14
Dheeraj DDheeraj D
4,2364 gold badges20 silver badges36 bronze badges
3
Mixing responses from Jing Li and caller9, this is my script:
variables:
ANDROID_COMPILE_SDK: "29"
ANDROID_BUILD_TOOLS: "29.0.3"
ANDROID_SDK_TOOLS: "6200805"
before_script:
- apt-get update --yes
- apt-get install --yes wget tar unzip lib32stdc++6 lib32z1
- export ANDROID_HOME=${PWD}android-home
- install -d $ANDROID_HOME
- wget --output-document=$ANDROID_HOME/cmdline-tools.zip https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_SDK_TOOLS}_latest.zip
- pushd $ANDROID_HOME
- unzip -d cmdline-tools cmdline-tools.zip
- popd
- export PATH=$PATH:${ANDROID_HOME}/cmdline-tools/tools/bin/
- sdkmanager --version
- set +o pipefail
- yes | sdkmanager --sdk_root=${ANDROID_HOME} --licenses
- set -o pipefail
- sdkmanager --sdk_root=${ANDROID_HOME} "platforms;android-${ANDROID_COMPILE_SDK}"
- sdkmanager --sdk_root=${ANDROID_HOME} "platform-tools"
- sdkmanager --sdk_root=${ANDROID_HOME} "build-tools;${ANDROID_BUILD_TOOLS}"
- export PATH=$PATH:${ANDROID_HOME}/platform-tools/
- chmod +x ./gradlew
[...]
answered May 16, 2020 at 15:12
Javier SedanoJavier Sedano
9133 gold badges11 silver badges28 bronze badges
I found the solution to use the latest command-line tools following those steps:
1 — Extracting the Command-line tools into a folder with this structure:
e.g.: $HOME/Development/android/cmdline-tools/latest
(this folder must contain lib, bin, notice.txt and source.properties)
2 — Defining ANDROID_HOME as an environment variable:
ANDROID_HOME="$HOME/Development/android/cmdline-tools/latest"
3 — Loading it on PATH:
PATH="$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/tools/lib:$ANDROID_HOME/tools/bin:$ANDROID_HOME/platform-tools"
answered Mar 2, 2020 at 19:31
3
Got the same issue, came here by Google.
According to the AndroidStudio Archive, today was the release of 4.1.
I suppose that’s no coincidence.
This completely unrelated guide has a hardlink for an older version of the sdk-tools for linux.
You can change the url to windows or mac for other OSs. I’ll use that as a hotfix for now.
(that was supposed to be a comment not a solution)
answered Feb 27, 2020 at 21:15
jnnksjnnks
8365 silver badges16 bronze badges
1
Summarizing several useful posts here, and for people wanting a quick snippet, for example to plug in a Dockerfile
, the following script is working for me:
RUN mkdir -p /opt/android/cmdline-tools/latest
&& cd /opt/android/cmdline-tools/latest
&& wget https://dl.google.com/android/repository/commandlinetools-linux-6858069_latest.zip
&& bsdtar --strip-components=1 -xvf commandlinetools-linux-6858069_latest.zip
&& yes | bin/sdkmanager --licenses
&& bin/sdkmanager "build-tools;29.0.2" "platforms;android-29"
&& rm commandlinetools-linux-6858069_latest.zip
It just requires bsdtar
to be installed (it’s usually packaged in popular distributions). Android platform/build tools version 29 are installed, and Android sdk root will be then located in /opt/android
. While this setup works for me without warnings as it is, I have an issue when reinstalling packages already installed, or possibly installing different version of the packages: it clashes with packages already present and create bogus directories in the sdk root, with -2
, -3
suffixes. These directories are then ignored, and warnings like Observed package id 'emulator' in inconsistent location
are printed, so this behavior is definitely not desirable. If you have a fix for that please write it in the comments or, if you are confident enough, just edit the script with the exact fix.
answered Feb 13, 2021 at 12:55
ceztkoceztko
14.5k5 gold badges54 silver badges73 bronze badges
3
Just solved this issue with IDE, looks pretty simple to me. (Actually this duplicate previous answer but with the picture). Just install sdk tools and everything should work.
answered Nov 9, 2021 at 9:00
I got the same error. After doing all solutions, i could not fix it. I solved this problem by reading: https://forum.unity.com/threads/android-build-not-working.844969/
Simplify an answer:
-
Opening
sdkmanager.bat
by notepad++ -
Changing this line from
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %SDKMANAGER_OPTS% -classpath "%CLASSPATH%" com.android.sdklib.tool.sdkmanager.SdkManagerCli %CMD_LINE_ARGS%
to
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %SDKMANAGER_OPTS% -classpath "%CLASSPATH%" com.android.sdklib.tool.sdkmanager.SdkManagerCli %CMD_LINE_ARGS% --sdk_root=%ANDROID_HOME%
(Note: Adding --sdk_root=%ANDROID_HOME%
at the end
JJD
49k57 gold badges199 silver badges335 bronze badges
answered May 5, 2020 at 13:10
LilymeowLilymeow
511 silver badge1 bronze badge
1
I would like to share my experience.
At first I try to explain why directory structure has to look
the way shown in this answer — https://stackoverflow.com/a/60460681/1758733 .
https://stackoverflow.com/users/668455/tristan asked for explanation several times so hope I will clarify
the situtation with the next experiment:
1. unpack cmdline-tools to any path, for example c:Androidtools;
2. create a folder for SDK, let it be c:AndroidSDK;
3. install cmdline-tools (yes, we install cmdline-tools again =)):
c:Androidtoolsbinsdkmanager --sdk_root=c:AndroidSDK "cmdline-tools;latest"
4. at this moment we can examine c:AndroidSDK and locate
the path c:AndroidSDKcmdline-toolslatest. If we compare
this folder with the previous version c:Androidtools we find out
that they are identical. The new installed c:AndroidSDKcmdline-toolslatestsdkmanager works
without --sdk_root argument so we could initially unpack cmdline-tools
to cmdline-toolslatest.
One may encounter another issue — Stuck at «.android/repositories.cfg could not be loaded.»
Other issues & facts:
1. QtCreator works with another sdkmanager that placed in SDK_ROOT/tools/bin
2. SDK_ROOT/tools/bin/sdkmanager works only with JDK 8
3. Java uses its own storage for certificates and it's not convinient usually.
Thus one may want to use Windows certificate store. Unfortunately Grandle has the
issue - https://stackoverflow.com/a/59056537 - so use the following:
set JAVA_OPTS=-Djavax.net.ssl.trustStoreType=Windows-ROOT -Djavax.net.ssl.trustStore=NUL
To sum up the following recipe for development with Qt can be composed:
1. download commandlinetools-win-6200805_latest.zip
2. extract cmdline-tools so there will be hierarchy
SDKROOT
- cmdline-tools
- latest
- bin
- sdkmanager.bat
- ...
- lib
- ...
3. install JDK 8. set JAVA_HOME=c:pathtojava so that %JAVA_HOME%/bin/java.exe exists.
4. set JAVA_OPTS=-Djavax.net.ssl.trustStoreType=Windows-ROOT -Djavax.net.ssl.trustStore=NUL
5. NDK may be downloaded manually or installed with sdkmanager
6. install required components:
SDKROOTcmdline-toolslatestbinsdkmanager "tools" "build-tools;BUILD_TOOLS_VERSION" "platform-tools" "platforms;ANDROID_VERSION"
7. run qtcreator from console so JAVA_OPTS is taken into account (or set it globaly for windows user or even station)
8. tools -> options -> devices set paths to JDK 8, SDKROOT and NDK
answered Mar 24, 2020 at 19:14
gshepgshep
6286 silver badges14 bronze badges
This happened to me when downloading the standalone command line tools (commandlinetools-mac-6200805_latest
) on a new Mac.
Based on all the answers here, I was able to make it work like this
# Define ANDROID_HOME, if not defined already
export ANDROID_HOME="~/Library/Android/sdk"
# Create the folder if missing
mkdir -p $ANDROID_HOME
# Let the tool know that it should use that SDK location.
sdkmanager --list --sdk_root=$ANDROID_HOME
The docs for the --sdk_root
option say «Use the specified SDK root instead of the SDK containing this tool«. This made me think that, despite being shipped standalone, the tool expects to be part of a bundle where the SDK is installed aswell.
answered Apr 8, 2020 at 5:09
mokagiomokagio
15.8k3 gold badges48 silver badges56 bronze badges
2
Android SDK Tools now rest in following location: «android_sdk/cmdline-tools/version/bin/«;
Therefore to solve this problem in Windows (same can be replicated in other OS), do the following:
-
Inside your
android_sdk
folder, create the folder:cmdline-tools
and inside it create another folder:version
extract / put all your files «/bin /lib NOTICE and sources.properties» files inside thisversion
folder. -
Set
ANDROID_HOME
to yourandroid_sdk
folder. - Add to your System Path:
android_sdkcmdlineAndroidSDKcmdline-toolsversionbin
Similarly, place your Android SDK Platform Tools inside your android_sdk/platform-tools/
and add corresponding PATH
to ENVIRONMENTAL VARIABLES
under System Variables
answered May 23, 2020 at 14:52
2
Based on updated suggestions from @Jing Li. Here’s my version of gitlab-ci.yml
image: openjdk:8-jdk
variables:
ANDROID_COMPILE_SDK: "30"
ANDROID_BUILD_TOOLS: "29.0.2"
ANDROID_COMMAND_LINE_TOOLS: "6858069"
GRADLE_OPTS: "-Dorg.gradle.daemon=false"
before_script:
- export GRADLE_USER_HOME=$(pwd)/.gradle
- chmod +x ./gradlew
- apt-get --quiet update --yes
- apt-get --quiet install --yes wget tar unzip lib32stdc++6 lib32z1
- mkdir -p android-sdk-linux/cmdline-tools
- export ANDROID_SDK_ROOT=$PWD/android-sdk-linux
- cd android-sdk-linux/cmdline-tools
- wget --quiet --output-document=android-sdk.zip https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_COMMAND_LINE_TOOLS}_latest.zip
- unzip android-sdk.zip
- rm android-sdk.zip
- mv cmdline-tools version
- echo y | version/bin/sdkmanager "platforms;android-${ANDROID_COMPILE_SDK}" >/dev/null
- echo y | version/bin/sdkmanager "platform-tools" >/dev/null
- echo y | version/bin/sdkmanager "build-tools;${ANDROID_BUILD_TOOLS}" >/dev/null
- export PATH=$PATH:$ANDROID_SDK_ROOT/platform-tools/
# temporarily disable checking for EPIPE error and use yes to accept all licenses
- set +o pipefail
- yes | version/bin/sdkmanager --licenses
- set -o pipefail
- cd ../../
- chmod +x ./gradlew
cache:
key: ${CI_PROJECT_ID}
paths:
- .gradle/
answered Apr 7, 2021 at 9:38
Ravi PatelRavi Patel
2,0863 gold badges30 silver badges48 bronze badges
This page from Unity 2018 documentation also has a good explanation of resolving this issue, including such points like:
- Installing the Android SDK without Android Studio.
- Workaround for “Warning: Could not create settings” and “java.lang.IllegalArgumentException”
- The trick for Android Studio version 3.6 or newer.
- Warning about Java 9 or later, a JDK must be version 8.
https://docs.unity3d.com/2018.4/Documentation/Manual/android-sdksetup.html
answered Apr 1, 2020 at 16:10
1
Since new updates, there are some changes that are not mentioned in the documentation. After unzipping the command line tools package, the top-most directory you’ll get is cmdline-tools. Rename the unpacked directory from cmdline-tools to tools, and place it under $C:/Android/cmdline-tools
now it will look like $C:/Android/cmdline-tools/tools
and it will work perfectly.
answered Sep 7, 2022 at 21:54
The first requirement of installing SDK (Any method) is to install Java & setting JAVA_HOME path.
Then, SDK command-line tools need installation path without which it throws NullPointerException.
To overcome this just pass the path where you want to install SDK with argument «—sdk_root»
Eg. sdkmanager.bat «platform-tools» «platforms;android-» —sdk_root=
answered Apr 20, 2020 at 5:05
If you are using Linux and at the same time, you don’t want to mess your hands with complex workarounds, I recommend you to download and use the Snap version of sdkmanager.
Remember to use androidsdk
instead of sdkmanager
in the terminal.
answered Aug 12, 2020 at 8:46
Working Solution for Ubuntu using Android Studio
Here’s the working procedure for Ubuntu and Debian like linux :
- install Android studio as desribed in their website
https://developer.android.com/studio/install - run :
flutter config --android-studio-dir <location of android studio>
thenflutter config --android-sdk /home/user/Android/Sdk
(this is the default location of the SDK) - add the bin to your PATH
PATH=$PATH:/home/user/Android/Sdk/tools/bin/
- Afterwards, run :
flutter doctor --android-licenses
and accept all licences
To check if everything is ok run the doctor in verbos mode as following :flutter doctor -v
answered Aug 2, 2021 at 13:03
Badr BellajBadr Bellaj
10.6k2 gold badges40 silver badges40 bronze badges
Here is very basic and simple solution
just change the folder structure
change main folder name to latest
then create a folder named cmdline-tools
create new folder inside cmdline called tools and put bin and other data inside tools folder
so it will look like this
userlatestcmdline-toolstools
I have searched alot but it worked for me
answered Dec 13, 2021 at 5:50
Android Studio is necessary when installing the command line tools even if it’s not the editor you use to develop apps with. Unchecking the obsolete packages tab and downloading the tools should do it; that should clear the license issue and you can go back to your favorite IDE (such as VS Code).
answered May 26, 2020 at 14:19
1
This tutorial provides solution to the error specific to Android sdkmanager — Warning: Could not create settings
This tutorial provides a solution to the error specific to Android sdkmanager — Warning: Could not create settings. This error occurs since the most recent versions of Android expect the Android SDK Tools directory within the cmdline-tools directory as shown below.
android-sdk
|----platform-tools
|----cmdline-tools
|----|----tools
Solution — Ubuntu
We must update the Android Path as shown below.
Update .bashrc file of the user account.
# Update Bash
sudo nano ~/.bashrc# Add at the end of the .bashrc file
# Android - SDK Tools & Platform Tools export ANDROID_HOME=/data/tools/android-sdk export PATH=/data/tools/android-sdk/platform-tools:/data/tools/android-sdk/cmdline-tools/tools:/data/tools/android-sdk/cmdline-tools/tools/bin:${PATH} # sdkmanager fix for java 9 and 10 #export JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'# Save .bashrc
# Reload Bash
source ~/.bashrc
Notes: Replace the Android SDK path based on your installation directory.
Error
The complete error on Ubuntu System is shown below.
Warning: Could not create settings java.lang.IllegalArgumentException at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.<init>(SdkManagerCliSettings.java:428) at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.createSettings(SdkManagerCliSettings.java:152) at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.createSettings(SdkManagerCliSettings.java:134) at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:57) at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:48) Usage: sdkmanager [--uninstall] [<common args>] [--package_file=<file>] [<packages>...] sdkmanager --update [<common args>] sdkmanager --list [<common args>] sdkmanager --licenses [<common args>] sdkmanager --version With --install (optional), installs or updates packages. By default, the listed packages are installed or (if already installed) updated to the latest version. With --uninstall, uninstall the listed packages. <package> is a sdk-style path (e.g. "build-tools;23.0.0" or "platforms;android-23"). <package-file> is a text file where each line is a sdk-style path of a package to install or uninstall. Multiple --package_file arguments may be specified in combination with explicit paths. With --update, all installed packages are updated to the latest version. With --list, all installed and available packages are printed out. With --licenses, show and offer the option to accept licenses for all available packages that have not already been accepted. With --version, prints the current version of sdkmanager.Common Arguments:
--sdk_root=<sdkRootPath>: Use the specified SDK root instead of the SDK
containing this tool--channel=<channelId>: Include packages in channels up to <channelId>.
Common channels are:
0 (Stable), 1 (Beta), 2 (Dev), and 3 (Canary).--include_obsolete: With --list, show obsolete packages in the
package listing. With --update, update obsolete
packages as well as non-obsolete.--no_https: Force all connections to use http rather than https.
--proxy=<http | socks>: Connect via a proxy of the given type.
--proxy_host=<IP or DNS address>: IP or DNS address of the proxy to use.
--proxy_port=<port #>: Proxy port to connect to.
--verbose: Enable verbose output.
* If the env var REPO_OS_OVERRIDE is set to "windows",
"macosx", or "linux", packages will be downloaded for that OS.
Summary
This tutorial provided the solution to error specific to using the sdkmanager — Warning: Could not create settings.
I had to Install Android SDK version 28 for installing Flutter. For that I downloaded the zipped package of Android SDK from android studio website.
Link: https://developer.android.com/studio/index.html#download
I didn’t want to install Android Studio but my plan was to use Visual Studio Code as the IDE. I unpacked the Android SDK and extracted it in my home folder. But while I wanted to see the list of packages available in android sdk it always showed my the following error:
Warning: Could not create settings
java.lang.IllegalArgumentException
at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.<init>(SdkManagerCliSettings.java:428)
at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.createSettings(SdkManagerCliSettings.java:152)
at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.createSettings(SdkManagerCliSettings.java:134)
at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:57)
at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:48)
Warning: Could not create settings
In order to resolve this issue first we need to create a folder called cmdline-tools. You can create in any destination. After creating the folder move your tools folder which is the Android-SDK package you have downloaded from above link.
mkdir cmdline-tools
mv tools cmdline-tools/tools
After moving the package to cmdline-tools directory make open your .bashrc file and add the following configuration:
#First In your terminal type:
nano ~/.bashrc
# Second Add the following configuration:
export PATH="$HOME/cmdline-tools/tools:$HOME/cmdline-tools/tools/bin:$PATH"
Now close the file saving the changes you just made. Then compile the bashrc file with this command:
source ~/.bashrc
After that when you type sdkm and press tab key you will see the sdkmanager command on your terminal.
THan you can check the packages of SDK and build tools available in your SDK Manager with this command:
sdkmanager --list
Since flutter requires SDK version 28 it can be downloaded using the following command:
sdkmanager "platform-tools" "platforms;android-28"
-
Summary
-
Files
-
Reviews
-
Support
-
Mailing Lists
-
Code
-
Tickets ▾
- Support Requests
- Feature Requests
- Patches
- Bugs
-
News
-
Discussion
-
Donate
Menu
▾
▴
Error — Could not create Settings folder
Created:
2010-09-19
Updated:
2012-10-28
-
Hello,
I cannot open opensong. I get the following error
Could not create Settings folder: C:Program FilesOpenSongSettings
How do I fix this? When I run opensong, the splash screen comes up and then
the error box and the only option I have is to click «OK». The program does
not open. I am running windows vista.Thank you.
JCD
-
I do not have Vista at hand to test this, but my guess would be that you
installed OpenSong with administrative rights. Now that you are starting
OpenSong, you do not have the rights to modify the settings directory. You
have two options:
— execute OpenSong as administrator and set it up as you want, placing the documents directory (containing the sets & songs) at a location where an normal user has write access
— modify the OpenSong installation folder (C:Program FilesOpenSong) and add write permissions for normal users.
Log in to post a comment.
Я использую новые инструменты командной строки Android, потому что старое хранилище sdk-tools для Android больше не доступно. Поэтому я изменил свой gitlab-ci для загрузки командных инструментов. Но когда я пытаюсь запустить его, я получаю следующую ошибку:
Warning: Could not create settings
java.lang.IllegalArgumentException
at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.<init>(SdkManagerCliSettings.java:428)
at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.createSettings(SdkManagerCliSettings.java:152)
at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.createSettings(SdkManagerCliSettings.java:134)
at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:57)
at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:48)
Я уже пытался выполнить эти команды вручную, но я получаю ту же ошибку. Также, если я бегу sdkmanager --version
, возникает та же ошибка. Мой gitlab-ci выглядит так:
image: openjdk:9-jdk
variables:
ANDROID_COMPILE_SDK: "29"
ANDROID_BUILD_TOOLS: "29.0.3"
ANDROID_SDK_TOOLS: "6200805"
before_script:
- apt-get --quiet update --yes
- apt-get --quiet install --yes wget tar unzip lib32stdc++6 lib32z1
- wget --quiet --output-document=android-sdk.zip https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_SDK_TOOLS}_latest.zip
- unzip -d android-sdk-linux android-sdk.zip
- echo y | android-sdk-linux/tools/bin/sdkmanager "platform-tools" "platforms;android-${ANDROID_COMPILE_SDK}" >/dev/null
#- echo y | android-sdk-linux/tools/bin/sdkmanager "platform-tools" >/dev/null
- echo y | android-sdk-linux/tools/bin/sdkmanager "build-tools;${ANDROID_BUILD_TOOLS}" >/dev/null
- export ANDROID_HOME=$PWD/android-sdk-linux
- export PATH=$PATH:$PWD/android-sdk-linux/platform-tools/
- chmod +x ./gradlew
# temporarily disable checking for EPIPE error and use yes to accept all licenses
- set +o pipefail
- yes | android-sdk-linux/tools/bin/sdkmanager --licenses
- set -o pipefail
stages:
- build
- test
lintDebug:
stage: build
script:
- ./gradlew -Pci --console=plain :app:lintDebug -PbuildDir=lint
assembleDebug:
stage: build
script:
- ./gradlew assembleDebug
artifacts:
paths:
- app/build/outputs/
debugTests:
stage: test
script:
- ./gradlew -Pci --console=plain :app:testDebug
Ответы:
Это похоже на ошибку в том, как sdkmanager находит папку установки SDK.
Обходной путь — установить флаг --sdk_root
. Вы можете переместить объявление ANDROID_HOME выше, а затем использовать его с последующими командами.
- export ANDROID_HOME=$PWD/android-sdk-linux
- yes | android-sdk-linux/tools/bin/sdkmanager --sdk_root=${ANDROID_HOME} --licenses
- android-sdk-linux/tools/bin/sdkmanager --sdk_root=${ANDROID_HOME} "platform-tools" "platforms;android-${ANDROID_COMPILE_SDK}" >/dev/null
Кроме того, в первую команду перенесена команда принятия полной лицензии для очистки echo y
деталей.
Как ни странно, если вы запустите sdkmanager --sdk_root=${ANDROID_HOME} "tools"
его, он обновит инструменты с 3.6.0 до 26.1.1, и sdkmanager больше не будет иметь этой проблемы. Это обновление требует времени и пропускной способности и не является обязательным для обходного пути.
Для тех, кто боролся с установкой инструментов командной строки Android для Appium в Windows 10 / x64, просто сделайте следующее:
- Загрузите последние инструменты командной строки с Android, то есть commandlinetools-win-6200805_latest.zip
- Распакуйте загруженный файл
- Создайте каталог для хранения инструментов командной строки где-нибудь на вашем диске, включив следующий путь: android / cmdline-tools / latest В основном, когда вы распаковываете эту строку инструментов Cmd, просто переименуйте каталог инструментов в последний и убедитесь, что вы поместили эту последнюю папку в android / cmdline -tools каталог где-то на вашем диске
- Создайте переменную среды ANDROID_HOME для каталога, в котором хранится расположение каталога инструментов cmdline, например:
C: YourLocationWhereYouStoreTheDirectory android cmdline-tools latest - Создать новую запись в переменной среды Path как % ANDROID_HOME% bin
Вместо того, чтобы передавать аргумент --sdk_root
для каждого отдельного выполнения команды, давайте углубимся в реальную причину.
Начиная с Android SDK Инструменты командной строки 1.0.0 (6200805) , в отличие от Android SDK 26.1.1 (4333796) , tools
иерархия каталогов была изменена. Ранее он был помещен прямо внутрь ANDROID_HOME
, теперь он все еще называется как tools
(единственное, что вы получите после распаковки загруженного zip-файла commandlinetools ), но иначе вы должны поместить его в каталог, который cmdline-tools
вызывается самостоятельно. Название cmdline-tools
происходит от имени пакета, которое можно получить из команды перечисления пакетов sdkmanager --list
, выходные данные которой включают cmdline-tools;1.0 | 1.0 | Android SDK Command-line Tools
.
Обтекание tools
каталога внутри cmdline-tools
каталога сделает его работоспособным и поможет вам избавиться от раздражающего --sdk_root
аргумента. Но как насчет других частей?
Ну, это все, что вам нужно изменить. Позвольте мне объяснить больше.
- Король —
sdkmanager
живет внутриcmdline-tools/tools/bin
, тебе лучше установитьPATH
переменную среды cmdline-tools
не должен быть установлен какANDROID_HOME
. Потому что позже, при обновлении Android SDK или установке дополнительных пакетов, другие пакеты будут помещены вANDROID_HOME
, но не вcmdline-tools
.- Окончательный, полная
ANDROID_HOME
структура каталогов должна выглядеть , как показано ниже, включают в себя довольно много подкаталогов:build-tools
,cmdline-tools
,emulator
,licenses
,patcher
,platform-tools
,platforms
,system-images
. Вы можете легко указать, чтоbuild-tools
иcmdline-tools
братья и сестры, все сидят внутри родителяANDROID_HOME
.
Позвольте мне кратко повторить:
- Установите предпочтительный
ANDROID_HOME
(как и раньше) - Загрузите и распакуйте zip-файл commandlinetools в каталог
cmdline-tools
, который находится внутриANDROID_HOME
- Добавьте каталог
$ANDROID_HOME/cmdline-tools/tools/bin
в переменную окруженияPATH
, чтобы система знала, где найтиsdkmanager
Для загрузки новых cmdline-tools с веб-сайта Android Developer требуется следующая структура каталогов.
Получил такую же проблему, пришел сюда от Google. Согласно архиву AndroidStudio , сегодня вышел релиз 4.1. Я полагаю, это не случайно.
Это совершенно не связанное руководство содержит жесткую ссылку на более старую версию sdk-tools для linux . Вы можете изменить URL-адрес Windows или Mac для других ОС. Я буду использовать это как исправление на данный момент.
(это должен был быть комментарий, а не решение)
Sdkmanager пытается определить путь android-sdk в зависимости от того, где он распакован, без использования переменных среды, таких как ANDROID_SDK_ROOT. Но это еще хуже, потому что у него есть жестко закодированная родительская папка с именем cmdline-tools, и если вы разархивируете commandlinetools внутри папки с другим именем, это не сработает, вынуждая нас использовать параметр sdk_root для правильной подачи внутренней переменной.
Таким образом, имея в виду, мы можем использовать следующий подход для решения этой проблемы.
Я предполагаю, что мы используем ОС Ubuntu, поэтому, если вы этого не сделаете, вам следует адаптировать некоторые из этих инструкций.
-
Установите Android-SDK.
sudo apt install android-sdk
После установки у вас будет папка с именем android-sdk в / usr / lib
-
Создайте папку с именем cdmline-tools внутри папки android-sdk
sudo mkdir /usr/lib/android-sdk/cmdline-tools
- Загрузите zip-файл инструментов командной строки Android отсюда ( https://developer.android.com/studio?hl=ru-419#downloads )
-
Распакуйте файл, который вы только что загрузили, в / usr / lib / android-sdk / cmdline-tools
sudo unzip /path/for/commandlinetools-linux-6200805_latest.zip -d /usr/lib/android-sdk/cmdline-tools
-
Перейти к вам домой, директор и отредактируйте ваш .profile
nano .profile
-
Создайте переменную ANDROID_SDK_ROOT
export ANDROID_SDK_ROOT=/usr/lib/android-sdk
-
Поместите папку sdkmanager в свой путь
export PATH=$ANDROID_SDK_ROOT/cmdline-tools/tools/bin:$PATH
- Сохранить и выйти
-
Перезагрузить ваш профиль
. ~/.profile
-
Запустить
sdkmanager --version
Вы должны увидеть версию, напечатанную в вашем терминале.
Я нашел решение использовать новейшие инструменты командной строки, выполнив следующие действия:
1 — Извлечение инструментов командной строки в папку с такой структурой: например: $HOME/Development/android/cmdline-tools/latest
(эта папка должна содержать lib , bin , note.txt и source.properties )
2 — Определение ANDROID_HOME в качестве переменной среды:
ANDROID_HOME="$HOME/Development/android/cmdline-tools/latest"
3 — Загрузка в PATH :
PATH="$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/tools/lib:$ANDROID_HOME/tools/bin:$ANDROID_HOME/platform-tools"
Я хотел бы поделиться своим опытом.
Сначала я пытаюсь объяснить, почему структура каталогов должна выглядеть так, как показано в этом ответе — https://stackoverflow.com/a/60460681/1758733 .
https://stackoverflow.com/users/668455/tristan несколько раз спрашивал объяснения, поэтому надеюсь, что я проясню ситуацию следующим экспериментом:
1. unpack cmdline-tools to any path, for example c:Androidtools;
2. create a folder for SDK, let it be c:AndroidSDK;
3. install cmdline-tools (yes, we install cmdline-tools again =)):
c:Androidtoolsbinsdkmanager --sdk_root=c:AndroidSDK "cmdline-tools;latest"
4. at this moment we can examine c:AndroidSDK and locate
the path c:AndroidSDKcmdline-toolslatest. If we compare
this folder with the previous version c:Androidtools we find out
that they are identical. The new installed c:AndroidSDKcmdline-toolslatestsdkmanager works
without --sdk_root argument so we could initially unpack cmdline-tools
to cmdline-toolslatest.
Может возникнуть другая проблема — застрял в «.android / repositories.cfg не может быть загружен».
Другие вопросы и факты:
1. QtCreator works with another sdkmanager that placed in SDK_ROOT/tools/bin
2. SDK_ROOT/tools/bin/sdkmanager works only with JDK 8
3. Java uses its own storage for certificates and it's not convinient usually.
Thus one may want to use Windows certificate store. Unfortunately Grandle has the
issue - https://stackoverflow.com/a/59056537 - so use the following:
set JAVA_OPTS=-Djavax.net.ssl.trustStoreType=Windows-ROOT -Djavax.net.ssl.trustStore=NUL
Подводя итог, можно написать следующий рецепт разработки с использованием Qt:
1. download commandlinetools-win-6200805_latest.zip
2. extract cmdline-tools so there will be hierarchy
SDKROOT
- cmdline-tools
- latest
- bin
- sdkmanager.bat
- ...
- lib
- ...
3. install JDK 8. set JAVA_HOME=c:pathtojava so that %JAVA_HOME%/bin/java.exe exists.
4. set JAVA_OPTS=-Djavax.net.ssl.trustStoreType=Windows-ROOT -Djavax.net.ssl.trustStore=NUL
5. NDK may be downloaded manually or installed with sdkmanager
6. install required components:
SDKROOTcmdline-toolslatestbinsdkmanager "tools" "build-tools;BUILD_TOOLS_VERSION" "platform-tools" "platforms;ANDROID_VERSION"
7. run qtcreator from console so JAVA_OPTS is taken into account (or set it globaly for windows user or even station)
8. tools -> options -> devices set paths to JDK 8, SDKROOT and NDK
На этой странице документации Unity 2018 также есть хорошее объяснение решения этой проблемы, включая такие моменты, как:
- Установка Android SDK без Android Studio.
- Обходной путь для «Предупреждение: не удалось создать настройки» и «java.lang.IllegalArgumentException»
- Трюк для Android Studio версии 3.6 или новее.
- Предупреждение о Java 9 или более поздней версии, JDK должен быть версии 8.
https://docs.unity3d.com/2018.4/Documentation/Manual/android-sdksetup.html
Это случилось со мной при загрузке автономных инструментов командной строки ( commandlinetools-mac-6200805_latest
) на новом Mac.
Основываясь на всех ответах здесь, я смог заставить это работать так
# Define ANDROID_HOME, if not defined already
export ANDROID_HOME="~/Library/Android/sdk"
# Create the folder if missing
mkdir -p $ANDROID_HOME
# Let the tool know that it should use that SDK location.
sdkmanager --list --sdk_root=$ANDROID_HOME
Документы для --sdk_root
опции говорят «Использовать указанный корень SDK вместо SDK, содержащего этот инструмент ». Это заставило меня задуматься о том, что, несмотря на то, что инструмент поставляется автономно, он должен быть частью пакета, в котором также установлен SDK.
Первым требованием установки SDK (Любой метод) является установка Java и установка пути JAVA_HOME .
Затем инструментам командной строки SDK требуется путь установки, без которого он генерирует исключение NullPointerException.
Чтобы преодолеть это, просто укажите путь, по которому вы хотите установить SDK с аргументом «—sdk_root».
Например. sdkmanager.bat «платформы-инструменты» «платформы; android-» —sdk_root =
Describe the bug
When trying to build the TWA, it breaks with this log:
Installing Android Build Tools. Please, read and accept the license agreement Installing Build Tools Warning: Could not create settings java.lang.IllegalArgumentException at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.(SdkManagerCliSettings.java:428) at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.createSettings(SdkManagerCliSettings.java:152) at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.createSettings(SdkManagerCliSettings.java:134) at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:57) at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:48) Usage: sdkmanager [--uninstall] [] [--package_file=] [...] sdkmanager --update [] sdkmanager --list [] sdkmanager --licenses [] sdkmanager --versionWith --install (optional), installs or updates packages.
By default, the listed packages are installed or (if already installed)
updated to the latest version.
With --uninstall, uninstall the listed packages.<package> is a sdk-style path (e.g. "build-tools;23.0.0" or "platforms;android-23"). <package-file> is a text file where each line is a sdk-style path of a package to install or uninstall. Multiple --package_file arguments may be specified in combination with explicit paths.
With --update, all installed packages are updated to the latest version.
With --list, all installed and available packages are printed out.
With --licenses, show and offer the option to accept licenses for all
available packages that have not already been accepted.With --version, prints the current version of sdkmanager.
Common Arguments:
--sdk_root=: Use the specified SDK root instead of the SDK
containing this tool--channel=<channelId>: Include packages in channels up to <channelId>. Common channels are: 0 (Stable), 1 (Beta), 2 (Dev), and 3 (Canary). --include_obsolete: With --list, show obsolete packages in the package listing. With --update, update obsolete packages as well as non-obsolete. --no_https: Force all connections to use http rather than https. --proxy=<http | socks>: Connect via a proxy of the given type. --proxy_host=<IP or DNS address>: IP or DNS address of the proxy to use. --proxy_port=<port #>: Proxy port to connect to. --verbose: Enable verbose output.
- If the env var REPO_OS_OVERRIDE is set to "windows",
"macosx", or "linux", packages will be downloaded for that OS.
cli ERROR undefined
To Reproduce
Steps to reproduce the behavior:
Run bubblewrap build
Expected behavior
A clear and concise description of what you expected to happen.
Desktop (please complete the following information):
- OS: macOS
- Version 10.15.4
Additional context
First two levels of my folders, if it cacn help:
.
├── app
│ ├── build.gradle
│ └── src
├── build.gradle
├── gradle
│ └── wrapper
├── gradle.properties
├── gradlew
├── gradlew.bat
├── jdk
│ └── Contents
├── settings.gradle
├── signing-keystore.keystore
├── store_icon.png
├── tools
│ ├── NOTICE.txt
│ ├── bin
│ ├── lib
│ └── source.properties
└── twa-manifest.json
Also, signing-keystore.keystore
comes from a previous build generated by pwabuilder.com