-
-
Save jjvillavicencio/18feb09f0e93e017a861678bc638dcb0 to your computer and use it in GitHub Desktop.
cd /home/<user>/ | |
sudo apt-get install unzip | |
wget https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip | |
unzip sdk-tools-linux-4333796.zip -d Android | |
rm sdk-tools-linux-4333796.zip | |
sudo apt-get install -y lib32z1 openjdk-8-jdk | |
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 | |
export PATH=$PATH:$JAVA_HOME/bin | |
printf "\n\nexport JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64\nexport PATH=\$PATH:\$JAVA_HOME/bin" >> ~/.bashrc | |
cd Android/tools/bin | |
./sdkmanager "platform-tools" "platforms;android-26" "build-tools;26.0.3" | |
export ANDROID_HOME=/home/<user>/Android | |
export PATH=$PATH:$ANDROID_HOME/tools | |
export PATH=$PATH:$ANDROID_HOME/platform-tools | |
printf "\n\nexport ANDROID_HOME=/home/<user>/Android\nexport PATH=\$PATH:\$ANDROID_HOME/tools\nexport PATH=\$PATH:\$ANDROID_HOME/platform-tools" >> ~/.bashrc | |
android update sdk --no-ui | |
sudo apt-get install gradle | |
gradle -v | |
adb start-server |
sudo update-alternatives --config java
Solved my problem, thank you!
Version with no var replacement demanded:
https://gist.github.com/leandrocrs/8b401031bc59a13e3446d593d4b0f7db
If downloading the up-to-date cmdline-tools from the Android Studio website, you'll need to change the directory structure in order for you to be able to run the ./sdkmanager
.
/home/ben/cmdline-tools/bin -> /home/ben/Android/cmdline-tools/latest/bin
worked for me.
https://stackoverflow.com/questions/65262340/cmdline-tools-could-not-determine-sdk-root
I got the below exception when I run ./sdkmanager "platform-tools" "platforms;android-26" "build-tools;26.0.3". Any Idea how I can resolve this?
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
at com.android.repository.api.SchemaModule$SchemaModuleVersion.(SchemaModule.java:156)
at com.android.repository.api.SchemaModule.(SchemaModule.java:75)
at com.android.sdklib.repository.AndroidSdkHandler.(AndroidSdkHandler.java:81)
at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:73)
at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:48)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
... 5 more
I got the below exception when I run ./sdkmanager "platform-tools" "platforms;android-26" "build-tools;26.0.3". Any Idea how I can resolve this?
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
at com.android.repository.api.SchemaModule$SchemaModuleVersion.(SchemaModule.java:156)
at com.android.repository.api.SchemaModule.(SchemaModule.java:75)
at com.android.sdklib.repository.AndroidSdkHandler.(AndroidSdkHandler.java:81)
at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:73)
at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:48)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
... 5 more
Install jdk 8
printf "\n\nexport ANDROID_HOME=/home//Android\nexport PATH=$PATH:$ANDROID_HOME/tools\nexport PATH=$PATH:$ANDROID_HOME/platform-tools" >> ~/.bashrc
Be careful! When you run this command multiple times it will end up making .bashrc larger and larger.
Ideally this cmd would contain some if to test whether .bashrc was already updated before.
Help me
i'm pool and we need a moneys please help me i'm myanmar please help My country😭
Thank you all for this! My version of the scripts after looking into all the comments...
sudo apt-get update
cd
sudo apt-get install unzip zip
wget https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip
unzip sdk-tools-linux-4333796.zip -d Android
rm sdk-tools-linux-4333796.zip
sudo apt-get install -y lib32z1 openjdk-8-jdk
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin
printf "\n\nexport JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64\nexport PATH=\$PATH:\$JAVA_HOME/bin" >> ~/.bashrc
cd Android/tools/bin
### check latest platform and build-tools versions (29, 29.0.2)
./sdkmanager --install "platform-tools" "platforms;android-29" "build-tools;29.0.2"
export ANDROID_HOME=~/Android
export PATH=$ANDROID_HOME/tools:$PATH
export PATH=$ANDROID_HOME/tools/bin:$PATH
export PATH=$ANDROID_HOME/platform-tools:$PATH
printf "\n\nexport ANDROID_HOME=~/Android\nexport PATH=\$PATH:\$ANDROID_HOME/tools\nexport PATH=\$PATH:\$ANDROID_HOME/platform-tools" >> ~/.bashrc
./sdkmanager --update
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
### check latest grade version
sdk install gradle 5.5.1
gradle -v
### run "adb start-server" in powershell
Excellent script thanks for sharing. I think you can update it by replacing /home/<user>/
with $HOME
. Example:
export ANDROID_HOME="$HOME/Android"
And ANDROID_HOME
environment variable was deprecated. It's recommended write as:
export ANDROID_HOME="$HOME/Android"
export ANDROID_SDK_ROOT="$ANDROID_SDK_ROOT"
THIS WORKS!!!! FINALLY!!!
lol
Jokes aside, I tried 6+ different things which led to dozens of StackOverflow Questions, GitHub Threads, etc. and all of them failed except this beautiful gem!
@jjvillavicencio Thank you! (Gracias!) @unicornlab-brylleg Thank you for the update!
is this "sdk-tools-linux-4333796.zip" thing the latest version? anyone knows where to check?
no @rizkysyazuli, the last version is "commandlinetools-linux-7302050_latest.zip", you can check how install here too:
https://gist.github.com/jason-s-yu/30375db45c1f71c1259e042d216e4bd3
Remove all paths with spaces in WSL by adding this line in /etc/profile
PATH=$(echo $PATH | sed 's|:/mnt/[a-z]/[a-z_]*\?/\?[A-Za-z]* [A-Za-z]* \?[A-Za-z]*\?[^:]*||g')
There are other tools such as buildroot that do not work when there are spaces in PATH.
Wonderful!
So, after successfully installing, how do you resolve references while interacting with the code?
You can easily replace <user>
with $USER
in the script. That will make things easier since we don't have to replace the any more... It will automatically get the current user ;)
This worked flawlessly thank you so much!
Thank you, was useful!
java 11 version?
You can easily replace
<user>
with$USER
in the script. That will make things easier since we don't have to replace the any more... It will automatically get the current user ;)
+1000000
Also, the android
call on L16 can be changed to sdkmanager
, since android
as a command is deprecated
Thank you so much!!!
@Kousthubh02
/usr/bin/java
is a symlink. I get the following:
ls -l $(which java)
lrwxrwxrwx 1 root root 22 Jan 28 23:07 /usr/bin/java -> /etc/alternatives/java
ls -l /etc/alternatives/java
lrwxrwxrwx 1 root root 43 Jan 28 23:07 /etc/alternatives/java -> /usr/lib/jvm/java-17-openjdk-amd64/bin/java
echo $JAVA_HOME
/usr/lib/jvm/java-17-openjdk-amd64
what does echo $JAVA_HOME
give you?
You may need to add export JAVA_HOME=\path\to\java\install\location
to your ~/.bashrc
file and add export PATH=\path\to\java\install\location\bin;"$PATH"
as well.
@5p0ng3b0b please can you confirm is the original gist above still works Aug 15th, 2024
I have been following different threads and gists referencing StackOverflow, in the StackOverflow, they are saying different things
for example you are suppose to move tools into cmdline-tools, only for an updated comment saying a new thing
i am so confused right now
change line 11 form:
./sdkmanager "platform-tools" "platforms;android-26" "build-tools;26.0.3"
to
./sdkmanager "platform-tools" "platforms;android-29" "build-tools;29.02
follow versionplatforms;android
andbuild-tools
at https://reactnative.dev/docs/environment-setup