简单的理解,swt.jar 所在目录没有配置环境变量
C:\Users\yinzh>monkeyrunner
SWT folder '..\framework\x86_64' does not exist.
Please set ANDROID_SWT to point to the folder containing swt.jar for your platform.
配置 ANDROID_SWT 的环境变量,swt.jar 在 %ANDROID_HOME%\tools\lib\x86_64 里面(ANDROID_HOME:C:\Users\yinzh\AppData\Local\Android\Sdk)
简单的理解,找不到 monkeyrunner-26.0.0-dev.jar
C:\Users\yinzh>monkeyrunner
Error: Unable to access jarfile lib\monkeyrunner-26.0.0-dev.jar
先设置 APP_HOME 的环境变量 %ANDROID_HOME%\tools\
然后找到 monkeyrunner.bat 的目录: C:\Users\yinzh\AppData\Local\Android\Sdk\tools\bin,复制一份 monkeyrunner.bat,再然后修改原来的 monkeyrunner.bat, 在 :JarFileOk 前面加入
rem my change
set frameworkdir=%APP_HOME%\lib
简单的理解,在 ..\framework\ 目录下找不到 adb.exe
C:\Users\yinzh>monkeyrunner
05:34:07 E/adb: Cannot run program "..\framework\adb.exe": CreateProcess error=2, 系统找不到指定的文件。
Exception in thread "main" java.lang.IllegalArgumentException: java.io.IOException: Cannot run program "..\framework\adb.exe": CreateProcess error=2, 系统找不到指定的文件。
at com.android.ddmlib.AndroidDebugBridge.<init>(AndroidDebugBridge.java:600)
at com.android.ddmlib.AndroidDebugBridge.createBridge(AndroidDebugBridge.java:378)
at com.android.chimpchat.adb.AdbBackend.<init>(AdbBackend.java:69)
at com.android.chimpchat.ChimpChat.createBackendByName(ChimpChat.java:78)
at com.android.chimpchat.ChimpChat.getInstance(ChimpChat.java:51)
at com.android.monkeyrunner.MonkeyRunnerStarter.<init>(MonkeyRunnerStarter.java:60)
at com.android.monkeyrunner.MonkeyRunnerStarter.main(MonkeyRunnerStarter.java:188)
Caused by: java.io.IOException: Cannot run program "..\framework\adb.exe": CreateProcess error=2, 系统找不到指定的文件。
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at com.android.ddmlib.AndroidDebugBridge$1.run(AndroidDebugBridge.java:658)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.io.IOException: CreateProcess error=2, 系统找不到指定的文件。
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(ProcessImpl.java:453)
at java.lang.ProcessImpl.start(ProcessImpl.java:140)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
... 2 more
monkeyrunner.bat 最后一条语句,绑定了 adb 的目录 Dcom.android.monkeyrunner.bindir=..\framework,但是这个目录(..\framework)不存在或者存在没有我们的 adb.exe,所以我们只要修改下这个目录就可以找到 adb.exe
monkeyrunner.bat 最后一条语句:
call "%java_exe%" -Xmx512m "-Djava.ext.dirs=%frameworkdir%;%swt_path%" -Dcom.android.monkeyrunner.bindir=..\framework -jar %jarpath% %*
已知:adb.exe 在 C:\Users\yinzh\AppData\Local\Android\Sdk\platform-tools,即相对于 monkeyrunner.bat 的上上级的 platform-tools 文件才能找到 adb.exe
找到 monkeyrunner.bat 的目录: C:\Users\yinzh\AppData\Local\Android\Sdk\tools\bin,修改问题 2 已修改的 monkeyrunner.bat,把最后一句复制后在注释掉(rem 是 bat 的注释命令),然后修改成
call "%java_exe%" -Xmx512m "-Djava.ext.dirs=%frameworkdir%;%swt_path%" -Dcom.android.monkeyrunner.bindir=..\..\platform-tools -jar %jarpath% %*
monkeyrunner