首先,经过本人的踩坑,终于成功部署了m1 mac的appium & android
这就立马趁着没忘记录下来:(我劝大家赶紧把这个文章保存成标签!)
注意,还没有下载过brew 或者 npm node的,请先百度这些工具的下载方案,再来部署该自动化。
先看看我电脑的系统:

【一,找个模拟器】
大家不用去试了,什么ye神,什么雷dian,什么助手的,m1芯片一律不行,要么就是不支持,要么就是卡到99%。
这里公布一个最好用的办法,直接下载:
https://github.com/google/android-emulator-m1-preview/releases

然后安装成功后:

启动后流畅度一般,而且关闭的话有概率卡死,但是并不影响我们做自动化。

注意,这个模拟器,未设置的情况下,只支持你用adb install apk包 命令来安装app。
【二,jdk下载】
注意,后面的这个51版本号千万不要太高,我用的是45.

安装之后,别忘了配置环境变量。
这里要说下,mac m1的环境变量文件是:~/.zipfile


可复制,注意后面要用你的jdk的文件路径哦!!!
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH【三,android sdk】
这个大家总是会忘,我给大家梳理一下,先去下载一个android tools。然后下载后,里面会有俩个关键的东西,一个是android文件,一个是uiautomatorviewer文件。(其实后者用不到)
地址:https://www.androiddevtools.cn/


下载解压后,会有这样一个文件夹:(注意你解压后,没有看到platform-tools,build-tools等文件夹才正常。只要确保这个tools文件夹内有android文件即可。

启动这个android。
然后选前三个:
(第一个是更新tools,第二个是下载platform-tools,第三个是下载Build-tools) 我这里因为已经更新过tools了,所以没再显示。

然后点击安装按钮,上面显示的数字和图中并不一样没关系。

然后左边选中你刚刚选的三个文件,右侧点击Accept License 。
我这图里只有一个,别受图的影响。你应该选了刚刚那三个文件。

然后点击install后,就是漫长的等待。等完全安装后,关闭这个东西。再回头看你的文件夹就和我的一样多了。

注意上图,此时的platform-tools内的第一个文件就是传说中的adb。此时你可以去终端输入adb devices,看看是否如图显示:

总之,没有输出说不知道adb是什么东西就算成功了。
紧接着就是配置环境变量:仍然是打开.zprofile文件,然后写好下面的三行。

复制代码,但是注意修改成你自己的sdk根目录哦!!!
export ANDROID_HOME=/Users/wangzijia/Downloads/android-sdk-macosx
export PATH=${PATH}:${ANDROID_HOME}/tools
export PATH=${PATH}:${ANDROID_HOME}/platform-tools退出保存,这个是vi编辑器的基础技术,希望你会这个。
先按ESC,然后输入冒号,然后输入wq! 然后回车。就是强制保存退出了!
这个是linux操作的基础!!!
保存成功后,别忘了重载这个文件:
source .zprofile输入完回车,没报错就算ok。
【四. 下载appium】
可以下载桌面版,也可以命令版。这个看个人需要。我是都下载了。
命令版:
npm install -g appium
npm install -g appium-doctor
然后执行appium-doctor,看看有多少报错.

只要其中的 Home,ANDROID_HOME,JAVA_HOME 没出现小红叉叉,基本就没事了。或者去百度下这些小红×后面的文案,就会很简单的解决掉了。
比如 这行报红×:

那你可以直接下载这个缺失的组件:brew install carthage
之后执行的时候,就是先启动appium,然后运行脚本。
appium正常启动效果:

桌面版也一样:
地址:https://github.com/appium/appium-desktop/releases/tag/v1.17.1-1

下载安装后:

先启动一下,看看有啥报错。注意,此时你应该已经开启了模拟器或者链接了真机,并且确保adb devices可以看到这个设备,状态为:device

然后点击Start Server按钮:

此时就相当于命令行执行了appium命令一样了。只不过输出都在这个桌面版里了。
一般这种时候,如果你有脚本,就执行脚本,就可以了。
但是没有脚本的话,怎么来测试,甚至定位元素呢?
就是点击右上角这个放大镜:

然后好好写这个启动配置:

注意这里我用的是v信的包来进行测试。platformName 和appPackage和appActivitys的值是固定的。
而那个deviceName的值是你通过adb deivces来拿到的设备号:

基本填了这四项,就可以点击右下角的Start Session了。
执行后,启动需要十几秒,这期间这个面板会缓冲卡死一样,别担心,把精力主要放在appium的日志输出上,检查是否有错误,而警告类可以先忽略。

app启动成功后,如图:

此时可以定位其中的各种元素,然后开心的写脚本。
到这,基本上环境算是部署完了,之后写完脚本后,每次都要重启一下appium服务,这是因为要重新建立一个session对话。
我的demo脚本:
from appium import webdriver
import time
desired_caps = {}
desired_caps['platformName'] = 'Android' #设置平台
desired_caps['deviceName'] = 'emulator-5554' #设备id
desired_caps['autoLaunch'] = 'true' #是否自动启动
desired_caps['appPackage'] = 'com.tencent.mm'
desired_caps['appActivity'] = 'com.tencent.mm.ui.LauncherUI'
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
driver.quit()但是appium的这个启动,估计还是会有不少人报错,各种各样的错。大家可以自行百度,也可以公众号内留言咨询。
结尾额外说一下传统的uiautomatorviewer定位工具。它就在我们android sdk文件夹下的tools文件夹的最后一个:

正常启动后是这样的:

然后点击上面的绿色安卓手机按钮,既可以把正在打开的模拟器/设备 的截图弄出来。

不过在这个过程中,你大概率会遇到好几个问题!
问题1:

这个问题是你没有关闭appium服务 导致,所以先去关掉。然后最好重启adb和uiautomatorviewer 。当然如果还报这个错,说明appium的服务或者某个进程仍在干扰,大不了你就重启电脑和模拟器。
问题2:
打开uiautomatorviewer直接卡死,界面图像都没有显示完全。
这是因为你的jdk小版本号太高了导致,这也就是为什么我前面让大家下载jdk1.8 的 51以下的原因。
卸载jdk的话,请千万去百度搜一下彻底卸载的方案,否则卸不干净会容易引发更多问题。
问题3:
仍然报错,然后你点开Details 查看详情显示:
这个问题是因为android8.0以上支持不了导致。需要你下载并替换四个jar包才行。(tools/lib中ddmlib、ddms、ddmuilib 、uiautomatorviewer这四个jar包)
jar包下载地址:(需要积分,加v私聊免费传)
https://download.csdn.net/download/qq_22795513/85057471
替换完成后,重启这个工具即可正常解析!!!
当然还有一些麻烦的办法:
比如,手动用adb命令来截图和uix文件,截图到手机的临时本地中,然后再用adb命令把截图和uix上传到你的电脑文件夹内,然后再用uiautomatorviewer去打开这俩个,也一样可以万能的解决解析问题!
具体命令:
# 截取设备当前页面的uix文件
adb shell uiautomator dump /sdcard/test.uix
#上传到你电脑的某个文件夹
adb pull /sdcard/test.uix 你电脑本地地址/test.uix
# 截取设备当前页面的png图片
adb shell screencap -p /sdcard/test.png
# 上传到你电脑的某个文件夹
adb pull /sdcard/test.png 你电脑本地地址/test.png当这个俩个图成功储存到你的电脑中,你用工具打开即可:

好了,暂时说到这里。欢迎继续收听!