過去に開発&公開したスマートフォンアプリをアップデートしようと思いつつ、なかなか手がつけられていませんでした。
が、数日前に急に「時間を作ってでもやらねば」と思い立ち、他にやるべき多くの作業もありましたが、それらよりも優先順位を上げて進めることにしました。
で、作業開始したものの、なんだかんだ躓くハメに。。。
というのも、今回アップデートしようと思ったスマートフォンアプリはCordova(というかPhonegap)を使ったものでしたが、数年経っていたためPhonegapのバージョンやその他の開発環境などに変化があり、それが多くの原因でした。
というわけで、作業を進める中で行なったPhonegapについての解決方法を書きたいと思います。
なお、ここで使った開発マシンはMacなので、Windowsの方にとっては多少異なる内容になっているかもしれません。
iOS版はPhonegap関連の問題はほとんど無し
まずはiOS版についてですが、公開当時のPhonegapバージョンは3.4、現在は6.4.6です。
何も考えず以下コマンドでビルドしてみましたが、全く問題なくビルド完了しました。
phonegap build ios
Xcodeプロジェクトを開いてiOSシミュレータで実行してみたところ、これも全く問題なくできました。
ただ、この後実機テストをしようと思い、接続してRunしてみるとCodeSign関連のエラーで実行できず。
この話についてはPhonegapとは少し関係が薄いのでここでは詳しくは省略させて頂きますが、Apple DeveloperサイトでCertificatesやProvisioning Profilesを改めて作成することで解決しました。
Android版はビルド完了できず
今回の話のメインとなるAndroid版です。
iOS版と同様に何も考えず以下コマンドでビルドしてみました。
phonegap build android
こちらはエラーが多数発生し、ビルド完了できませんでした。
原因はというと、自分自身すっかり忘れてしまっていましたが、開発マシンを変えてしまった&Phonegapを利用しての開発は現マシンではしていなかったことが原因でした。
つまり環境構築が充分ではなかったということですね。。。
というわけで、環境構築の手順を次項で書いてみます。
PhonegapでのAndroid開発用環境構築
1) Android Studioダウンロード&インストール
以下サイトからダウンロードします。
Android Studioをインストールするのは、Android SDKインストールのためです。本体は実は必要ありません。
インストールして起動したら、Welcome画面内右下のConfigure→SDK Managerから必要なものをインストールします。
2) ANDROID_HOMEを設定
.bash_profileにAndroid SDKディレクトリへのパスを設定する必要があります。.bash_profileのどこかに以下のように記述します。
export ANDROID_HOME=$HOME/Library/Android/sdk
Macの場合、Android Studioでインストールする場合にはホームフォルダのLibrary内にインストールされるので以上のようになります。Windowsは・・・すみません。判りません。
3) Java SE Development Kit 8ダウンロード
JavaのSDK(正式な呼び方はJDKだったかと)もインストールする必要があります。
Java SE Development Kit 8ダウンロードサイト
4) JAVA_HOMEを設定
Javaのパスも.bash_profileに記述する必要があります。
私は以下のように記述しました。
export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
5) SDKツールのtemplatesのみ追加
ここが一番躓きました。
最近のPhonegapではgradleというビルドツールを使っていますが、Android StudioでインストールするAndroid SDKには必要なファイルがありません。
というわけでググりまくった結果、Stack Overflow辺りで「SDKのみを別にダウンロードしてそこからコピーするといいよ~」という情報を発見。(URLをご紹介したいのですが判らなくなってしまいました。)
以下URLからダウンロードしZIPを解凍して、templatesフォルダをAndroid SDKの中のtoolsフォルダ内にコピーします。
https://dl.google.com/android/repository/tools_r25.2.3-windows.zip
とここまで書いて気づきましたが、このZIPファイルだけをウンロード&保存すれば良い話のような・・・。いずれAndroid Studioも使ってやろうと決意しつつ、この点については後日検証します。
6) プロジェクトアップデート
ここからは環境構築ではないですが、最新のPhonegapバージョンに合わせてプロジェクトのアップデートも必要でした。
phonegap platform update android
iOS版については今回は必要ありませんでしたので、次回のアプリアップデートの際にしようと思います。
7) Phonegapプラグインアップデート
この作業は全てのプロジェクトにおいて必須というわけではありませんが、もしPhonegapプラグインを使っている場合にはそれもアップデートが必要になるかもしれません。私はビルド時のエラーを確認しつつ進めました。
Phonegapプラグインのアップデートは削除して再度インストールという手順で行います。
phonegap plugin rm (プラグイン名)
phonegap plugin add (プラグイン名)
注意点としては、プラグインが無くなっている可能性もあるので、以下コマンドで状況を確認する必要があると思われます。
phonegap plugin search (プラグイン名)
8) plugins/android.jsonを必要に応じて編集
これも必須ではないかもしれません。Phonegapプラグインをアップデートした後、ビルドをしてみると「android.jsonに記述されているプラグインが無い」というような旨のエラーが発生しました。
Phonegapプラグインアップデート時に依存関係やその他の都合で、必要のないPhonegapプラグインの記述まで残ってしまったのだと思われます。
なので、「plugins/android.json」をエディタで直接開き、必要のない記述を削除します。
これでようやく「phonegap build android」が成功しました。
細かいアプリアップデートをお勧めします
というわけで、Phonegapを利用したスマートフォンアプリのアップデート時に困ったことの解決方法について書いてみました。
PhonegapでのビルドについてはAndroid版でエラーが発生、iOS版はPhonegapではエラーが出ないものの、その後のXcodeでエラーが発生、という状況でした。
細かくアップデートしていれば問題が出る可能性は低いと思いますので、可能な方はそうすることをお勧めします。
なお、今回アップデートしたアプリは「集中力数字タップ」という、数字を順にタップするだけの簡単なゲームアプリです。
集中力を鍛えたい方はぜひ。