提升Android原生模拟器速度的方法
在Android SDK Manager中勾选中Inter X86 Emulator Accelerator (HAXM installer),然后安装它
查看支持的模拟器Android版本号
1 | android list |
显示如下:
1 | TaoYi-Mac:~ taoyi$ android list |
创建AVD模拟器
1 | android create avd -n TestDevices001 -t 1 -b armeabi-v7a |
1 | -t --target # 新的AVD的Target ID(必须) |
查看AVD是否创建成功
1 | android list avd |
结果如下,就说明创建成功了
1 | TaoYi-Mac:~ taoyi$ android list avd |
启动AVD
1 | TaoYi-Mac:~ taoyi$ emulator -avd TestDevices001 |
1 | TaoYi-Mac:~ taoyi$ emulator -port 5676 -avd TestDevices001 -no-window -no-skin -no-audio -no-boot-anim & |
删除AVD
1 | android delete avd -n TestDevices001 |
异常处理
sdkmanager
命令执行,提示Could not create settings
问题处理
错误提示如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14$ ./sdkmanager --list
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即使设置了
ANDROID_SDK_HOME
环境变量,也把sdkmanager
所在目录加入到了PATH
,仍然会报同样的错误临时解决方案:
在执行sdkmanager
命令的时候,加上--sdk_root=...
的参数1
2
3./sdkmanager --list --sdk_root=~/Downloads/tools/bin
[=======================================] 100% Computing updates...
Available Packages:这样就能得到正确的输出了,但是每次都要加上
--sdk_root
也不是长久之计。根本解决方案:
一句话描述即为:通过下载的commandlinetools-mac-6609375_latest.zip
文件解压后,生成的目录中的sdkmanager
,重新下载生成整个androidsdk
目录,并加入到环境变量中,然后删除下载解压的目录,使用重新生成的目录。
下载创建新的基础
androidsdk
目录1
2
3
4
5
6
7
8
9
10
11
12
13
14
15$ cd ~/androidsdk
$ unzip commandlinetools-mac-6609375_latest.zip
$ ll
commandlinetools-mac-6609375_latest.zip
tools
$ cd tools/bin
$ ./sdkmanager --sdk_root=~/androidsdk/tools "cmdline-tools;latest"
$ cd ~/androidsdk/cmdline-tools/latest
$ ll
total 216
-rwxr-xr-x@ 1 shadow staff 83K 7 2 10:59 NOTICE.txt
drwxr-xr-x@ 7 shadow staff 224B 7 2 10:59 bin
drwxr-xr-x@ 22 shadow staff 704B 7 2 10:59 lib
-rw-r--r--@ 1 shadow staff 17K 7 2 10:59 package.xml
-rwxr-xr-x@ 1 shadow staff 84B 7 2 10:59 source.properties通过以上命令,即生成了可用的
sdkmanager
命令可用的androidsdk
目录设置环境变量
设置环境变量的系统变量,增加一个
ANDROID_SDK_HOME
,设置为~/androidsdk
设置环境变量的用户变量,在PATH
中增加$ANDROID_SDK_HOME/cmdline-tools/latest/bin
最后就可以删除之前下载解压的tools
目录了1
2$ sdkmanager --version
26.1.1然后命令就正常了,也不需要
--sdk_root
参数了
emulator
命令执行,提示No such file or directory
问题处理
SDK根目录如下:
1
2
3
4
5
6
7
8
9
10
11
12# shadow @ kickseed in ~/androidsdk [18:55:54]
$ ll
total 36K
drwxrwxr-x 3 shadow shadow 4.0K Jul 14 11:52 build-tools
drwxrwxr-x 3 shadow shadow 4.0K Jul 14 11:32 cmdline-tools
drwxrwxr-x 7 shadow shadow 4.0K Jul 14 11:48 emulator
drwxrwxr-x 2 shadow shadow 4.0K Jul 14 11:52 licenses
drwxrwxr-x 3 shadow shadow 4.0K Jul 14 11:46 patcher
drwxrwxr-x 3 shadow shadow 4.0K Jul 14 11:49 platforms
drwxrwxr-x 5 shadow shadow 4.0K Jul 14 11:45 platform-tools
drwxrwxr-x 3 shadow shadow 4.0K Jul 14 11:52 system-images
drwxrwxr-x 6 shadow shadow 4.0K Jul 16 18:54 tools报错信息如下:
1
emulator: error while loading shared libraries: libtcmalloc_minimal.so.4: cannot open shared object file: No such file or directory
1
2which emulator
/home/shadow/androidsdk/tools/emulator执行
which emulator
命令,发现调用的是tools
目录下的emulator
,导致无法找到创建的avd
,因为安卓虚拟机对应的命令路径是在emulator
目录下。
所以我们需要让默认调用的emulator
命令变成emulator
目录下的emulator
命令
方法一:调整环境变量,让初始化环境变量的时候,tools
目录位于emulator
目录之前,这样就能确保emulator
目录下的emulator
命令覆盖tools
目录下的命令
方法二:直接删除tools
目录下的emulator
命令文件