Mac下配置appium android环境学习心得,解决adb could not be found问题

掉进去无数大坑,最后终于成功配置好了。

主要遇到的问题:

  1. 新手小白,不会操作vim编辑.bash_profile
    操作步骤后来发现很简单,使用命令vi ./.bash_profile 打开文件,然后回车,输入i插入路径,完成后按esc,然后输入:wq!退出编辑,最后输入source .bash_profile启用变量即可。

  2. 遇到的第二个问题就是Android home 和 Java home的环境变量配置
    不管我路径是否正确,运行appium-doctor --android命令检查配置的时候abd都是not found,后来发现这样配置可以成功,命令如下:

export ANDROID_HOME=~/Library/Android/sdk/
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home
export PATH=~/bin:$PATH:/usr/local/bin:$ANDROID_HOME/platform-tools/:$JAVA_HOME/bin

这样再运行source .bash_profile后,就可以成功配置了。

参考了很多优快云的博客,总结一下流程,先使用终端安装homebrew,然后通过brew安装了很多所需要的依赖,比如cnpm、appium、appium-doctor、还有Java以及Android studio、jdk等,appium doctor是一个很重要的工具,可以帮助校验环境配置缺少哪些依赖。

### 解决Appium启动`com.tpshop.malls`应用时权限被拒绝且无法找到连接的Android设备的问题 当使用Appium启动`com.tpshop.malls`应用时,如果遇到权限被拒绝以及无法找到连接的Android设备的问题,可能是由于以下几个原因引起的。以下是具体的分析与解决方法: --- #### 1. **检查ADB是否能够识别设备** 在运行Appium之前,确保ADBAndroid Debug Bridge)可以正常检测到已连接的Android设备。可以通过以下命令验证设备状态: ```bash adb devices ``` 如果没有显示任何设备列表或提示“no devices/emulators found”,则需要进一步排查设备连接问题[^8]。 - 确认USB线缆完好无损,并尝试更换其他端口。 - 检查设备驱动程序是否已经正确安装。 - 对于物理设备,确认开启了开发者模式和USB调试功能;对于虚拟机,则需保证其网络配置恰当[^9]。 --- #### 2. **调整Desired Capabilities中的参数设置** 为了使Appium能顺利启动目标应用并获取所需权限,在定义Desired Capabilities时应加入更多细节化的内容。例如: ```json { "platformName": "Android", "deviceName": "your_device_name_or_emulator_id", "appPackage": "com.tpshop.malls", "appActivity": ".SPMainActivity", "automationName": "UiAutomator2", "newCommandTimeout": 0, "autoGrantPermissions": true, "udid": "<Your Device ID>" } ``` 这里的关键点在于: - 设置了`automationName`为`UiAutomator2`,这是较新版本推荐使用的自动化引擎。 - 添加了`newCommandTimeout=0`表示永不超时等待新的指令输入。 - 明确指定了具体设备ID (`udid`) ,这样可避免因存在多个可用装置而导致混淆情况发生[^1]. 另外值得注意的是,“my device name”应当替换为你实际正在使用的那台机器的名字或者是模拟器编号。 --- #### 3. **手动赋予必要权限** 尽管设置了`autoGrantPermissions=true`,但在某些特殊场景下还是有必要借助ADB命令单独给予额外许可权项。比如针对文件读写访问、相机调用等方面的要求可通过下列方式达成目的: ```bash adb shell pm grant com.tpshop.malls android.permission.READ_EXTERNAL_STORAGE adb shell pm grant com.tpshop.malls android.permission.WRITE_EXTERNAL_STORAGE adb shell pm grant com.tpshop.malls android.permission.CAMERA ``` 每条语句分别代表向指定包名的应用授予相应的系统级特权[^4]。 --- #### 4. **重启ADB Server服务** 有时候仅仅是单纯地刷新一下后台进程就能有效改善状况。执行如下操作即可轻松实现这一点: ```bash adb kill-server && adb start-server ``` 这条组合命令先终止现有的server instance然后再重新激活一个新的instance出来,借此达到清理残留记录的效果[^6]。 --- #### 5. **校验防火墙规则及代理设定** 假如依旧找不到对应的android unit,还应该审视是否存在网络安全策略方面的阻碍因素干扰到了正常的通信交互过程。关闭不必要的防护软件或将例外添加进去或许有所帮助[^10]。 --- ### 示例代码片段展示如何初始化驱动器实例 下面给出了一段利用Python绑定库构建webdriver session的例子供参考学习之用: ```python from appium import webdriver desired_caps = { 'platformName': 'Android', 'deviceName': '<Your_Device_Name>', 'appPackage': 'com.tpshop.malls', 'appActivity': '.SPMainActivity', 'automationName': 'UiAutomator2', 'newCommandTimeout': 0, 'autoGrantPermissions': True, 'udid': '<Your Device ID>' } driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) print("Driver initialized successfully.") ``` 上述脚本清楚地展现了整个环境准备工作的全貌,涵盖了从基础平台声明直到最终建立远程控制链接这一系列环节的操作要点[^7]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值