Mac环境变量的配置和Appium的安装问题

这篇文章主要是记录自己在工作中遇到的问题,以备日后遇到同类问题后能够快速解决。也希望这篇文章能对一些技术小白有一些帮助。讲解如有不当之处还请指出,共同进步,在此感谢。

因国内不是太好下载appium,首先附上appium的网盘下载链接:

Appium下载链接,密码: e7dr

我们在工作中有时会与环境变量打交道,什么Android环境变量,JAVA环境变量,对于小白来说,真的挺头疼得。网上更多的是关于Windows的配置方法,对于Mac的配置方法比较少,有的一些也似乎有时解决不了问题。

这里所提到的环境变量的配置方法是在我在安装Appium时遇到的问题,一个是“Android-HOME not set”,另一个是“JAVA-HOME not set”。我们在安装Appium时可能会有很多问题问题,但是有些问题都是因为这两个环境变量没有配置导致的,所以只要将这两个问题解决,一连带几个问题都不存在,问题如截图:

如图,有5个报错,但是有4个问题都是Android的环境变量问题,还有一个是JAVA环境变量问题

我们在运行Appium 的时候是需要多个文件支持的,比如JAVA环境和Android环境。如果Appium找不到这些环境,就会报错。所以我们需要配置这些环境变量。

首先打开终端,输入命令:open .bash_profile或者vim ~/.bash_profile(在此之前你必须已经创建了这样一个.bash_profile文件,如果没有,请创建:touch .bash_profile).

使用这两个命令都可以直接进入profile文件:

使用open .bash_profile金可以直接进行编辑,编辑完以后command+s进行保存即可;

使用vim ~/.bash_profile则不能直接编辑,此时点按字母“i”进入编辑模式,然后就可以对文本进行编辑,编辑完以后,点按“esc”键,即可退出编辑模式,然后输入“:wq”即可保存退出文本。如果你不太会使用Vim文本编辑器,可以在终端输入 

vimtutor

 查看Vim自带教程。

当我们进入到文本编辑器以后,就可以配置Android和JAVA环境变量了,前提是你已经安装了Android和Java的开发环境。可能每个人的环境变量不一样,一般你没有自己改变其位置,这些变量位置是一样的,如图:

该图中的最后两行就是我配置的两个环境变量,如果你没有修改其位置,就可以复制使用了,为了方便大家复制(因为我觉得这里没必要手写),给出文本(其中guxuecheng是我的用户名,换成你自己的即可):

export ANDROID_HOME=/Users/guxuecheng/Library/Android/sdk

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home

。这里说了,是在安装Appium时缺少环境变量的问题,但是我们在安装Appium时一般还会遇到其他问题,这里我把我遇到的问题一并列出,并给出解决方法:


错误一、[Error:Couldnot detect MacOS XVersion from sw_vers output:'10.12.4']

如图:

截图中给出的是10.12,但是实际中遇到的一般是10.12.4.

这个问题比较麻烦,解决起来还是比较麻烦的。我会列出详细步骤,一定照做,不要输错,否则很麻烦:

第一步,输入命令:vim/Applications/Appium.app//Contents/Resources/node_modules/appium/node_modules/appium-support/build/lib/system.js

做如下修改:

找到下面几行代码:

case 10:

_arr = ['10.8', '10.9', '10.10', '10.11'];

_i = 0;


改为:

case 10:

_arr = ['10.8', '10.9', '10.10', '10.11','10.12'];

_i = 0;


第二步,输入一下命令:vim/Applications/Appium.app//Contents/Resources/node_modules/appium/node_modules/appium-support/lib/system.js

做如下修改(这里需要修改两处):

修改一:

找到如下代码:

try {

stdout = (await exec('sw_vers', ['-productVersion'])).stdout;

}

改为:

try {

stdout = (await exec('sw_vers', ['-productVersion'])).stdout.trim();

}

修改二:


找到如下代码:

for (let v of ['10.8', '10.9', '10.10', '10.11']) {

if (stdout.indexOf(v) === 0) { return v; }

}

改为:

for (let v of ['10.8', '10.9', '10.10', '10.11','10.12']) {

if (stdout.indexOf(v) === 0) { return v; }

}



第三步:输入以下命令:vim/Applications/Appium.app//Contents/Resources/node_modules/appium-support/build/lib/system.js

找到如下代码:

case 10:

_arr = ['10.8', '10.9', '10.10', '10.11'];

_i = 0;

修改为:

case 10:

_arr = ['10.8', '10.9', '10.10', '10.11','10.12'];

_i = 0;

第四步:输入以下命令:

vim/Applications/Appium.app//Contents/Resources/node_modules/appium-support/lib/system.js

这里需要做两处修改

第一处:

找到如下代码:

try {

stdout = (await exec('sw_vers', ['-productVersion'])).stdout;

}

改为:

try {

stdout = (await exec('sw_vers', ['-productVersion'])).stdout.trim();

}

第二处:

找到如下代码:

for (let v of ['10.8', '10.9', '10.10', '10.11']) {

if (stdout.indexOf(v) === 0) { return v; }

}

改为:

for (let v of ['10.8', '10.9', '10.10', '10.11','10.12']) {

if (stdout.indexOf(v) === 0) { return v; }

}

错误一解决办法出处:https://stackoverflow.com/questions/40129794/how-to-fix-error-could-not-detect-mac-os-x-version-from-sw-vers-output-10-12。


错误二、Cannot read property ‘replace’ of undefined

错误如图:

这个问题解决方法应该是最为简单的,就是因为你没有安装node.js.把这个安装上就好了。。安装好之后可以在终端输入:node -v。查看node安装成功与否,如果返回了node的版本,则说明安装成功。


解决所有问题以后再次点击下图1处:

如果出现下图2处的信息,说明安装Appium成功,可以进行接下来的学习了:


错误三:Carthage was NOT found!

这个原因是因为缺少Carthage(这是个啥东西?自己Google吧),解决办法就是装上他:

brew update

brew install update


补充:

一、环境变量PATH的语法解释:

${}为占位符,${PATH} 和 $PATH等效

=前后不能有空格

: 为分隔符(等同于windows环境变量中的 ; )

PATH=$PATH:xxx 可以理解为 " PATH+=xxx "(当然不能这么写)

PATH=xxx:$PATH这种写法亦可,只是前后顺序的问题;


二、bash 和 zsh

linux 和 unix 两个操作系统默认的 shell 都是 bash,所以我在文章开始配置环境变量也是用的 bash,这样我也用了很长一段时间,直到

今天我发现我的 adb 命令居然都用不了了,检查了一下环境变量也没错,无奈请教了一下公司大牛,原来是因为我的环境变量都使用了 .zshrc文件 ,原来的 .bash_profile配置文件就不起作用了。为什么会这样呢?原来是因为之前我一个同事在我电脑上把我的bash 环境变量切换到了 zsh。好吧,zsh 说是比 bash 更强大,那我就用 zsh 吧。

查看当前电脑使用的是哪一个 shell,使用命令:

echo $SHELL

命令echo 的作用是:输出指定的字符串或者变量,这里就是输出变量 shell 的值, 一定要是大写,且要以$开头。还有类似的命令比如 echo $PATH,该命令的作用就是显示当前path环境变量。

切换 bash:

chsh -s /bin/bash

切换 zsh:

chsh -s /bin/zsh

zsh 环境变量配置文件:

vim ~/.zshrc 

查看zsh环境变量:

cat ~/.zshrc(该命令只能在终端查看环境变量无法编辑)


bash环境变量配置文件:

vim  ~/.bash_profile

or

open ~/.bash_profile

推荐一篇写环境变量的文章

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,716评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,558评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,431评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,127评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,511评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,692评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,915评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,664评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,412评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,616评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,105评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,424评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,098评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,096评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,869评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,748评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,641评论 2 271

推荐阅读更多精彩内容