cordovaの使い方(Windowsでのandroidのビルド手順)

##cordovaをwindows10環境でandroid端末向けにビルドする手順


※個人的な備忘録なので結構雑です。

##Cordova公式サイト
[Cordova公式サイト](https://cordova.apache.org)	


##Cordovaを導入するための事前準備

Java SE Development Kit 8(Java SDK)
~~Ant~~ 
android SDK
node.js
Gradle

##事前準備

Node.jsがインストール済み
~~Antがインストール済み~~
Android SDKがインストール済み
Gradle　 6.4.0以降がインストール済み


##Java SDKのインストールは省略

andのインストールは省略
ダウンロードサイトant
公式サイト(http://ant.apache.org/bindownload.cgi)
からダウンロードして、適当にフォルダに展開する

Antを利用する上で必要となる環境変数ANT_HOMEの設定とPATHの設定を行います。
では「変数名」に"ANT_HOME"、「変数値」に"C:\apache-ant-1.9.4"を入力し
node.jsのインストール
公式サイト(http://nodejs.org/) からダウンロードし、インストール

Cordovaのインストール
コマンドプロンプト(PowerShell)からインストール
**npm install -g cordova**


##アプリを作成
** cordova create hello com.example.hello HelloWorld -d **
　このコマンドは、helloディレクトリ以下にアプリの識別子としてcom.example.helloを持つ「HelloWorld」という名前のアプリのプロジェクトを作成します。 -dオプションは、cordovaコマンド実行中の途中経過を表示するオプションです。

プラットフォームを追加
**cordova platform add  android**


実行例
PS C:\Users\XXX\cordova\hello> cordova platform add android
Adding android project...
Creating Cordova project for the Android platform:
        Path: platforms\android
        Package: com.example.hello
        Name: HelloWorld
        Activity: MainActivity
        Android target: android-23
Android project created with cordova-android@5.2.2
Discovered plugin "cordova-plugin-whitelist" in config.xml. Adding it 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 p
latform version, you do *not* need this plugin since the whitelist will be built in.



##プラットフォームの確認
**cordova platform ls** と入力すると
現在どのようなプラットフォームで開発されているか確認出来る。

android APIの確認。
**cordova android list target**
---
> cordova platform ls
Installed platforms:
  android 6.0.0
Available platforms:
  amazon-fireos ~3.6.3 (deprecated)
  blackberry10 ~3.8.0
  browser ~4.1.0
  firefoxos ~3.6.3
  webos ~3.7.0
  windows ~4.4.0
  wp8 ~3.8.2 (deprecated)
---

##サポートするandroidのバージョン
一般的な規則として Google の分布のダッシュ ボード上の 5% を下回ると Android のバージョンになるコルドバでサポートされません。
cordova (Android の API レベル 14 ) アンドロイド 4.0.x 以降をサポートしています。

アプリをビルド
**cordova build**

実行例
初回、結構時間がかかります
PS C:\Users\xxxx\cordova\hello> cordova build
ANDROID_HOME=C:\Android\sdk
JAVA_HOME=C:\Program Files\Java\jdk1.8.0_31
Downloading http://services.gradle.org/distributions/gradle-2.13-all.zip
Unzipping C:\Users\xxxx\.gradle\wrapper\dists\gradle-2.13-all\7hsc6vr6mi3i6i5m7q9hj4ci1q\gradle-2.13-all.zip to C:\Use
:cdvBuildDebug
＞.....　途中省略
BUILD SUCCESSFUL
Total time: 8 mins 40.152 secs
Built the following apk(s):
        C:/Users/XXXXX/cordova/hello/platforms/android/build/outputs/apk/android-debug.apk
PS C:\Users\kmaeda\cordova\hello>



##アプリを実行
cordova run

エミュレータか実機が接続されていれば、androidが起動されて動作確認ができる。
エミュレータは遅いので実機で確認した方が速くて、確実です


##ブラウザで確認する
ブラウザで動作することもできます。
cordova serve android


PS C:\Users\hoge> cordova serve android
Static file server running on: http://localhost:8000 (CTRL + C to shut down)


リリース版を作成
cordova build android --release

＃署名付きAPKの作成

##鍵の作成

keytool -genkey -v -keystore .keystore -alias <エイリアス名> -keyalg RSA -validity 10000


上記では、10000日間有効な.keystoreという鍵ファイルを作成しています。
エイリアス名は、プロジェクト名でよいと思います。

##鍵の確認

keytool -list -v -keystore .keystore -storepass <パスワード>



##apkに署名をつける
jarsigner -verbose -keystore <キーストアファイル>  <アプリ.apk> <エリアス名>


##署名の確認

jarsigner -verify -verbose -certs <アプリ.apk>


##最適化
# アライメントを設定する
apk内のリソースファイルなどの未圧縮データを4バイトバウンダリに整列。

**  zipalign [-f] [-v] <alignment> infile.apk outfile.apk**
 
# アライメントが正しく設定されたか確認する
  zipalign -c -v <alignment> existing.apk