如何在Ubuntu 18.04上安装Android SDK Manager
SdkManager是一个CLI工具,允许用户查看,安装,更新和卸载Android SDK的可用包。
本教程将要教授如何使用终端在Ubuntu 18.04上安装Android SDK Manager。
我们之前,我们已经看到了如何在Ubuntu 16.04上安装Android SDK Manager。
如果我们已经使用了Android Studio,则不需要使用SDKManager,因为我们可以从IDE中管理SDK软件包。
SDKManager工具是在Android SDK工具包中提供的,因此我们将安装后者以便能够使用SDKManager。
安装Android SDK Tools包
在安装首选工具之前,我们需要更新所有包并安装Java,因为Android SDK需要运行。
为此,我们可以按下列顺序运行以下命令:
sudo apt update
sudo apt install default-jdk
一旦java安装在机器上,我们可以运行以下命令来检查Java版本,并确保它已正确安装:
java -version
输出必须如下所示
openjdk version "10.0.1" 2016-04-17 OpenJDK Runtime Environment (build 10.0.1+10-Ubuntu-3ubuntu1) OpenJDK 64-Bit Server VM (build 10.0.1+10-Ubuntu-3ubuntu1, mixed mode)
在成功安装Java安装后,我们可以继续安装Android SDK。
我们需要从Android开发人员下载二进制文件。
如果在浏览器中打开上面的链接,则可以在"仅命令行工具"部分下找到可用的zip文件。
要从终端下载二进制文件,请运行以下命令:
wget https://developer.android.com/studio/#downloads
使用以下命令安装了解压缩
unzip sdk-tools-linux-3859397.zip
将创建一个名为tools的新目录。
要完成安装,我们需要将以下路径添加到我们的路径环境变量。
为此,我们可以在下面运行命令:
export PATH=/home/ubuntu/tools:/home/ubuntu/tools/bin:$PATH
如果我们已将SDK-Tools包下载或者解压缩到其他目录中,请不要忘记使用适当的路径。
要永久添加目录,只需将上面的行添加到~/.bashrc
或者~/.profile
文件。
Android SDK Manager从终端使用
一旦安装了Android SDK,我们就可以使用"SdkManager"工具查看终端的Android SDK的查看,安装,更新和卸载软件包。
已安装列表,可用的包和更新
要列出所有已安装的,可用的软件包以及我们可以运行更新的可用软件包:
sdkmanager - 列表
输出看起来像下面的输出:
Installed packages: Path | Version | Description | Location ------- | ------- | ------- | ------ platform-tools | 27.0.1 | Android SDK Platform-Tools | platform-tools/ tools | 26.0.1 | Android SDK Tools 26.0.1 | tools/ Available Packages: Path | Version | Description ------- | ------- | ------ add-ons;addon-g..._apis-google-15 | 3 | Google APIs add-ons;addon-g..._apis-google-16 | 4 | Google APIs add-ons;addon-g..._apis-google-17 | 4 | Google APIs add-ons;addon-g..._apis-google-18 | 4 | Google APIs add-ons;addon-g..._apis-google-19 | 20 | Google APIs add-ons;addon-g..._apis-google-21 | 1 | Google APIs add-ons;addon-g..._apis-google-22 | 1 | Google APIs add-ons;addon-g..._apis-google-23 | 1 | Google APIs add-ons;addon-g..._apis-google-24 | 1 | Google APIs add-ons;addon-g...e_gdk-google-19 | 11 | Glass Development Kit Preview ... system-images;a...s_playstore;x86 | 2 | Google Play Intel x86 Atom Sys... system-images;a...laystore;x86_64 | 2 | Google Play Intel x86 Atom_64 ... tools | 26.1.1 | Android SDK Tools Available Updates: ID | Installed | Available ------- | ------- | ------ tools | 26.0.1 | 26.1.1 done
运行此命令时,我们可以存在问题。
例如。
命令的输出可以是如下所示的错误:
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema at com.android.repository.api.SchemaModule$SchemaModuleVersion.<init>(SchemaModule.java:156) at com.android.repository.api.SchemaModule.<init>(SchemaModule.java:75) at com.android.sdklib.repository.AndroidSdkHandler.<clinit>(AndroidSdkHandler.java:81) at com.android.sdklib.tool.SdkManagerCli.main(SdkManagerCli.java:117) at com.android.sdklib.tool.SdkManagerCli.main(SdkManagerCli.java:93) Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499) ... 5 more
要解决此问题,请编辑位于安装文件夹的Bin文件夹中的sdkamanger脚本(在我们的情况下,文件的完整路径为/home/ubuntu/tools/bin/sdkamanager
),并在31日添加以下行线:
-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee
编辑后,该行必须如下所示:
DEFAULT_JVM_OPTS='"-Dcom.android.sdklib.toolsdir=$APP_HOME" -XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'
一旦我们编辑了文件并保存,我们可以再次运行sdkmanager --list
命令。
只有安装的软件包将显示,将出现另一个错误消息,这将是如下所示:
Warning: javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty Warning: Failed to download any source lists! Warning: File /home/ubuntu/.android/repositories.cfg could not be loaded.
实际上,上面的消息中有两个单独的错误。
一个与安全连接有关,因为它无法查看可用包并检查软件包以进行更新。
第二个人说SdkManager不能加载/home/ubuntu/.android/reposities.cfg
文件。
要修复错误,我们创建了repositories.cfg文件(如默认情况下尚未创建)并使用--no_https
标志运行sdkmanager --list
命令。
按下列顺序运行以下命令:
touch /home/ubuntu/.android/repositories.cfg
sdkmanager --no_https --list
运行这些命令后,我们将能够在本文中看到上面显示的输出。
使用SDKManager安装,更新和卸载软件包
要安装包,请运行以下命令:
sdkmanager --no_https [package_name]
如果要卸载多个包,则可以将它们添加到文件并使用--package_file标志。
例如
sdkmanager --no_https --package_file=/path/to/package_file
请注意,package_name必须从可用的包列表中,如果我们不使用no_https
标志,我们将在使用sdkmanager --list
命令时抛出相同的错误。
要更新所有包,我们可以运行:
sdkmanager --no_https --update
请注意,如果更新SDK工具,则需要再次编辑/home/ubuntu/tools/bin/sdkamanager
文件,并添加-xx:+ ignoreunrecognizedvmoptions - modules java.se.ee
上面提到的文件将从服务器获取,并将成为默认文件。
要卸载软件包,请运行以下命令:
sdkmanager --uninstall [package_name]
或者
sdkmanager --uninstall --package_file=/path/to/package_file