1、通过 AS 创建 AVD

这一步无需多说,在 AS 内创建需要的模拟器即可,然后就可以关掉 AS 了

2、一行命令

无论是 Mac 或是 Win 都可以通过自带终端从外部启动 Android SDK 目录下的 emulator 。

首先通过终端进入 emulator 目录(位于 Android SDK 目录下)

$ cd /Users/skyrin/Library/Android/sdk/emulator/

然后我们通过终端查看一下创建好的 AVD 名称,后面会用到

$ emulator -list-avds

正常情况下就会显示刚刚创建好的 AVD 名称(例如  Nexus_5_API_27)

通过如下命令启动 AVD

$ emulator -netdelay none -netspeed full -avd Nexus_5_API_27

-netdelay none                       不开启网络延迟仿真

-netspeed full                         不做网络限速

-avd Nexus_5_API_27            指定 AVD 名称

更多选项使用 -help 查看

可以看到我的 AS 并没有启动而 AVD 从外部通过emulator成功启动

3、制作启动脚本

通过将启动命令封装成脚本即可一键执行任务,而非每次都通过终端命令执行,封装的步骤也很简单,只需要将相关命令放在当前平台可以识别的脚本类型文件中即可。需要注意的是在脚本中应该使用完整路径以便于系统可以直接找到emulator,所以,完整的脚本内容应该是下面这个样子(请注意更换用户名)

/Users/skyrin/Library/Android/sdk/emulator/emulator -netdelay none -netspeed full -avd Nexus_5_API_27

在 Win 平台下通过文本工具记录启动命令并将其存储为.bat格式文件即可双击执行。

在 Mac 平台下通过 AppleScript 来执行:

  • 启动脚本编辑器

编写 AppleScript 脚本,存储为应用程序即可

tell current application
	do shell script "/Users/luoyanlin/Library/Android/sdk/emulator/emulator -netdelay none -netspeed full -avd Nexus_5_API_27"
end tell

然后在桌面上就可以像应用程序一样双击打开了😎

More

AppleScript 的强大远不止启动一个 AVD 这么简单,它还可以执行各种复杂的任务,提升你的工作效率,下面是我常用的几个脚本

  • 清空下载目录(移动文件到垃圾桶)
  tell application "Finder"
  	# 设置 “Downloads” 目录路径为 dls
  	set dls to folder "Downloads" of (path to home folder)
  	# 获取 dls 目录下文件个数
  	set itemCount to count of items in the dls
  	
  	if itemCount > 0 then
      	# 如果存在文件则删除(移动文件到垃圾桶)
  		delete (every file of dls)
  		delete (every folder of dls)
  	else
          # 没有文件就发出“咚咚”两声
  		beep 2
  	end if
  end tell
  • 永久清除下载目录
  tell application "Finder"
  	# 设置 “Downloads” 目录路径为 dls
  	set dls to folder "Downloads" of (path to home folder)
  	# 获取 dls 目录下文件个数
  	set itemCount to count of items in the dls
      
  	if itemCount > 0 then
      	# 如果存在文件则删除(移动文件到垃圾桶)
  		delete (every file of dls)
  		delete (every folder of dls)
  	else
          # 没有文件就发出“咚咚”两声
  		beep 2
  	end if
  	# 清理垃圾桶
  	set itemCount to count of items in the trash
  	if itemCount > 0 then
  		empty trash
  	end if
  end tell