Appium Appium-Android 环境搭建及问题整理

阿廉 · 2018年11月26日 · 最后由 menger11 回复于 2019年02月28日 · 2732 次阅读

前言

本来不想写这篇贴子,因为网上有很多介绍 appium 环境安装的文章,但是学院的同学们环境多种多样,遇到的问题也是五花八门,而且问题一个套一个,所以写篇贴子整理一下。

环境要求

Mac Windows
JDK JDK
Node.js Node.js
android-sdk android-sdk
python 2.7(自带) python 2.7
.net framework 2.0
VCbuild

JDK

这个自己下载安装配置就行,我这里不过多的说如何配置了,参考百度经验,我个人目前用的 1.8。
官网下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
Mac 配置参考:https://jingyan.baidu.com/article/908080221f3cfefd91c80fbf.html
Windows 配置参考:https://jingyan.baidu.com/article/6dad5075d1dc40a123e36ea3.html

Node.js

我是官网下载安装包,官网地址:https://nodejs.org/zh-cn/
选择自己平台的安装包,安装即可。安装完之后 node 和 npm 就都装好了。
需要注意的是下载 “长期支持版”;如果下载最新版后面会遇到很多问题。
当然 Mac 也可以用 brew 安装~

Android-sdk

两种方式:可以直接下载,配置 SDK;也可以下载 Android-Studio 之后配置 SDK。
我选择下载 Android-Studio,因为安装配置完后 Android 应用所需的所有工具基本就齐了。
Android-Studio 下载地址:http://www.android-studio.org/

环境变量配置

1.先查看一下 SDK 本地路径,打开 Android-Studio,Configure-SDK Manager;

SDK 路径:

2.配置 SDK 环境变量

  • Mac:
    1.启动 Terminal 终端工具
    2.输入 cd ~/ 进入当前用户的 home 目录
    3.创建:touch .bash_profile
    4.打开并编辑:open .bash_profile
    5.在文件中写入以下内容:

    ANDROID_HOME=/Users/xxx/Library/Android/sdk
    export PATH=$ANDROID_HOME/tools:$PATH
    export PATH=$ANDROID_HOME/tools/bin:$PATH
    export PATH=$ANDROID_HOME/emulator:$PATH
    export PATH=$ANDROID_HOME/platform-tools:$PATH
    export PATH=$ANDROID_HOME/build-tools/xx.x.x:$PATH
    

    注:ANDROID_HOME 请根据自己的 sdk 路径配置,xx.x.x 是该目录下版本号文件夹名称。
    6.执行如下命令立即生效:source .bash_profile
    7.验证:分别输入 adb 回车;未显示 command not found,说明此命令有效,环境变量设置完成。

  • Windows:
    新建用户变量 ANDROID_HOME,变量值填写自己环境 SDK 路径;

Path 变量,在变量值中添加以下代码:
%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\tools\bin;%ANDROID_HOME%\emulator;%ANDROID_HOME%\build-tools\xx.x.x(填自己的);

Python

Mac 自带 python,Windows 需要下载安装;
注意:写这篇文章时,需要安装 2.x 版本,不然 npm 安装 appium 时会报错。
官网地址:
https://www.python.org/downloads/
Mac 安装配置参考(python2,3 共存):
https://blog.csdn.net/u014259820/article/details/81023224
Windwos 安装配置参考(python2,3 共存):
https://www.cnblogs.com/thunderLL/p/6643022.html

.net framework 2.0

一般都已安装好了,如果没有安装的可以下载离线安装包:
https://www.microsoft.com/zh-CN/download/details.aspx?id=21

VCbuild

一般 Windows 也有,如果安装 appium 提示:

请运行:

npm install --global --production windows-build-tools

Appium-server 安装

三种方法:

在安装之前查看一下 appium 版本,运行 npm view appium versions

  • 第一种:
    npm install -g appium
    此方法还得科学上网,如果不方便直接看第二种

  • 第二种:
    设置 npm 镜像源:
    npm config set registry https://registry.npm.taobao.org
    再执行:
    npm install -g appium

  • 第三种 (个人推荐这种):
    先安装 cnpm:
    npm install -g cnpm --registry=https://registry.npm.taobao.org
    用 cnpm 安装 appium
    cnpm install -g appium
    注:cnpm 安装不要科学上网

安装后执行:
appium --session-override

Appium-Desktop 安装

有很多同学也搞不清楚,搞不清楚 Appium-Desktop 和上面的 Appium-server 有什么区别;
整体上看 Appium-Desktop 它是一个集成包,包含:appium-server 和 inspector;inspector 功能很多:定位元素、录制脚本等等;Appium-Desktop 比较适合初学者。
下载地址:
https://github.com/appium/appium-desktop/tags
选择版本和自己的平台,下载对应的包安装即可。

安装和使用常见问题

  • 1.windows 运行 npm install -g appium,报Error:Command failed:D:\software_test\Python\Python 37\python.EXE -c import sys:print “%s.%s.%s” $ sys.version_info[:3];,如图:

解决方法:
切换或安装 python 版本为 2.x 即可。

  • 2.windows 运行 cnpm install -g appium,报MSBUILD:error MSB3428:未能加载Visual C++ 组件 "VCbuild.exe",如图:

解决方法:
执行命令npm install --global windows-build-tools,安装时间比较长需耐心等待。

  • 3.windows10 显示已经安装好了 cnpm 和 appium:

但是在命令行运行 cnpm 或 appium 提示:

解决方法:
找到 “C:\Users\xxxx\AppData\Roaming\npm” 路径,把此路径手动添加到环境变量即可(xxxx 为你系统用户名)。

  • 4.Windwos,Appium-Desktop 打开白屏:

解决方法:
设置兼容模式运行,选择 Appium-Desktop 右键,属性 - 兼容性,勾选以兼容模式运行这个程序,选择 “Windows 7”;

  • 5.Appium-Desktop,inspector 启动报:An unknown server-side error occurred while processing the command.Origina error:Could not find a connected Android device.

解决方法:
这个是因为没找到 SDK 路径或者你 Appium-desktop 的 ANDROID_HOME 与你系统的 adb 运行的实际路径不一致,查看一下 adb 路径;
mac:which adb
windows:where adb
ANDROID_HOME 设置成相同路径即可:

6.inspector 启动报``An unknown server-side error occurred while processing the command.Original error:Cannot start the 'xxxxxx'application.

解决方法:
查看一下 appPackage,是否多了空格或者填写错误,修改正确即可。

总结

以上是近期经常遇到的问题,希望对大家有帮助,如果有不对的地方,还望能够指出🙏
之前还有一些奇葩问题我得好好找找 “史料”,之后补充进去;如果遇到上面没有的问题,可以留言,我们一起解决。共同努力,一起填坑。
本贴主要是 appium-android 环境安装,如果你需要 ios,请参考 xinxi 同学写的 Appium iOS 环境搭建篇

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 8 条回复 时间 点赞

大神,麻烦请教个问题

liuli 回复

你的安卓版本是多少?
还有,请检查一下你的 appium 脚本中的 android 相关配置是否正确?

liuli 回复

😅 谈不上大神~~
是启动 inspector,时候报错吗?
你先 adb shell,看下手机/data/local/tmp/目录,有没有 AppiumBootstrap.jar 包吧。
如果没有或者名称不对,你复制你日志路径下的 AppiumBootstrap.jar 到该路径,或者改下名。
然后说下你启动场景,环境 appium-desktop 什么版本,真机 Android 什么版本?

liuli 回复

你先试试;不行的话,勾选仅楼主可见,告诉我微信。加你微信咱们远程搞一下。

Appium server 1.4.1,以及安装 Appium-Desktop 1.8.2,这两个会有冲突么?环境变量配置的是 Appium server 1.4.1 的路径

唐吉柯德 回复

一般不会有冲突。
如果一起启有冲突,可能是端口号相同;
话说你 server 版本旧,可以更新一下。。现在最新版本到 1.10.0-bata.5 了;可以用 npm view appium version 看下。

大神,这个可能是什么问题

[ADB] Running 'D:\Android\android-sdk\platform-tools\adb.exe -P 5037 -s c6c5c89d shell appops set io.appium.settings android:mock_location allow'
[ADB] Running 'D:\Android\android-sdk\platform-tools\adb.exe -P 5037 -s c6c5c89d shell appops set io.appium.settings android:mock_location allow'
[AndroidDriver] Unable to set mock location for app 'io.appium.settings': Error executing adbExec. Original error: 'Command 'D:\Android\android-sdk\platform-tools\adb.exe -P 5037 -s c6c5c89d shell appops set io.appium.settings android:mock_location allow' exited with code 4294967295'; Stderr: 'Security exception: uid 2000 does not have android.permission.UPDATE_APP_OPS_STATS.
[AndroidDriver]
[AndroidDriver] java.lang.SecurityException: uid 2000 does not have android.permission.UPDATE_APP_OPS_STATS.
[AndroidDriver] at android.app.ContextImpl.enforce(ContextImpl.java:1810)
[AndroidDriver] at android.app.ContextImpl.enforcePermission(ContextImpl.java:1823)
[AndroidDriver] at com.android.server.AppOpsService.setMode(AppOpsService.java:674)
[AndroidDriver] at com.android.server.AppOpsService.onShellCommand(AppOpsService.java:2019)
[AndroidDriver] at com.android.server.AppOpsService$Shell.onCommand(AppOpsService.java:1793)
[AndroidDriver] at android.os.ShellCommand.exec(ShellCommand.java:96)
[AndroidDriver] at com.android.server.AppOpsService.onShellCommand(AppOpsService.java:1967)
[AndroidDriver] at android.os.Binder.shellCommand(Binder.java:594)
[AndroidDriver] at android.os.Binder.onTransact(Binder.java:492)
[AndroidDriver] at com.android.internal.app.IAppOpsService$Stub.onTransact(IAppOpsService.java:341)
[AndroidDriver] at android.os.Binder.execTransact(Binder.java:697)'; Code: '4294967295'
[Logcat] Starting logcat capture
[UiAutomator2] Forwarding UiAutomator2 Server port 6790 to 8200

desktop 版本没安装成功😭
帮忙看下行吗😭 😭

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册