Cordovaによるアプリ作成メモ - 環境準備 -


- - -

Cordovaを利用してサンプルアプリの起動確認までを行った際のメモ。

+ PC環境
  - OS X El Capitan

- - -

## 1.環境構築
### nodeインストール
- node version確認

```bash:terminal
$ nodebrew list
```
> current: v5.0.0
	
```bash:terminal
$ nodebrew ls-remote
```
> v5.7.0 
		
- node最新化

```bash:terminal
$ nodebrew install v5.7.0
$ nodebrew use v5.7.0
$ nodebrew ls
$ node -v
```
> current: v5.7.0

### cordovaインストール
- cordova最新化

```bash:terminal
$ npm install cordova -g
$ cordova -v
```
> 6.0.0

### Android SDKインストール
- Android SDK 環境確認

```bash:.bashrc
## android sdk
export ANDROID_SDK_HOME=/Users/xxxxx/Library/Android/sdk
export PATH=$PATH:$ANDROID_SDK_HOME/tools:$ANDROID_SDK_HOME/platform-tools
```
パスが通ってればOK.

```bash:terminal
$ android -h
$ adb version
```

### iOSエミュレータインストール

```bash:terminal
$ brew install ios-sim
```


## 2.プロジェクト作成
### generator
```bash:terminal
$ cordova create hello com.example.hello HelloWorld -d
```

```bash:terminal
$ tree hello
hello
├── config.xml
├── hooks
│   └── README.md
├── platforms
├── plugins
└── www
    ├── css
    │   └── index.css
    ├── img
    │   └── logo.png
    ├── index.html
    └── js
        └── index.js

7 directories, 6 files
```

### AndroidとiOS用のファイルを追加

```bash:terminal
$ cordova platform add ios
$ cordova platform add android
```

```bash:terminal
$tree hello -d
hello
├── hooks
├── platforms
│   └── android
│       ├── CordovaLib
│       │   └── src
│       │       └── org
│       │           └── apache
│       │               └── cordova
│       │                   └── engine
│       ├── assets
│       │   └── www
│       │       ├── cordova-js-src
│       │       │   ├── android
│       │       │   └── plugin
│       │       │       └── android
│       │       ├── css
│       │       ├── img
│       │       └── js
│       ├── cordova
│       │   ├── lib
│       │   │   └── builders
│       │   └── node_modules
│       │       ├── cordova-common
│       │       │   ├── node_modules
│       │       │   │   ├── bplist-parser
│       │       │   │   │   ├── node_modules
│       │       │   │   │   │   └── big-integer
│       │       │   │   │   └── test
│       │       │   │   ├── cordova-registry-mapper
│       │       │   │   │   └── tests
│       │       │   │   ├── glob
│       │       │   │   │   └── node_modules
│       │       │   │   │       ├── inflight
│       │       │   │   │       │   └── node_modules
│       │       │   │   │       │       └── wrappy
│       │       │   │   │       │           └── test
│       │       │   │   │       ├── inherits
│       │       │   │   │       ├── minimatch
│       │       │   │   │       │   └── node_modules
│       │       │   │   │       │       └── brace-expansion
│       │       │   │   │       │           └── node_modules
│       │       │   │   │       │               ├── balanced-match
│       │       │   │   │       │               │   └── test
│       │       │   │   │       │               └── concat-map
│       │       │   │   │       │                   ├── example
│       │       │   │   │       │                   └── test
│       │       │   │   │       ├── once
│       │       │   │   │       │   └── node_modules
│       │       │   │   │       │       └── wrappy
│       │       │   │   │       │           └── test
│       │       │   │   │       └── path-is-absolute
│       │       │   │   ├── osenv
│       │       │   │   │   ├── node_modules
│       │       │   │   │   │   ├── os-homedir
│       │       │   │   │   │   └── os-tmpdir
│       │       │   │   │   └── test
│       │       │   │   ├── plist
│       │       │   │   │   ├── dist
│       │       │   │   │   ├── examples
│       │       │   │   │   │   └── browser
│       │       │   │   │   ├── lib
│       │       │   │   │   └── node_modules
│       │       │   │   │       ├── base64-js
│       │       │   │   │       │   ├── bench
│       │       │   │   │       │   ├── lib
│       │       │   │   │       │   └── test
│       │       │   │   │       ├── util-deprecate
│       │       │   │   │       ├── xmlbuilder
│       │       │   │   │       │   ├── lib
│       │       │   │   │       │   └── node_modules
│       │       │   │   │       │       └── lodash
│       │       │   │   │       │           ├── array
│       │       │   │   │       │           ├── chain
│       │       │   │   │       │           ├── collection
│       │       │   │   │       │           ├── date
│       │       │   │   │       │           ├── function
│       │       │   │   │       │           ├── internal
│       │       │   │   │       │           ├── lang
│       │       │   │   │       │           ├── math
│       │       │   │   │       │           ├── number
│       │       │   │   │       │           ├── object
│       │       │   │   │       │           ├── string
│       │       │   │   │       │           └── utility
│       │       │   │   │       └── xmldom
│       │       │   │   ├── semver
│       │       │   │   │   ├── bin
│       │       │   │   │   └── test
│       │       │   │   ├── underscore
│       │       │   │   └── unorm
│       │       │   │       └── lib
│       │       │   └── src
│       │       │       ├── ConfigChanges
│       │       │       ├── ConfigParser
│       │       │       ├── CordovaError
│       │       │       ├── PluginInfo
│       │       │       └── util
│       │       ├── elementtree
│       │       │   ├── lib
│       │       │   │   └── parsers
│       │       │   ├── node_modules
│       │       │   │   └── sax
│       │       │   │       ├── examples
│       │       │   │       ├── lib
│       │       │   │       └── test
│       │       │   └── tests
│       │       │       └── data
│       │       ├── nopt
│       │       │   ├── bin
│       │       │   ├── examples
│       │       │   ├── lib
│       │       │   ├── node_modules
│       │       │   │   └── abbrev
│       │       │   └── test
│       │       ├── properties-parser
│       │       │   └── test
│       │       ├── q
│       │       └── shelljs
│       │           ├── bin
│       │           ├── scripts
│       │           └── src
│       ├── libs
│       ├── platform_www
│       │   ├── cordova-js-src
│       │   │   ├── android
│       │   │   └── plugin
│       │   │       └── android
│       │   └── plugins
│       │       └── cordova-plugin-whitelist
│       ├── res
│       │   ├── drawable-hdpi
│       │   ├── drawable-land-hdpi
│       │   ├── drawable-land-ldpi
│       │   ├── drawable-land-mdpi
│       │   ├── drawable-land-xhdpi
│       │   ├── drawable-ldpi
│       │   ├── drawable-mdpi
│       │   ├── drawable-port-hdpi
│       │   ├── drawable-port-ldpi
│       │   ├── drawable-port-mdpi
│       │   ├── drawable-port-xhdpi
│       │   ├── drawable-xhdpi
│       │   ├── values
│       │   └── xml
│       └── src
│           ├── com
│           │   └── example
│           │       └── hello
│           └── org
│               └── apache
│                   └── cordova
│                       └── whitelist
├── plugins
│   └── cordova-plugin-whitelist
│       ├── doc
│       │   ├── de
│       │   ├── es
│       │   ├── fr
│       │   ├── it
│       │   ├── ja
│       │   ├── ko
│       │   ├── pl
│       │   └── zh
│       └── src
│           └── android
└── www
    ├── css
    ├── img
    └── js

168 directories
```

### 対象プラットフォーム確認

```bash:terminal
$cordova platform ls
```
>Installed platforms: android 5.1.0
>Available platforms: amazon-fireos, blackberry10, >browser, firefoxos, ios, osx, webos

### メモ
対象プラットフォーム削除

```bash:terminal
$ cordova platform remove ios
```

### プロジェクト構成

| dir         | description |
| ----        | ----        |
| hello/      |             |
| ├ .cordova  | -> cordovaプロジェクト設定ファイルが格納されている |
| ├ www	       | -> HTML5リソースやアプリ設定に関するファイル |
| ├ platforms | -> 各プラットフォーム特有のプロジェクトファイルが記述されている |
| ├ merges    | -> 各プラットフォーム特有のリソース<br>wwwディレクトリがプラットフォームごとにコンパイルされる際にマージされる |
| └ plugins   | -> Cordovaプラグインが格納されている |


## 3.エミュレータ起動
### Androidエミュレータ

```bash:terminal
$ cordova emulate android -d
```

AVDとのバージョンを合わせておくこと

```bash:terminal
cat ./hello/platforms/android/AndroidManifest.xml
※　build.gradleはManifestから情報取得
```
>\<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="23" />


### iOSエミュレータ

```bash:terminal
$ cordova emulate ios -d
```

### ブラウザエミュレータ

```bash:terminal
$ cordova serve android
```
>Static file server running on: http://localhost:8000 (CTRL + C to shut down)


## 4.実機起動
### Android端末

```bash:terminal
$ cordova run android
```


# 参考URL
https://cordova.apache.org/docs/ja/dev/guide/platforms/android/