如何在Ubuntu 18.04上安装Android SDK Manager

时间:2020-03-05 15:32:20  来源:igfitidea点击:

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