Mac+Cordovaを使ってandroid,iosアプリを作る初級編

続　「Mac環境で ~~PhoneGap~~ Cordovaを使ったアプリ開発をしよう！」
[Mac+PhoneGap(Cordova)+AndroidStudioの環境つくり](http://qiita.com/tagosaku324/items/b844f1bf4ea3e62a1af8)
cordova環境の準備はできた。

android,ios それぞれ実機で確認できるとこまでを作業する

＜流れ＞
1. プロジェクトの作成
2. platformsの作成
3. build
4. run <-実機に入れる
iOSのアプリ開発、アプリ配信を行うには「iOS Developer Program」に登録をして年間参加費（201６年4月現在　11,800円）を払うなどの手続きが必要です。
- [iOS Developer Program](https://developer.apple.com/support/enrollment/jp/)
- [プログラムの利用方法](https://developer.apple.com/programs/how-it-works/jp/)
を参照


# アプリ作成に進むための準備
## android編（前記事のおさらいも含める）
(前提)
Cordovaでbuildするにはandroidで使用するSDK関係が必要です。
SDK関係を個別にもインストールできるようですが、煩雑になりそうなのでAndroidStudioをインストールすることで管理することにします。
また、AndroidStudioのインストールではJDK7がインストールされている必要があるようです。
>AndroidStudioのインストールについては以下を参照
[MacにAndroidStudioをインストール（update）する](http://qiita.com/tagosaku324/items/c82e4da874561e55cc39)

## ios編
(前提)
Xcodeがインストールされている必要があります。
>
前に書いた記事が参考になれば。。AppleStoreから普通にインストールもできます。
[Xcodeインストール](http://qiita.com/tagosaku324/items/44e4cfa4a0480311c9b2)

また、エミュレータで確認するだけにしても、「cordova run」するためには[ios-sim]がインストールされていないとrunできないようです。
npm（Node.jsで作られたパッケージモジュールを管理するツール）からインストールできます。
```
$ npm install -g ios-sim
```
#1. プロジェクトを作成する
※Cordovaのオプションがわからない時は「cordova --help」とすれば出てきます。

```:sample_appというプロジェクトフォルダを作成する
$ cordova create sample_app
Creating a new cordova project.
├── config.xml
├── hooks
│   └── README.md
├── platforms
├── plugins
└── www
    ├── css
    │   └── index.css
    ├── img
    │   └── logo.png
    ├── index.html
    └── js
        └── index.js

7 directories, 6 files
```

#2. platformsの作成
wwwフォルダにかかれた内容はbuildをすると、platformsの中にデバイスごとに生成されます。
アプリはplatformsに作られた内容を参照します。
そのため、platformsには各デバイス用の箱を用意してあげなくてはいけません。

```:platformにandroidを追加する
$ cd sample_app/
$ cordova platform add android
Running command: /Users/***/.cordova/lib/npm_cache/cordova-android/4.1.1/package/bin/create /Users/***/PhoneGapTmp/sample_app/platforms/android io.cordova.hellocordova HelloCordova --cli
Creating Cordova project for the Android platform:
	Path: platforms/android
	Package: io.cordova.hellocordova
	Name: HelloCordova
	Activity: MainActivity
	Android target: android-22
Copying template files...
Android project created with cordova-android@4.1.1
Discovered plugin "cordova-plugin-whitelist" in config.xml. Installing to the project
Fetching plugin "cordova-plugin-whitelist@1" via npm
Installing "cordova-plugin-whitelist" for android

               This plugin is only applicable for versions of cordova-android greater than 4.0. If you have a previous platform version, you do *not* need this plugin since the whitelist will be built in.

＜platforms/androidフォルダが作られます。フォルダ内を確認すると何かいろいろ作られている＞

$ tree platforms/android/　
platforms/android/
├── AndroidManifest.xml
├── CordovaLib
│   ├── AndroidManifest.xml
:
:
                └── whitelist
                    └── WhitelistPlugin.java

63 directories, 170 files
$
```
```:platformにiosを追加する
$ cd sample_app/
$ cordova platform add ios
Adding ios project...
Running command: /Users/***/.cordova/lib/npm_cache/cordova-ios/3.9.2/package/bin/create /Users/***/PhoneGapTmp/sample_app/platforms/ios io.cordova.hellocordova HelloCordova --cli
iOS project created with cordova-ios@3.9.2
Installing "cordova-plugin-whitelist" for ios

＜platforms/iosフォルダが作られます。こちらもいろいろ作られています＞

$ tree platforms/ios
platforms/ios
├── CordovaLib
│   ├── Classes
│   │   ├── CDV.h
│   │   ├── CDVAvailabili
:
:
    └── js
        └── index.js

49 directories, 212 files
$
```
#3. build
[cordova create]で作った際にwww下にあるファイルはcordovaのサンプル用ファイルです。
とりあえずbuildしてみます。

```:android版
$ cordova build android
Running command: /Users/***/PhoneGapTmp/sample_app/platforms/android/cordova/build 
:
:＜ーズラズラっと流れます。終わるまで待ちます。
:
BUILD SUCCESSFUL

Total time: 1 mins 9.381 secs
Built the following apk(s):
    /Users/***/PhoneGapTmp/sample_app/platforms/android/build/outputs/apk/android-debug.apk
$ 
```
```:ios版
$ cordova build ios
Running command: /Users/***/PhoneGapTmp/sample_app/platforms/ios/cordova/build 
Building project  : /Users/***/PhoneGapTmp/sample_app/platforms/ios/HelloCordova.xcodeproj
:
:＜ーズラズラっと流れます。終わるまで待ちます。
:
** BUILD SUCCEEDED **

** BUILD SUCCEEDED **
$ 
```

#4. run
いよいよ実機に入れての確認androidはすぐに確認できる状態にまでもっていけますが、iosはAppleDeveloper登録されていないと実機に登録できない仕組みになっています。

##android
＜手順＞
1. 実機をUSBでつなげます。
2. run実行してみます。
デバイス側の設定ができていない場合はエミュレータが立ち上がります。

##android
```:android版
$ cordova run android
Running command: /Users/***/PhoneGapTmp/sample_app/platforms/android/cordova/run 
ANDROID_HOME=/Users/***/Library/Android/sdk
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home
WARNING : No target specified, deploying to emulator
WARNING : no emulator specified, defaulting to Nexus_5_API_22_x86
Waiting for emulator...

```
エミュレータがたちあがってしまい、実機に登録できない！！！
それはandroid実機側で設定をしなくてはならないのです。

###android実機の設定
android実機を承認させるために設定をしなくてはいけません。
Androidには「開発者向けオプション」という裏設定のようなものが存在します。
[Android 4.2で「開発者向けオプション」を表示する方法](http://juggly.cn/archives/89033.html)
ちなみに、開発向けオプションを解除する方法は本体を初期化するしかないようです。
（機種やバージョンによって違うかもしれません。）

開発者向けオプションメニューがでてきたら、USBデバッグモードをオンにします。
再度run 実行！！

```:android版
$ cordova run android
Running command: /Users/***/PhoneGapTmp/sample_app/platforms/android/cordova/run 
ANDROID_HOME=/Users/***/Library/Android/sdk
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home
WARNING : No target specified, deploying to device '0a81aa5b'.
Running: /Users/***/PhoneGapTmp/sample_app/platforms/android/gradlew cdvBuildDebug -b /Users/***/PhoneGapTmp/sample_app/platforms/android/build.gradle -PcdvBuildArch=arm -Dorg.gradle.daemon=true
:preBuild
:compileDebugNdk UP-TO-DATE
:preDebugBuild
:checkDebugManifest
　：
　：
Installing app on device...
Launching application...
LAUNCH SUCCESS
$
```
##ios
＜手順＞
1. 実機をUSBでつなげます。
ここで、androidと同様にrun実行してみても構いませんが、実機をつなげていても、エミュレータがたち上がります。

```:ios版
$ cordova run ios
Building project  : /Users/***/PhoneGapTmp/sample_app/platforms/ios/HelloCordova.xcodeproj
	Configuration : Debug
	Platform      : emulator

：
：
** BUILD SUCCEEDED **

No target specified for emulator. Deploying to iPhone-6 simulator
** RUN SUCCEEDED **
$ 
```
![スクリーンショット 2016-04-14 17.49.08.png](https://qiita-image-store.s3.amazonaws.com/0/39911/434d52fd-e05e-2a50-b769-7ac41d30536e.png)

###ios実機検証のためにxcodeを設定
iosの実機で試したい場合は、Appleに収めるものを収めて、メンバーになっているならばxcodeに設定をします。

1.xcode->Preference->Accounts に認証できているAppleIDを登録
2.platforms/ios/HelloCordova.xcodeproj をXcodeで開きます。

まだこの時点、実機は認証されていないと思います。なので、デバイスには実機の名前が出てきません。
![スクリーンショット 2016-04-14 18.04.47.png](https://qiita-image-store.s3.amazonaws.com/0/39911/3dddd4f4-bd38-cf5d-ca3f-1298bc841191.png)

3.フォルダマークのとこでプロジェクト名を選択し、Generalを開く。
4.Teamに認証された名前が出てきているはずなのでそれを選択する。
![スクリーンショット 2016-04-14 18.13.19.png](https://qiita-image-store.s3.amazonaws.com/0/39911/a1771b32-4c52-4553-85ec-29f5eeec3cee.png)

これで、デバイスにつなげた実機が出てきます。
実機を選択すると、デバイス認証が動きます。
実行ボタンを押すとインストールされます。
実機にはいるまで少し時間がかかるので、何度も実行ボタンを押すのはやめましょう。

#実行結果
実機に[HellowCordova]というアプリがつくられてこんな感じの画面が出てくれば成功。
実機で試せたことになります。
![スクリーンショット 2016-04-14 17.29.37.png](https://qiita-image-store.s3.amazonaws.com/0/39911/abd6161e-b5ac-aeff-908e-26be8ca6b754.png)