无法从命令行构建 Phonegap 项目
Posted
技术标签:
【中文标题】无法从命令行构建 Phonegap 项目【英文标题】:Cannot build Phonegap project from command line 【发布时间】:2013-11-26 12:11:14 【问题描述】:我已经构建了一个 Phonegap 应用程序,现在正在尝试将它与 Phonegap Build 集成。我正在遵循非常简单的指南here。
所以我在做:
sudo npm install -g phonegap
sudo phonegap create hello com.example.hello HelloWorld
cd hello
sudo phonegap local build android
最后一条命令导致错误:
The command `android` failed. Make sure you have the latest Android SDK installed, and the `android` command (inside the tools/ folder) added to your path. Output: /bin/sh: 1: android: not found
然后我做了:
which android
结果:
/home/mark/Development/adt-bundle-linux-x86_64-20130522/sdk/tools/android
这是正确的路径。
phonegap 版本为 3.1.0-0.15.0。
知道为什么我会收到此错误吗?
编辑 如果我跑:
sudo phonegap local build /home/mark/Development/adt-bundle-linux-x86_64-20130522/sdk/tools/android
我又遇到一个错误:
/usr/local/lib/node_modules/phonegap/lib/phonegap/local.build.js:141
platformPath = path.join('.', 'platforms', platform.local);
^
TypeError: Cannot read property 'local' of undefined
at LocalBuildCommand.module.exports.addPlatform (/usr/local/lib/node_modules/phonegap/lib/phonegap/local.build.js:141:60)
at LocalBuildCommand.execute (/usr/local/lib/node_modules/phonegap/lib/phonegap/local.build.js:95:32)
at LocalBuildCommand.run (/usr/local/lib/node_modules/phonegap/lib/phonegap/local.build.js:70:10)
at Object.build (/usr/local/lib/node_modules/phonegap/lib/phonegap/util/command.js:28:25)
at CLI.module.exports (/usr/local/lib/node_modules/phonegap/lib/cli/local.build.js:34:20)
at CLI.module.exports [as argv] (/usr/local/lib/node_modules/phonegap/lib/cli/argv.js:66:17)
at Object.<anonymous> (/usr/local/lib/node_modules/phonegap/bin/phonegap.js:24:21)
at Module._compile (module.js:449:26)
at Object.Module._extensions..js (module.js:467:10)
at Module.load (module.js:349:32)
【问题讨论】:
在命令行输入“android”会得到什么? 它会调出 android sdk manager... Ant 安装和配置了吗? 我刚刚运行了 ant -v,它显示“Apache Ant(TM) 版本 1.8.2 于 2011 年 12 月 3 日编译 尝试使用默认构建文件:build.xml 构建文件:build.xml 不存在!构建失败” 所以是的,ant 也可以正常工作。有什么想法吗? 【参考方案1】:更高版本的 android sdk 将 adb 移至平台工具。尝试在您的路径中包含工具和平台工具。见
~/Tools/adt-bundle-linux-x86_64-20131030/sdk $ cat tools/adb_has_moved.txt adb 工具已移至 platform-tools/
如果您在 SDK 中没有看到此目录,请启动 SDK 和 AVD Manager(执行android工具)并安装“Android SDK 平台工具”
请同时更新您的 PATH 环境变量以包含 platform-tools/ 目录,因此您可以从任何位置执行 adb。
我使用以下导出命令。
export ANDROID_BUNDLE_HOME="$ATILLA_TOOLS/adt-bundle-linux-x86_64-20131030"
export ANDROID_SDK_HOME="$ANDROID_BUNDLE_HOME/sdk"
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
export PATH=$PATH:$ANDROID_SDK_HOME/tools
export PATH=$PATH:$ANDROID_SDK_HOME/platform-tools
adb 和 android 都应该在命令行中工作。也尝试使用
phonegap local build android
没有 sudo。
看下面的例子
$phonegap create deneme1
[phonegap] created project at /home/atilla/Projects/Denemeler/a/deneme1
$cd deneme1/
$phonegap local build android
[phonegap] adding the Android platform...
[phonegap] compiling
Android... [phonegap] successfully compiled Android app
在此成功消息后尝试找到您的平台和 apk 文件。
$ls -al platforms/
$ls -al platforms/android/
$ls -al platforms/android/bin
您应该会在此目录中看到 HelloWorld-debug.apk。
-rw-r--r-- 1 atilla atilla 1542462 Ara 5 14:31 HelloWorld-debug.apk
【讨论】:
【参考方案2】:用sudo安装phonegap npm全局包,就OK了。 但是你应该用你自己的用户运行 phonegap
sudo npm install -g phonegap
phonegap create hello com.example.hello HelloWorld
phonegap local build android
使用 sudo 执行您将切换到 root 用户,因此 $PATH 的环境变量不一定相同。
【讨论】:
【参考方案3】:尝试将您的 Android 路径添加到您的 PATH 环境变量中。
如果您使用 Linux,请先尝试:
echo $PATH
此命令显示您的 PATH 变量,在此搜索 Android 路径。 如果您没有看到 android 路径,则需要将该路径添加到您的环境变量中。 试试这个:
echo 'export PATH=$PATH:/home/user/mis_prog' >> /home/user/.bashrc
您必须编辑登录 shell 的配置文件。 通常 BASH shell 是最常用的,您必须编辑您的 /home/user/.bashrc。
为此,您将使用文本编辑器或仅使用命令来简化任务。
如果您使用某些 Windows 版本,您可以从系统属性中编辑环境变量 PATH,如下所示:http://www.computerhope.com/issues/ch000549.htm
【讨论】:
android 路径已经到了 PATH。当我从任何地方运行“android”时,它会打开 SDK 管理器..以上是关于无法从命令行构建 Phonegap 项目的主要内容,如果未能解决你的问题,请参考以下文章