最新消息:

phonegap开发环境搭配教程

android 大步 3512浏览 0评论
最近在学html5来开发android app,所以,自学下phonegap框架,其实phonegap是拿开源的cordova封装了下。

安装jdk并配置java的环境变量

这个我就不用配置了,因为以前用java开发android,所以这些环境已经配置好了。
注意,有的教程说还要装ant,但是phonegap最新版默认已经使用gradle了,所以,就不需要再安装和配置ant了。

安装android模拟器

同上,我这也不用安装配置了。没有配置的话,建议去google下android开发环境的配置。

安装nodejs

下载地址:https://nodejs.org/en/

安装phonegap

>npm install -g phonegap
输出如下:
npm ERR! Windows_NT 10.0.10586
npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "-g" "phonegap"
npm ERR! node v5.2.0
npm ERR! npm  v3.3.12
npm ERR! code ECONNRESET
npm ERR! errno ECONNRESET
npm ERR! syscall read
npm ERR! network read ECONNRESET
npm ERR! network This is most likely not a problem with npm itself
npm ERR! network and is related to network connectivity.
npm ERR! network In most cases you are behind a proxy or have bad network settings.
npm ERR! network
npm ERR! network If you are behind a proxy, please make sure that the
npm ERR! network 'proxy' config is set properly.  See: 'npm help config'
npm ERR! Windows_NT 10.0.10586
npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "-g" "phonegap"
npm ERR! node v5.2.0
npm ERR! npm  v3.3.12
npm ERR! code ECONNRESET
npm ERR! errno ECONNRESET
npm ERR! syscall read
npm ERR! network read ECONNRESET
npm ERR! network This is most likely not a problem with npm itself
npm ERR! network and is related to network connectivity.
npm ERR! network In most cases you are behind a proxy or have bad network settings.
npm ERR! network
npm ERR! network If you are behind a proxy, please make sure that the
npm ERR! network 'proxy' config is set properly.  See: 'npm help config'
npm ERR! Windows_NT 10.0.10586
npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "-g" "phonegap"
npm ERR! node v5.2.0
npm ERR! npm  v3.3.12
npm ERR! code ECONNRESET
npm ERR! errno ECONNRESET
npm ERR! syscall read
npm ERR! network read ECONNRESET
npm ERR! network This is most likely not a problem with npm itself
npm ERR! network and is related to network connectivity.
npm ERR! network In most cases you are behind a proxy or have bad network settings.
npm ERR! network
npm ERR! network If you are behind a proxy, please make sure that the
npm ERR! network 'proxy' config is set properly.  See: 'npm help config'
npm ERR! Windows_NT 10.0.10586
npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "-g" "phonegap"
npm ERR! node v5.2.0
npm ERR! npm  v3.3.12
npm ERR! code ECONNRESET
npm ERR! errno ECONNRESET
npm ERR! syscall read
npm ERR! network read ECONNRESET
npm ERR! network This is most likely not a problem with npm itself
npm ERR! network and is related to network connectivity.
npm ERR! network In most cases you are behind a proxy or have bad network settings.
npm ERR! network
npm ERR! network If you are behind a proxy, please make sure that the
npm ERR! network 'proxy' config is set properly.  See: 'npm help config'
问题原因:npm的源的ip估计是被墙了,所以,必须设置代理才能成功下载phonegap。或者也可以用国内的镜像,貌似叫cnpm。
设置npm代理地址:
 npm config set proxy=http://代理服务器ip:代理服务器端口
设置完代理后,再次执行:
>  npm install -g phonegap
输出结果:
C:\Users\AlexY\AppData\Roaming\npm\phonegap -> C:\Users\AlexY\AppData\Roaming\npm\node_modules\phonegap\bin\phonegap.js
> ws@0.4.31 install C:\Users\AlexY\AppData\Roaming\npm\node_modules\phonegap\node_modules\ws
> (node-gyp rebuild 2> builderror.log) || (exit 0)
C:\Users\AlexY\AppData\Roaming\npm\node_modules\phonegap\node_modules\ws {git}{hg}
{lamb} if not defined npm_config_node_gyp (node "C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild )  else (node  rebuild )
在此解决方案中一次生成一个项目。若要启用并行生成,请添加“/m”开关。
MSBUILD : error MSB3428: 未能加载 Visual C++ 组件“VCBuild.exe”。要解决此问题,1) 安装 .NET Framework 2.0 SDK;2) 安装 Micr
osoft Visu
al Studio 2005;或 3) 如果将该组件安装到了其他位置,请将其位置添加到系统路径中。 [C:\Users\AlexY\AppData\Roaming\npm\node_
modules\phonegap\node_
modules\ws\build\binding.sln]
MSBUILD : error MSB3428: 未能加载 Visual C++ 组件“VCBuild.exe”。要解决此问题,1) 安装 .NET Framework 2.0 SDK;2) 安装 Micr
osoft Visu
al Studio 2005;或 3) 如果将该组件安装到了其他位置,请将其位置添加到系统路径中。 [C:\Users\AlexY\AppData\Roaming\npm\node_
modules\phonegap\node_
modules\ws\build\binding.sln]
C:\Users\AlexY\AppData\Roaming\npm
└─┬ phonegap@5.3.9
  ├── colors@0.6.0-1
  ├─┬ connect-phonegap@0.18.1
  │ ├── adm-zip@0.4.7
  │ ├─┬ archiver@0.14.3
  │ │ ├── async@0.9.2
  │ │ ├── buffer-crc32@0.2.5
  │ │ ├─┬ glob@4.3.5
  │ │ │ ├─┬ inflight@1.0.4
  │ │ │ │ └── wrappy@1.0.1
  │ │ │ ├─┬ minimatch@2.0.10
  │ │ │ │ └─┬ brace-expansion@1.1.2
  │ │ │ │   ├── balanced-match@0.3.0
  │ │ │ │   └── concat-map@0.0.1
  │ │ │ └── once@1.3.3
  │ │ ├── lazystream@0.1.0
  │ │ ├── lodash@3.2.0
  │ │ ├─┬ readable-stream@1.0.33
  │ │ │ ├── core-util-is@1.0.2
  │ │ │ ├── isarray@0.0.1
  │ │ │ └── string_decoder@0.10.31
  │ │ ├─┬ tar-stream@1.1.5
  │ │ │ ├── bl@0.9.4
  │ │ │ ├── end-of-stream@1.1.0
  │ │ │ └── xtend@4.0.1
  │ │ └─┬ zip-stream@0.5.2
  │ │   └─┬ compress-commons@0.2.9
  │ │     ├── crc32-stream@0.3.4
  │ │     └── node-int64@0.3.3
  │ ├─┬ connect@2.12.0
  │ │ ├── batch@0.5.0
  │ │ ├── buffer-crc32@0.2.1
  │ │ ├── bytes@0.2.1
  │ │ ├── cookie@0.1.0
  │ │ ├── cookie-signature@1.0.1
  │ │ ├── debug@0.8.1
  │ │ ├── fresh@0.2.0
  │ │ ├── methods@0.1.0
  │ │ ├─┬ multiparty@2.2.0
  │ │ │ ├── readable-stream@1.1.13
  │ │ │ └─┬ stream-counter@0.2.0
  │ │ │   └── readable-stream@1.1.13
  │ │ ├── negotiator@0.3.0
  │ │ ├── pause@0.0.1
  │ │ ├── qs@0.6.6
  │ │ ├── raw-body@1.1.2
  │ │ ├─┬ send@0.1.4
  │ │ │ └── range-parser@0.0.4
  │ │ └── uid2@0.0.3
  │ ├── connect-inject@0.3.2
  │ ├─┬ gaze@0.4.3
  │ │ └─┬ globule@0.1.0
  │ │   ├─┬ glob@3.1.21
  │ │   │ ├── graceful-fs@1.2.3
  │ │   │ └── inherits@1.0.2
  │ │   ├── lodash@1.0.2
  │ │   └─┬ minimatch@0.2.14
  │ │     ├── lru-cache@2.7.3
  │ │     └── sigmund@1.0.1
  │ ├── home-dir@0.1.2
  │ ├─┬ http-proxy@1.8.1
  │ │ ├── eventemitter3@0.1.6
  │ │ └── requires-port@0.0.1
  │ ├── ip@0.3.1
  │ ├─┬ localtunnel@1.3.0
  │ │ ├── debug@0.7.4
  │ │ └─┬ request@2.11.4
  │ │   └─┬ form-data@0.0.3
  │ │     └─┬ combined-stream@0.0.3
  │ │       └── delayed-stream@0.0.5
  │ ├─┬ node-static@0.7.0
  │ │ ├── colors@1.1.2
  │ │ └── mime@1.2.11
  │ ├─┬ request@2.33.0
  │ │ ├── aws-sign2@0.5.0
  │ │ ├── forever-agent@0.5.2
  │ │ ├─┬ form-data@0.1.4
  │ │ │ └─┬ combined-stream@0.0.7
  │ │ │   └── delayed-stream@0.0.5
  │ │ ├─┬ hawk@1.0.0
  │ │ │ ├── boom@0.4.2
  │ │ │ ├── cryptiles@0.2.2
  │ │ │ ├── hoek@0.9.1
  │ │ │ └── sntp@0.2.4
  │ │ ├─┬ http-signature@0.10.1
  │ │ │ ├── asn1@0.1.11
  │ │ │ ├── assert-plus@0.1.5
  │ │ │ └── ctype@0.5.3
  │ │ ├── json-stringify-safe@5.0.1
  │ │ ├── node-uuid@1.4.7
  │ │ ├── oauth-sign@0.3.0
  │ │ ├── tough-cookie@2.2.1
  │ │ └── tunnel-agent@0.3.0
  │ ├─┬ request-progress@0.3.1
  │ │ └── throttleit@0.0.2
  │ ├── shelljs@0.2.6
  │ ├─┬ socket.io@1.0.4
  │ │ ├── debug@0.7.4
  │ │ ├─┬ engine.io@1.2.2
  │ │ │ ├── base64id@0.1.0
  │ │ │ ├── debug@0.6.0
  │ │ │ ├─┬ engine.io-parser@1.0.6
  │ │ │ │ ├── after@0.8.1
  │ │ │ │ ├── arraybuffer.slice@0.0.6
  │ │ │ │ ├── base64-arraybuffer@0.1.2
  │ │ │ │ ├── blob@0.0.2
  │ │ │ │ └── utf8@2.0.0
  │ │ │ └─┬ ws@0.4.31
  │ │ │   ├── commander@0.6.1
  │ │ │   ├── nan@0.3.2
  │ │ │   ├── options@0.0.6
  │ │ │   └── tinycolor@0.0.1
  │ │ ├── has-binary-data@0.1.1
  │ │ ├─┬ socket.io-adapter@0.2.0
  │ │ │ ├── debug@0.7.4
  │ │ │ └── socket.io-parser@2.1.2
  │ │ ├─┬ socket.io-client@1.0.4
  │ │ │ ├── bind@0.0.1
  │ │ │ ├── debug@0.7.4
  │ │ │ ├── emitter@1.0.1
  │ │ │ ├─┬ engine.io-client@1.2.2
  │ │ │ │ ├── debug@0.7.4
  │ │ │ │ ├─┬ has-cors@1.0.3
  │ │ │ │ │ └── global@2.0.1
  │ │ │ │ ├── parsejson@0.0.1
  │ │ │ │ ├── parseqs@0.0.2
  │ │ │ │ └── xmlhttprequest@1.5.0
  │ │ │ ├── indexof@0.0.1
  │ │ │ ├── object-component@0.0.3
  │ │ │ ├─┬ parseuri@0.0.2
  │ │ │ │ └─┬ better-assert@1.0.2
  │ │ │ │   └── callsite@1.0.0
  │ │ │ └── to-array@0.1.3
  │ │ └─┬ socket.io-parser@2.2.0
  │ │   ├── debug@0.7.4
  │ │   └── json3@3.2.6
  │ ├─┬ tar@0.1.19
  │ │ ├── block-stream@0.0.8
  │ │ ├─┬ fstream@0.1.31
  │ │ │ └── graceful-fs@3.0.8
  │ │ └── inherits@2.0.1
  │ ├─┬ useragent@2.0.8
  │ │ └── lru-cache@2.2.4
  │ └── walkdir@0.0.8
  ├─┬ cordova@5.4.1
  │ ├── ansi@0.3.0
  │ ├─┬ cordova-lib@5.4.1
  │ │ ├─┬ aliasify@1.8.0
  │ │ │ └─┬ browserify-transform-tools@1.3.3
  │ │ │   ├─┬ falafel@1.0.1
  │ │ │   │ └── acorn@0.11.0
  │ │ │   └── through@2.3.8
  │ │ ├── cordova-app-hello-world@3.10.0
  │ │ ├─┬ cordova-common@1.0.0
  │ │ │ ├─┬ glob@5.0.15
  │ │ │ │ ├── inflight@1.0.4
  │ │ │ │ ├─┬ minimatch@2.0.10
  │ │ │ │ │ └─┬ brace-expansion@1.1.1
  │ │ │ │ │   └── concat-map@0.0.1
  │ │ │ │ └── path-is-absolute@1.0.0
  │ │ │ ├─┬ osenv@0.1.3
  │ │ │ │ ├── os-homedir@1.0.1
  │ │ │ │ └── os-tmpdir@1.0.1
  │ │ │ └── q@1.4.1
  │ │ ├─┬ cordova-js@4.1.2
  │ │ │ └─┬ browserify@10.1.3
  │ │ │   ├── assert@1.3.0
  │ │ │   ├─┬ browser-pack@4.0.4
  │ │ │   │ ├─┬ combine-source-map@0.3.0
  │ │ │   │ │ ├── convert-source-map@0.3.5
  │ │ │   │ │ ├─┬ inline-source-map@0.3.1
  │ │ │   │ │ │ └── source-map@0.3.0
  │ │ │   │ │ └─┬ source-map@0.1.43
  │ │ │   │ │   └── amdefine@1.0.0
  │ │ │   │ ├─┬ through2@0.5.1
  │ │ │   │ │ └── xtend@3.0.0
  │ │ │   │ └── umd@3.0.1
  │ │ │   ├── browser-resolve@1.11.0
  │ │ │   ├─┬ browserify-zlib@0.1.4
  │ │ │   │ └── pako@0.2.8
  │ │ │   ├─┬ buffer@3.5.4
  │ │ │   │ ├── base64-js@0.0.8
  │ │ │   │ └── ieee754@1.1.6
  │ │ │   ├── builtins@0.0.7
  │ │ │   ├── commondir@0.0.1
  │ │ │   ├─┬ concat-stream@1.4.10
  │ │ │   │ ├── readable-stream@1.1.13
  │ │ │   │ └── typedarray@0.0.6
  │ │ │   ├─┬ console-browserify@1.1.0
  │ │ │   │ └── date-now@0.1.4
  │ │ │   ├── constants-browserify@0.0.1
  │ │ │   ├─┬ crypto-browserify@3.11.0
  │ │ │   │ ├─┬ browserify-cipher@1.0.0
  │ │ │   │ │ ├─┬ browserify-aes@1.0.5
  │ │ │   │ │ │ └── buffer-xor@1.0.3
  │ │ │   │ │ ├─┬ browserify-des@1.0.0
  │ │ │   │ │ │ └─┬ des.js@1.0.0
  │ │ │   │ │ │   └── minimalistic-assert@1.0.0
  │ │ │   │ │ └── evp_bytestokey@1.0.0
  │ │ │   │ ├─┬ browserify-sign@4.0.0
  │ │ │   │ │ ├── bn.js@4.5.0
  │ │ │   │ │ ├── browserify-rsa@4.0.0
  │ │ │   │ │ ├─┬ elliptic@6.0.2
  │ │ │   │ │ │ ├── brorand@1.0.5
  │ │ │   │ │ │ └── hash.js@1.0.3
  │ │ │   │ │ └─┬ parse-asn1@5.0.0
  │ │ │   │ │   └── asn1.js@4.2.1
  │ │ │   │ ├── create-ecdh@4.0.0
  │ │ │   │ ├─┬ create-hash@1.1.2
  │ │ │   │ │ ├── cipher-base@1.0.2
  │ │ │   │ │ └── ripemd160@1.0.1
  │ │ │   │ ├── create-hmac@1.1.4
  │ │ │   │ ├─┬ diffie-hellman@5.0.0
  │ │ │   │ │ └── miller-rabin@4.0.0
  │ │ │   │ ├── pbkdf2@3.0.4
  │ │ │   │ ├── public-encrypt@4.0.0
  │ │ │   │ └── randombytes@2.0.1
  │ │ │   ├── defined@1.0.0
  │ │ │   ├── deps-sort@1.3.9
  │ │ │   ├─┬ domain-browser@1.1.5
  │ │ │   │ └─┬ assert-helpers@4.1.0
  │ │ │   │   ├── ansicolors@0.3.2
  │ │ │   │   ├── diff@2.2.1
  │ │ │   │   └── esnextguardian@1.2.0
  │ │ │   ├─┬ duplexer2@0.0.2
  │ │ │   │ └── readable-stream@1.1.13
  │ │ │   ├── events@1.0.2
  │ │ │   ├─┬ has@1.0.1
  │ │ │   │ └── function-bind@1.0.2
  │ │ │   ├── htmlescape@1.1.0
  │ │ │   ├─┬ http-browserify@1.7.0
  │ │ │   │ └── Base64@0.2.1
  │ │ │   ├── https-browserify@0.0.1
  │ │ │   ├─┬ insert-module-globals@6.6.3
  │ │ │   │ ├─┬ combine-source-map@0.6.1
  │ │ │   │ │ ├── convert-source-map@1.1.2
  │ │ │   │ │ ├── inline-source-map@0.5.0
  │ │ │   │ │ ├── lodash.memoize@3.0.4
  │ │ │   │ │ └── source-map@0.4.4
  │ │ │   │ ├── is-buffer@1.1.0
  │ │ │   │ └─┬ lexical-scope@1.2.0
  │ │ │   │   └─┬ astw@2.0.0
  │ │ │   │     └── acorn@1.2.2
  │ │ │   ├─┬ JSONStream@1.0.7
  │ │ │   │ └── jsonparse@1.2.0
  │ │ │   ├─┬ labeled-stream-splicer@1.0.2
  │ │ │   │ └─┬ stream-splicer@1.3.2
  │ │ │   │   └── readable-stream@1.1.13
  │ │ │   ├─┬ module-deps@3.9.1
  │ │ │   │ ├─┬ detective@4.3.1
  │ │ │   │ │ └── acorn@1.2.2
  │ │ │   │ ├── readable-stream@1.1.13
  │ │ │   │ └─┬ stream-combiner2@1.0.2
  │ │ │   │   └─┬ through2@0.5.1
  │ │ │   │     └── xtend@3.0.0
  │ │ │   ├── os-browserify@0.1.2
  │ │ │   ├─┬ parents@1.0.1
  │ │ │   │ └── path-platform@0.11.15
  │ │ │   ├── path-browserify@0.0.0
  │ │ │   ├── process@0.11.2
  │ │ │   ├── punycode@1.3.2
  │ │ │   ├── querystring-es3@0.2.1
  │ │ │   ├─┬ read-only-stream@1.1.1
  │ │ │   │ └─┬ readable-wrap@1.0.0
  │ │ │   │   └── readable-stream@1.1.13
  │ │ │   ├── readable-stream@1.1.13
  │ │ │   ├── resolve@1.1.6
  │ │ │   ├── shallow-copy@0.0.1
  │ │ │   ├─┬ shasum@1.0.2
  │ │ │   │ ├─┬ json-stable-stringify@0.0.1
  │ │ │   │ │ └── jsonify@0.0.0
  │ │ │   │ └── sha.js@2.4.4
  │ │ │   ├── shell-quote@0.0.1
  │ │ │   ├── stream-browserify@1.0.0
  │ │ │   ├─┬ subarg@1.0.0
  │ │ │   │ └── minimist@1.2.0
  │ │ │   ├─┬ syntax-error@1.1.4
  │ │ │   │ └── acorn@1.2.2
  │ │ │   ├─┬ through2@1.1.1
  │ │ │   │ └── readable-stream@1.1.13
  │ │ │   ├── timers-browserify@1.4.2
  │ │ │   ├── tty-browserify@0.0.0
  │ │ │   ├─┬ url@0.10.3
  │ │ │   │ └── querystring@0.2.0
  │ │ │   ├── util@0.10.3
  │ │ │   └── vm-browserify@0.0.4
  │ │ ├─┬ cordova-registry-mapper@1.1.13
  │ │ │ └─┬ tape@3.5.0
  │ │ │   ├─┬ glob@3.2.11
  │ │ │   │ └─┬ minimatch@0.3.0
  │ │ │   │   └── sigmund@1.0.1
  │ │ │   ├── inherits@2.0.1
  │ │ │   └── through@2.3.8
  │ │ ├─┬ cordova-serve@1.0.0
  │ │ │ ├─┬ compression@1.6.0
  │ │ │ │ ├─┬ accepts@1.3.0
  │ │ │ │ │ ├── mime-types@2.1.8
  │ │ │ │ │ └── negotiator@0.6.0
  │ │ │ │ ├── bytes@2.1.0
  │ │ │ │ ├─┬ compressible@2.0.6
  │ │ │ │ │ └── mime-db@1.20.0
  │ │ │ │ ├─┬ debug@2.2.0
  │ │ │ │ │ └── ms@0.7.1
  │ │ │ │ ├── on-headers@1.0.1
  │ │ │ │ └── vary@1.1.0
  │ │ │ ├─┬ express@4.13.3
  │ │ │ │ ├─┬ accepts@1.2.13
  │ │ │ │ │ └── negotiator@0.5.3
  │ │ │ │ ├── array-flatten@1.1.1
  │ │ │ │ ├── content-disposition@0.5.0
  │ │ │ │ ├── content-type@1.0.1
  │ │ │ │ ├── cookie@0.1.3
  │ │ │ │ ├── cookie-signature@1.0.6
  │ │ │ │ ├── debug@2.2.0
  │ │ │ │ ├── depd@1.0.1
  │ │ │ │ ├── escape-html@1.0.2
  │ │ │ │ ├── etag@1.7.0
  │ │ │ │ ├─┬ finalhandler@0.4.0
  │ │ │ │ │ ├── debug@2.2.0
  │ │ │ │ │ └── unpipe@1.0.0
  │ │ │ │ ├── fresh@0.3.0
  │ │ │ │ ├── merge-descriptors@1.0.0
  │ │ │ │ ├── methods@1.1.1
  │ │ │ │ ├─┬ on-finished@2.3.0
  │ │ │ │ │ └── ee-first@1.1.1
  │ │ │ │ ├── parseurl@1.3.0
  │ │ │ │ ├── path-to-regexp@0.1.7
  │ │ │ │ ├─┬ proxy-addr@1.0.10
  │ │ │ │ │ ├── forwarded@0.1.0
  │ │ │ │ │ └── ipaddr.js@1.0.5
  │ │ │ │ ├── qs@4.0.0
  │ │ │ │ ├── range-parser@1.0.3
  │ │ │ │ ├─┬ send@0.13.0
  │ │ │ │ │ ├── destroy@1.0.3
  │ │ │ │ │ ├── http-errors@1.3.1
  │ │ │ │ │ ├── mime@1.3.4
  │ │ │ │ │ └── statuses@1.2.1
  │ │ │ │ ├─┬ serve-static@1.10.0
  │ │ │ │ │ └─┬ send@0.13.0
  │ │ │ │ │   ├── debug@2.2.0
  │ │ │ │ │   ├── fresh@0.3.0
  │ │ │ │ │   ├── mime@1.3.4
  │ │ │ │ │   └── range-parser@1.0.3
  │ │ │ │ ├─┬ type-is@1.6.10
  │ │ │ │ │ └── media-typer@0.3.0
  │ │ │ │ ├── utils-merge@1.0.0
  │ │ │ │ └── vary@1.0.1
  │ │ │ └── q@1.4.1
  │ │ ├─┬ dep-graph@1.1.0
  │ │ │ └── underscore@1.2.1
  │ │ ├─┬ glob@4.0.6
  │ │ │ ├── graceful-fs@3.0.8
  │ │ │ ├── inherits@2.0.1
  │ │ │ ├── minimatch@1.0.0
  │ │ │ └─┬ once@1.3.2
  │ │ │   └── wrappy@1.0.1
  │ │ ├─┬ init-package-json@1.9.1
  │ │ │ ├─┬ glob@5.0.15
  │ │ │ │ └── path-is-absolute@1.0.0
  │ │ │ ├─┬ npm-package-arg@4.1.0
  │ │ │ │ ├── hosted-git-info@2.1.4
  │ │ │ │ └── semver@5.1.0
  │ │ │ ├── promzard@0.3.0
  │ │ │ ├─┬ read-package-json@2.0.2
  │ │ │ │ ├── glob@5.0.15
  │ │ │ │ ├── graceful-fs@4.1.2
  │ │ │ │ ├─┬ json-parse-helpfulerror@1.0.3
  │ │ │ │ │ └── jju@1.2.1
  │ │ │ │ └─┬ normalize-package-data@2.3.5
  │ │ │ │   ├─┬ is-builtin-module@1.0.0
  │ │ │ │   │ └── builtin-modules@1.1.0
  │ │ │ │   └── semver@5.1.0
  │ │ │ ├── semver@5.1.0
  │ │ │ ├─┬ validate-npm-package-license@3.0.1
  │ │ │ │ ├─┬ spdx-correct@1.0.2
  │ │ │ │ │ └── spdx-license-ids@1.1.0
  │ │ │ │ └─┬ spdx-expression-parse@1.0.2
  │ │ │ │   └── spdx-exceptions@1.0.4
  │ │ │ └── validate-npm-package-name@2.2.2
  │ │ ├── nopt@3.0.6
  │ │ ├─┬ npm@2.14.14
  │ │ │ ├── abbrev@1.0.7
  │ │ │ ├── ansi@0.3.0
  │ │ │ ├── ansi-regex@2.0.0
  │ │ │ ├── ansicolors@0.3.2
  │ │ │ ├── block-stream@0.0.8
  │ │ │ ├─┬ cmd-shim@2.0.1
  │ │ │ │ └── graceful-fs@3.0.8
  │ │ │ ├─┬ config-chain@1.1.9
  │ │ │ │ └── proto-list@1.2.4
  │ │ │ ├── fstream@1.0.8
  │ │ │ ├─┬ glob@5.0.15
  │ │ │ │ └── path-is-absolute@1.0.0
  │ │ │ ├── graceful-fs@4.1.2
  │ │ │ ├── hosted-git-info@2.1.4
  │ │ │ ├── imurmurhash@0.1.4
  │ │ │ ├── inflight@1.0.4
  │ │ │ ├── inherits@2.0.1
  │ │ │ ├── ini@1.3.4
  │ │ │ ├─┬ init-package-json@1.9.1
  │ │ │ │ └── promzard@0.3.0
  │ │ │ ├─┬ minimatch@3.0.0
  │ │ │ │ └─┬ brace-expansion@1.1.1
  │ │ │ │   └── concat-map@0.0.1
  │ │ │ ├─┬ mkdirp@0.5.1
  │ │ │ │ └── minimist@0.0.8
  │ │ │ ├─┬ node-gyp@3.2.1
  │ │ │ │ ├─┬ glob@4.5.3
  │ │ │ │ │ └─┬ minimatch@2.0.10
  │ │ │ │ │   └─┬ brace-expansion@1.1.2
  │ │ │ │ │     ├── balanced-match@0.3.0
  │ │ │ │ │     └── concat-map@0.0.1
  │ │ │ │ ├─┬ minimatch@1.0.0
  │ │ │ │ │ └── sigmund@1.0.1
  │ │ │ │ └─┬ path-array@1.0.0
  │ │ │ │   └─┬ array-index@0.1.1
  │ │ │ │     └─┬ debug@2.2.0
  │ │ │ │       └── ms@0.7.1
  │ │ │ ├── nopt@3.0.6
  │ │ │ ├─┬ normalize-package-data@2.3.5
  │ │ │ │ └─┬ is-builtin-module@1.0.0
  │ │ │ │   └── builtin-modules@1.1.0
  │ │ │ ├── npm-package-arg@4.1.0
  │ │ │ ├─┬ npm-registry-client@7.0.8
  │ │ │ │ └─┬ concat-stream@1.5.1
  │ │ │ │   ├─┬ readable-stream@2.0.4
  │ │ │ │   │ ├── isarray@0.0.1
  │ │ │ │   │ ├── string_decoder@0.10.31
  │ │ │ │   │ └── util-deprecate@1.0.2
  │ │ │ │   └── typedarray@0.0.6
  │ │ │ ├── opener@1.4.1
  │ │ │ ├─┬ osenv@0.1.3
  │ │ │ │ └── os-tmpdir@1.0.1
  │ │ │ ├─┬ read@1.0.7
  │ │ │ │ └── mute-stream@0.0.5
  │ │ │ ├─┬ read-package-json@2.0.2
  │ │ │ │ └─┬ json-parse-helpfulerror@1.0.3
  │ │ │ │   └── jju@1.2.1
  │ │ │ ├─┬ readable-stream@1.1.13
  │ │ │ │ ├── isarray@0.0.1
  │ │ │ │ └── string_decoder@0.10.31
  │ │ │ ├─┬ request@2.65.0
  │ │ │ │ ├─┬ bl@1.0.0
  │ │ │ │ │ └─┬ readable-stream@2.0.3
  │ │ │ │ │   ├── isarray@0.0.1
  │ │ │ │ │   ├── string_decoder@0.10.31
  │ │ │ │ │   └── util-deprecate@1.0.2
  │ │ │ │ ├─┬ har-validator@2.0.2
  │ │ │ │ │ ├─┬ chalk@1.1.1
  │ │ │ │ │ │ ├── ansi-styles@2.1.0
  │ │ │ │ │ │ ├── escape-string-regexp@1.0.3
  │ │ │ │ │ │ ├── has-ansi@2.0.0
  │ │ │ │ │ │ └── supports-color@2.0.0
  │ │ │ │ │ └─┬ pinkie-promise@1.0.0
  │ │ │ │ │   └── pinkie@1.0.0
  │ │ │ │ ├─┬ http-signature@0.11.0
  │ │ │ │ │ ├── asn1@0.1.11
  │ │ │ │ │ ├── assert-plus@0.1.5
  │ │ │ │ │ └── ctype@0.5.3
  │ │ │ │ ├── json-stringify-safe@5.0.1
  │ │ │ │ └── stringstream@0.0.5
  │ │ │ ├─┬ sha@2.0.1
  │ │ │ │ └─┬ readable-stream@2.0.2
  │ │ │ │   ├── isarray@0.0.1
  │ │ │ │   └── string_decoder@0.10.31
  │ │ │ ├── slide@1.1.6
  │ │ │ ├── spdx-license-ids@1.1.0
  │ │ │ ├── strip-ansi@3.0.0
  │ │ │ ├─┬ validate-npm-package-license@3.0.1
  │ │ │ │ ├── spdx-correct@1.0.2
  │ │ │ │ └─┬ spdx-expression-parse@1.0.2
  │ │ │ │   └── spdx-exceptions@1.0.4
  │ │ │ ├─┬ validate-npm-package-name@2.2.2
  │ │ │ │ └── builtins@0.0.7
  │ │ │ ├── wrappy@1.0.1
  │ │ │ └── write-file-atomic@1.1.4
  │ │ ├─┬ npmconf@2.1.2
  │ │ │ ├─┬ config-chain@1.1.9
  │ │ │ │ └── proto-list@1.2.4
  │ │ │ ├── ini@1.3.4
  │ │ │ ├─┬ osenv@0.1.3
  │ │ │ │ └── os-homedir@1.0.1
  │ │ │ ├── semver@4.3.6
  │ │ │ └── uid-number@0.0.5
  │ │ ├── opener@1.4.1
  │ │ ├─┬ plist@1.2.0
  │ │ │ ├── base64-js@0.0.8
  │ │ │ └── util-deprecate@1.0.2
  │ │ ├── properties-parser@0.2.3
  │ │ ├─┬ rc@0.5.2
  │ │ │ ├── deep-extend@0.2.11
  │ │ │ ├── ini@1.1.0
  │ │ │ ├── minimist@0.0.10
  │ │ │ └── strip-json-comments@0.1.3
  │ │ ├─┬ request@2.47.0
  │ │ │ ├── caseless@0.6.0
  │ │ │ ├── hawk@1.1.1
  │ │ │ ├── mime-types@1.0.2
  │ │ │ ├── oauth-sign@0.4.0
  │ │ │ ├── qs@2.3.3
  │ │ │ ├── stringstream@0.0.5
  │ │ │ └── tunnel-agent@0.4.2
  │ │ ├── semver@4.3.6
  │ │ ├── shelljs@0.3.0
  │ │ ├─┬ tar@1.0.2
  │ │ │ └─┬ fstream@1.0.8
  │ │ │   └── graceful-fs@4.1.2
  │ │ ├── valid-identifier@0.0.1
  │ │ └─┬ xcode@0.8.0
  │ │   ├── node-uuid@1.3.3
  │ │   └── pegjs@0.6.2
  │ ├─┬ nopt@3.0.1
  │ │ └── abbrev@1.0.7
  │ ├── q@1.0.1
  │ ├── underscore@1.7.0
  │ └─┬ update-notifier@0.5.0
  │   ├─┬ chalk@1.1.1
  │   │ ├── ansi-styles@2.1.0
  │   │ ├── escape-string-regexp@1.0.3
  │   │ ├─┬ has-ansi@2.0.0
  │   │ │ └── ansi-regex@2.0.0
  │   │ ├── strip-ansi@3.0.0
  │   │ └── supports-color@2.0.0
  │   ├─┬ configstore@1.4.0
  │   │ ├── graceful-fs@4.1.2
  │   │ ├── object-assign@4.0.1
  │   │ ├── os-tmpdir@1.0.1
  │   │ ├── uuid@2.0.1
  │   │ ├─┬ write-file-atomic@1.1.4
  │   │ │ ├── graceful-fs@4.1.2
  │   │ │ ├── imurmurhash@0.1.4
  │   │ │ └── slide@1.1.6
  │   │ └── xdg-basedir@2.0.0
  │   ├── is-npm@1.0.0
  │   ├─┬ latest-version@1.0.1
  │   │ └─┬ package-json@1.2.0
  │   │   ├─┬ got@3.3.1
  │   │   │ ├─┬ duplexify@3.4.2
  │   │   │ │ ├── end-of-stream@1.0.0
  │   │   │ │ └─┬ readable-stream@2.0.4
  │   │   │ │   ├── process-nextick-args@1.0.6
  │   │   │ │   └── util-deprecate@1.0.2
  │   │   │ ├── infinity-agent@2.0.3
  │   │   │ ├── is-redirect@1.0.0
  │   │   │ ├── is-stream@1.0.1
  │   │   │ ├── lowercase-keys@1.0.0
  │   │   │ ├── nested-error-stacks@1.0.2
  │   │   │ ├── object-assign@3.0.0
  │   │   │ ├── prepend-http@1.0.3
  │   │   │ ├─┬ read-all-stream@3.0.1
  │   │   │ │ ├─┬ pinkie-promise@1.0.0
  │   │   │ │ │ └── pinkie@1.0.0
  │   │   │ │ └── readable-stream@2.0.4
  │   │   │ └── timed-out@2.0.0
  │   │   └─┬ registry-url@3.0.3
  │   │     └─┬ rc@1.1.5
  │   │       ├── deep-extend@0.4.0
  │   │       ├── minimist@1.2.0
  │   │       └── strip-json-comments@1.0.4
  │   ├─┬ repeating@1.1.3
  │   │ └─┬ is-finite@1.0.1
  │   │   └── number-is-nan@1.0.0
  │   ├─┬ semver-diff@2.1.0
  │   │ └── semver@5.1.0
  │   └── string-length@1.0.1
  ├── minimist@0.1.0
  ├─┬ phonegap-build@0.9.2
  │ ├── colors@0.6.2
  │ ├─┬ optimist@0.3.4
  │ │ └── wordwrap@0.0.3
  │ ├─┬ phonegap-build-api@0.3.3
  │ │ └─┬ request@2.11.4
  │ │   └─┬ form-data@0.0.3
  │ │     └─┬ combined-stream@0.0.3
  │ │       └── delayed-stream@0.0.5
  │ ├── qrcode-terminal@0.8.0
  │ └── shelljs@0.0.9
  ├── pluralize@0.0.4
  ├─┬ prompt@0.2.11
  │ ├── pkginfo@0.3.1
  │ ├─┬ read@1.0.7
  │ │ └── mute-stream@0.0.5
  │ ├── revalidator@0.1.8
  │ ├─┬ utile@0.2.1
  │ │ ├── async@0.2.10
  │ │ ├── deep-equal@1.0.1
  │ │ ├── i@0.3.3
  │ │ ├─┬ mkdirp@0.5.1
  │ │ │ └── minimist@0.0.8
  │ │ ├── ncp@0.4.2
  │ │ └─┬ rimraf@2.4.4
  │ │   └── glob@5.0.15
  │ └─┬ winston@0.6.2
  │   ├── async@0.1.22
  │   ├── colors@0.6.2
  │   ├── cycle@1.0.3
  │   ├── eyes@0.1.8
  │   ├── pkginfo@0.2.3
  │   ├── request@2.9.203
  │   └── stack-trace@0.0.9
  ├── qrcode-terminal@0.9.4
  ├── semver@1.1.0
  └── shelljs@0.1.4

查看phonegap是否安装成功

>phonegap -version
5.3.9
如果显示了phonegap的版本,说明安装成功了。如果提示命令找不到,那么说明安装没成功

创建app并在模拟器中运行

>phonegap create my-app com.test.packagename "MyAppName"  //创建一个包名为:com.test.packagename,app名为"MyAppName"的项目,并放到my-app目录下。
>cd my-app  //切换到my-app目录
>emulator.exe -avd "AVD的名稱"   //创建模拟器,你也可以直接去AVD中创建模拟器。或者直接使用真机测试
>phonegap run android  //编译源码,并在模拟器中安装。
结果,运行上面的命令半天没有反应,既不提示成功,也不报错。
怎么办呢?
方法如下:
>phonegap run android --verbose  //加上verbose参数,显示编译的详细信息
[phonegap] executing 'cordova run android --verbose'...
Executing "before_run"  hook for all plugins.
Executing "before_prepare"  hook for all plugins.
Searching PlatformJson files for differences between project vs. platform installed plugins
No differences found between project and android platform. Continuing...
Generating config.xml from defaults for platform "android"
Wrote out Android application name to "AlexyRss"
deleted: C:\Users\AlexY\my-app\platforms\android\res\drawable-hdpi\icon.png
deleted: C:\Users\AlexY\my-app\platforms\android\res\drawable-xxhdpi\icon.png
more than one default icon: {"src":"www/res/icon/android/icon-36-ldpi.png","platform":null}
more than one default icon: {"src":"www/res/icon/android/icon-48-mdpi.png","platform":null}
more than one default icon: {"src":"www/res/icon/android/icon-72-hdpi.png","platform":null}
more than one default icon: {"src":"www/res/icon/android/icon-96-xhdpi.png","platform":null}
more than one default icon: {"src":"www/res/icon/blackberry/icon-80.png","platform":null}
more than one default icon: {"src":"www/res/icon/blackberry/icon-80.png","platform":null}
more than one default icon: {"src":"www/res/icon/webos/icon-64.png","platform":null}
more than one default icon: {"src":"www/res/icon/windows-phone/icon-48.png","platform":null}
more than one default icon: {"src":"www/res/icon/windows-phone/icon-173-tile.png","platform":null}
copying image from C:\Users\AlexY\my-app\www\res\icon\ios\icon-72.png to C:\Users\AlexY\my-app\platforms\android\res\drawable-hdpi\icon.png
copying image from C:\Users\AlexY\my-app\www\res\icon\ios\icon-72-2x.png to C:\Users\AlexY\my-app\platforms\android\res\drawable-xxhdpi\icon.png
copying image from C:\Users\AlexY\my-app\icon.png to C:\Users\AlexY\my-app\platforms\android\res\drawable-mdpi\icon.png
cp: no such file or directory: C:\Users\AlexY\my-app\icon.png
Wrote out Android package name to "com.test.packagename"
Executing "after_prepare"  hook for all plugins.
Running command: cmd "/s /c "C:\Users\AlexY\my-app\platforms\android\cordova\run.bat""
ANDROID_HOME=C:\android\android-sdk
JAVA_HOME=C:\java\jdk7
WARNING : No target specified, deploying to emulator
Running: C:\Users\AlexY\my-app\platforms\android\gradlew cdvBuildDebug -b C:\Users\AlexY\my-app\platforms\android\build.gradle -PcdvBuildArch=x86 -Dorg.gradle.daemon=true
Unzipping C:\Users\AlexY\.gradle\wrapper\dists\gradle-2.2.1-all\2m8005s69iu8v0oiejfej094b\gradle-2.2.1-all.zip to C:\Users\AlexY\.gradle\wrapper\dists\gradle-2.2.1-all\2m8005s69iu8v0oiejfej094b
 
 
Exception in thread "main"
java.lang.RuntimeException: java.util.zip.ZipException: error in opening zip file
 
        at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:78)
        at org.gradle.wrapper.Install.createDist(Install.java:47)
        at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:129)
        at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:48)
Caused by: java.util.zip.ZipException: error in opening zip file
        at java.util.zip.ZipFile.open(Native Method)
        at java.util.zip.ZipFile.<init>(ZipFile.java:215)
        at java.util.zip.ZipFile.<init>(ZipFile.java:145)
        at java.util.zip.ZipFile.<init>(ZipFile.java:159)
        at org.gradle.wrapper.Install.unzip(Install.java:160)
 
        at org.gradle.wrapper.Install.access$400(Install.java:29)
        at org.gradle.wrapper.Install$1.call(Install.java:70)
        at org.gradle.wrapper.Install$1.call(Install.java:47)
        at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:65)
        ... 3 more
C:\Users\AlexY\my-app\platforms\android\cordova\node_modules\q\q.js:126
                    throw e;
                    ^
Error code 1 for command: cmd with args: /s /c "C:\Users\AlexY\my-app\platforms\android\gradlew cdvBuildDebug -b C:\Users\AlexY\my-app\platforms\android\build.gradle -PcdvBuildArch=x86 -Dorg.gradle.daemon=true"
Command finished with error code 1: cmd /s /c "C:\Users\AlexY\my-app\platforms\android\cordova\run.bat"
ERROR running one or more of the platforms: Error: cmd: Command failed with exit code 1
You may not have the required environment or OS to run this project
[phonegap] completed 'cordova run android --verbose'
问题:发现有一个报错,导致无法编译。
原因:下载的2.2.1版本的gradle的zip压缩包损坏,所以无法解压,自然更不可能编译
解决办法:
去gradle官网手动下载,解压到对应的目录即可。
(注意:如果你的系统里没有所需要的gradle版本,就会自己去网上下载gradle,这个过程很慢,建议用代理。否则很可能下载的gradle的zip包不完整,导致无法解压)
再次执行
>phonegap run android  --verbose
这次编译就成功了,运行的界面如下:

phonegap目录结构说明

额,本来想用tree打印到二级目录,但是windows下的tree命令没有这样的参数,只能截图了:
my-app目录下结构如下:
config.xml是整个phonegap的配置文件,很重要
www/ 目录里存放的是你的html5代码相关文件,用命令行中进行编译的时候,phonegap会自动把这个目录下的文件拷贝到到android app的assets/目录下。
(注意:两种情况下会覆盖android目录下的assets/目录  :
1.如果你是在命令行下用phonegap run 命令进行编译安装 
2.如果在命令行下安装cordova插件
所以, 建议修改html5代码的时候,就在这个目录下修改)
plugins/  目录里是你项目中用到的cordova插件,对应的插件需要去命令行下在线安装。
platforms/ 目录里是 里有个叫android/ 的目录, 里面就是android项目的所有代码资源。你可以将其导入到eclipse或则和android studio中开发。
=====================
教程完!

 

来自为知笔记(Wiz)

 

转载请注明:大步's Blog » phonegap开发环境搭配教程

SiteMap