使用calabash-android时出现Android SDK路径问题

12

当我尝试运行calabash-android命令时,出现了"无法找到Android SDK,请确保已安装"错误。我已经通过brew安装了Android SDK。这是我的.bash_profile文件的内容:

ANDROID_HOME=/usr/local/Cellar/android-sdk/24.2
PATH=$PATH:$ANDROID_HOME/tools
PATH=$PATH:$ANDROID_HOME/platform-tools
PATH=$PATH:$ANDROID_HOME/build-tools

if [ -f ~/.bashrc ]; then
        source ~/.bashrc
fi

[[ -s "$HOME/.profile" ]] && source "$HOME/.profile" # Load the default .profile

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

PATH=$PATH:/usr/local/apache-ant-1.9.4/bin
PATH=$PATH:/usr/local/share/npm/bin
JAVA_HOME=/usr/libexec/java_home

export PATH

这是我的$PATH:

echo $PATH
/Users/mchumak/.rvm/gems/ruby-2.1.1/bin:/Users/mchumak/.rvm/gems/ruby-2.1.1@global/bin:/Users/mchumak/.rvm/rubies/ruby-2.1.1/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/Cellar/android-sdk/24.2/tools:/usr/local/Cellar/android-sdk/24.2/platform-tools:/usr/local/Cellar/android-sdk/24.2/build-tools:/Users/mchumak/.rvm/bin:/Users/mchumak/.rvm/bin:/opt/local/bin:/opt/local/sbin:/Users/mchumak/.rvm/bin:/usr/local/apache-ant-1.9.4/bin:/usr/local/share/npm/bin

"which android" 产生的结果:

/usr/local/bin/android

那个特定文件的内容是:

#!/bin/bash
TOOL="/usr/local/Cellar/android-sdk/24.2/tools/android"
exec "$TOOL" "$@"

我可以从命令行运行Android SDK Manager,并显示正确的SDK路径(/usr/local/Cellar/android-sdk/24.2)。

我很迷惑。有任何想法为什么calabash-android无法找到SDK?


Calabash 使用 adb。'adb' 正常工作吗?'which adb' 返回什么? - alannichols
@alannichols 我可以成功使用adb启动服务器。which adb返回/usr/local/bin/adb。该文件的内容为PLATFORM_TOOL="/usr/local/Cellar/android-sdk/24.2/platform-tools/adb" test -x "$PLATFORM_TOOL" && exec "$PLATFORM_TOOL" "$@" echo "看起来您没有安装'Android SDK平台工具'。" echo "使用'android'工具安装它们:"``echo " android update sdk --no-ui --filter 'platform-tools'" - Towercap
@alannichols很遗憾,从/usr/local/bin/中删除别名文件并没有解决问题。which android返回了正确的立即路径(/usr/local/Cellar/android-sdk/24.2/tools/android),但我仍然收到相同的错误。我将尝试手动安装gem包。 - Towercap
手动安装宝石后仍然遇到相同的问题。 - Towercap
抱歉,我的意思是尝试手动安装SDK,即不使用Brew,并将ANDROID_HOME指向该位置,看看你的情况如何。 - alannichols
显示剩余2条评论
3个回答

3
这将解决你的问题,
  1. echo "export PATH=$PATH:/Users/#username/Library/Android/sdk/platform-tools/sdk/platform-tools/" >> ~/.bash_profile

  2. 安装android-platform-tools -> brew install android-platform-tools

- 确保你拥有管理员权限


0
看起来你的$PATH输出表明android sdk的路径没有加载到PATH中。请将以下内容添加到你的.bash_profile文件中。
PATH=$PATH:$ANDROID_HOME

谢谢回复。我已经改变了.bash_profile文件,将ANDROID_HOME添加到PATH变量中,并启动了一个新的bash实例,但不幸的是,我仍然遇到相同的错误。 - Towercap

0
calabash-android run /Users/marcg/Downloads/app-news.apk

我收到了以下错误信息

在 '/Users/marcg/Library/Android/sdk/platforms' 中找不到任何平台目录

我通过下面的符号链接进行了更正:

/Users/marcg/Library/Android/sdk/platforms
platforms$ ln -s ../platform-tools/ platform

我再次运行时出现了错误,提示标准目录/Users/marcg/Library/Android/sdk/platforms中缺少 Android jar 文件。

然后我将该 android.jar 文件复制到该目录下:

现在该目录的内容如下:

/Users/marcg/Library/Android/sdk/platforms
us164912:platforms marcg$ ls -l
total 49640
-rwxr-xr-x   1 marcg Users  25409822 Oct  5 09:26 android.jar
lrwxr-xr-x   1 marcg Users        18 Oct  5 09:14 platform -> ../platform-tools/

仍在获取中

在'/Users/marcg/Library/Android/sdk/platforms'的任何标准目录中未找到'android.jar'。因此,Calabash将需要更长时间来加载

我将android.jar复制到了platform-tools目录中,剩余的错误消失了。

更正步骤:

  1. 在指向platform-tools的平台中创建符号链接
    ln -s ../platform-tools/ platform
  2. 将android.jar复制到platform-tools目录中

如果框架允许您通过文件或其他环境变量配置每个文件的查找位置,则会更好。 我之前尝试将ANDROID_HOME设置为platform-tools目录,但没有成功,这就是我做符号链接的原因。


ANDROID_HOME 应该指向 sdk 目录,而不是其中的 platforms 目录。 - Tobias

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接