-
Notifications
You must be signed in to change notification settings - Fork 0
DNET_Cordova
- 戻る
- ハイブリッドアプリ
-
クロスプラットフォーム開発ツール
- Flutter
- ReactNative
- Cordova (PhoneGap)
-
モバイルアプリのための万能ツールではなく、
ハイブリッドアプリを開発するためのフレームワーク。 -
開発の言語・ツールは自由に組み合わせられる。
(WebViewにHTML5アプリを組み込むだけなので、
ハイブリッドアプリの該当節を参照)- JavaScript、HTML、CSS
- Angular、React、Vue.js、OnsenUIなど。
- 故に、プラットフォーム移行は、
内部コンテンツ(≒SPA)部分の乗せ換えで足りる。
-
2011年10月4日
- Nitobi社が開発していたPhoneGapをAdobeが買収、
- Adobeは同時にPhoneGapを、Apache Foundationへ寄贈した。
- Apache FoundationではCordovaというブランド名が与えられた。
-
2020年10月1日
- AdobeはPhoneGap / PhoneGap Buildの開発及びサービス提供を終了。
- 現在、アシアルから、Monacaへのマイグレーション支援が提供されている。
-
PhoneGapはCordovaベースのAdobe製品版。
-
以下の様なサービスも提供されている。
-
PhoneGap Build
PhoneGapを利用したアプリケーションの
ビルド環境をオンラインで利用できるサービス。 -
PhoneGap Debug
PhoneGap製のアプリをデバイス上で
デバッグすることができるサービス。 -
PhoneGap Emulation
Webブラウザ(Google Chrome)上で動作する
エミュレータによってアプリの検証が行えるサービス。
-
-
アシアル株式会社(Asial Corporation)が開発・運営している。
-
Cordovaベースの開発プラットフォーム
-
内部的には、最新版のCordovaを利用している。
-
開発・ビルド・デプロイまでWeb上で可能なのが特徴。
- Webブラウザからアクセス可能なWeb IDE
- 開発したアプリをビルドするサービス
- およびデプロイするサービス(と、サーバー)
-
-
Freeプラン以外ではローカル開発も行える
Monaca LocalkitやMonaca CLIも使用可能。
(Monaca CLIは、 Cordova CLIの拡張っぽい) -
mBaaSを選択的に利用可能。
-
Monaca Docs
- 他のプラットフォームからの移行
https://docs.monaca.io/ja/products_guide/migration/
- 他のプラットフォームからの移行
- Android
- iOS
- Windows Phone 8
- Windows 8/8.1/10
- Firefox OS
- Amazon Fire OS
- Blackberry 10
- Ubuntu
- Tizen
プラットフォームのすべての機能をサポートしているわけではない。
-
プラットフォーム毎のWebView相当に違いがある。
- HTML5の機能やCSSのプロパティに違いがある。
- Windowsでは、innerHTMLプロパティやalert関数などが利用できない。
-
プラグインを作成すれば機能は実現できる。
ただし、プラットフォーム毎の制約を受ける。
-
実機・エミュレーターへデプロイしデバッグできる。
-
実機へのデプロイには、各種ネイティブ環境への
デプロイに必要な環境設定が必要になる。
-
SDKをWindows向けにもMac/Linux向けにもリリース
-
参考:Android
-
Windowsの開発環境が必要になる。
-
・・・
-
参考:Windows 10
- Windows 10 Apache Cordova プラットフォームの概要 | Visual Studio 日本チーム
https://devblogs.microsoft.com/visualstudio-jpn/windows-10-apache-cordova/
- Windows 10 Apache Cordova プラットフォームの概要 | Visual Studio 日本チーム
-
Node.js製コマンドライン開発ツール
- 新しいプロジェクトの作成
- 異なるプラットフォームで構築
- エミュレーター内で実際のデバイスで実行
-
詳しくは、「Cordova CLIコマンド」を参照。
-
Apache Cordovaでモバイルアプリを開発するには、
- (JavaScritpを記述する)テキスト・エディタ
- (プロジェクトの生成やデバッグ実行を行うための各種)Cordova CLI
だけを利用しての開発も可能だが、
-
Apache CordovaをサポートしたIDEを導入すると、
コマンド操作を行うことなくアプリ開発を進めることができる。-
VS Code + Cordova Tools Extension
(Cordova Tools Extensionの該当節を参照) -
Monaca
- アシアル社が提供しているクラウド上でモバイルアプリを開発できるサービス
- Cloud IDE、ローカル開発ツール、デバッガ、バックエンドのサポートを提供。
- AndroidやiOSなどの環境を用意せずに手軽に開発できる。
- 独自のUIフレームワーク、Onsen UIとIonic Frameworkとの統合を提供する。
- ローカル上で開発できる「Local Kit」や、Visual Studioとの連携ができる。
-
, etc.
-
- Cordovaフレームワークが提供するJavaScript側インターフェイス
- Cordovaの機能にアクセスする場合、HTML中でcordova.jsを読み込む。
- ネイティブとHTML5とのブリッジを確立するための初期化処理の完了イベント
- 開発者は、HTML5側でdevicereadyイベントを察知した後にネイティブ機能を呼び出す。
- loadイベントの後にブリッジの初期化処理が実行され、devicereadyイベントが発火する。
プロジェクトは、Cordova CLIコマンドで作成する。
| # | ファイル・フォルダ | 説明 |
|---|---|---|
| 1 | config.xml | 各プラットフォームに展開されるCordova用設定ファイル。 |
| 2 | wwwフォルダ | HTML5リソースやアプリ設定に関するファイルが格納される。 ルートフォルダに配置したHTMLファイルなどがアプリとして表示される。 |
| 3 | pluginsフォルダ | プラグインが格納されている。 |
| 4 | mergesフォルダ | HTML5側をプラットフォームごとに切り替える。 wwwディレクトリがプラットフォームごとにコンパイルされる際、 ここに格納されている各プラットフォーム特有のリソースがマージされる。 |
| 5 | platformsフォルダ | ネイティブ側をプラットフォームごとに切り替える。 各プラットフォーム特有のプロジェクトファイルが格納される。 |
Cordova - config.xmlの該当節を参照。
以下の中身を読んで理解する。
-
index.html
エントリポイント -
cssフォルダ
CSSファイル群- index.css
-
scriptフォルダ
JavaScriptファイル群- index.js
-
imagesフォルダ
イメージ・ファイル群 -
fontsフォルダ
フォント・ファイル群
Cordovaで利用するプラグインやその設定ファイルを格納する。
HTML5側をプラットフォームごとに切り替える。
-
プラットフォーム特有のHTML5リソースを配置
- merges/android
Androidプラットフォームだけで用いたい画像やJavaScript - merges/ios
iOSプラットフォームだけで用いたい画像やJavaScript
- merges/android
-
ビルド時の動作(Androidの場合)
- wwwディレクトリの内容がplatforms/android/assets/wwwディレクトリ以下にコピーされる。
- merges/androidディレクトリの内容がplatforms/android/assets/wwwディレクトリ以下にコピーされる。
※ 同じ名前のファイルがある場合には上書きされる。
ネイティブ側をプラットフォームごとに切り替える。
-
プロジェクト
-
Androidの場合
Androidプロジェクトが生成される(Android Studioなどで開くことが出来るらしい)。 -
iOSの場合
Xcodeプロジェクトが生成される(Xcodeで開くことが出来るらしい)。
-
-
アイコン設定
- Androidの場合
platforms/android/res以下に、
- Androidの場合
| # | ファイルのパス | サイズ |
|---|---|---|
| 1 | drawable-ldpi/icon.png |
36*36px |
| 2 | drawable-mdpi/icon.png |
48*48px |
| 3 | drawable-hdpi/icon.png |
72*72px |
| 4 | drawable-xhdpi/icon.png |
96*96px |
- iOSの場合
platforms/ios/(アプリ名)/Resources/icons以下に、
| # | ファイルのパス | サイズ |
|---|---|---|
| 1 | icon.png |
57*57px |
| 2 | icon@2x.png |
114*114px |
| 3 | icon-72.png |
72*72px |
| 4 | icon-72@2x.png |
144*144px |
-
スプラッシュスクリーン設定
- Androidの場合
(splashscreenを設定した上で、)platforms/android/res以下に、
- Androidの場合
| # | 9-patchファイルのパス | サイズ(縦*横) |
|---|---|---|
| 1 | drawable-ldpi/splash.9.png |
426*320px |
| 2 | drawable-mdpi/splash.9.png |
470*320px |
| 3 | drawable-hdpi/splash.9.png |
640*480px |
| 4 | drawable-xhdpi/splash.9.png |
960*720px |
- iOSの場合
platforms/ios/(アプリ名)/Resources/splash以下に、
| # | pngファイルのパス | サイズ(縦*横) |
|---|---|---|
| 1 | Default-568h@2x~iphone.png |
640*1136px |
| 2 | Default-Landscape~ipad.png |
1024*748px |
| 3 | Default-Landscape@2x~ipad.png |
2048*1496px |
| 4 | Default-Portrait~ipad.png |
768*1004px |
| 5 | Default-Portrait@2x~ipad.png |
1536*2008px |
| 6 | Default~iphone.png |
320*480px |
| 7 | Default@2x~iphone.png |
640*960px |
- 特有の設定項目(preference)
(Cordova - config.xmlの該当節を参照)
Cordova Tools Extensionの該当節を参照。
Cordova Tools Extensionの該当節を参照。
Cordova Tools Extensionの該当節を参照。
-
プロジェクト作成
cordova create ・・・
-
ターゲット・プラットフォームの追加
cordova platform add ・・・-
例
-
android
cordova platform add android -
browser
cordova platform add browser
-
-
-
ターゲット・プラットフォームの削除
cordova platform rm ・・・-
例
-
android
cordova platform rm android -
browser
cordova platform rm browser
-
-
-
プラットフォームの確認
cordova platform ls -
具体例(Cordova Tools Extensionの該当節を参照)
-
ビルドに必要な前提環境を確認する。
cordova requirements -
前提環境の例(Cordova Tools Extensionの該当節を参照)
-
前提環境の構築
-
Android
ココの指示に従って Android Target をインストール
(Android Studioの該当節を参照)する。 -
iOS
ココの指示に従って...。 -
Windows
ココの指示に従って...。
-
-
準備
cordova prepare -
Cordova - config.xmlメタデータを
- プラットフォーム固有のマニフェストファイルに変換し、
- アイコンとスプラッシュスクリーンをコピーし、
- 指定されたプラットフォーム用のプラグインファイルをコピーして、
- 各ネイティブSDKでプロジェクトを構築できるようにする。
各、環境のプロジェクト・ファイルは、
platformsフォルダ内に格納されている。
-
ビルド
cordova build -
実機やエミュレータ向けのビルドは作成できる。
-
ただし、実機やエミュレータにデプロイはしない。
-
ブラウザで起動する。
cordova run -
エミュレータで起動する。
-
コマンドから
cordova emulate android
-
-
実機を使用した動作確認はDeployが必要。
実機・エミュレーターを参照。
-
Qiita
- よく使うCordovaコマンド
https://qiita.com/hara_p/items/f9bbcced6882fcfede6f - Cordovaを使って、Androidの実機実行するまで
https://qiita.com/cognitom/items/3b30284e8d01eaf122b7
- よく使うCordovaコマンド
以下のサイト情報から、2つの方式が確認できる。
- Apache Cordova を使用したホスト型 Web アプリの作成 – Visual Studio 日本チーム Blog
https://blogs.msdn.microsoft.com/visualstudio_jpn/2016/05/19/apache-cordova/
ローカルにある静的なHTMLとWebAPI(JSON)によって機能する。
Webアプリケーションの画面をホストする(上記のホスト型 Web アプリ)。
ブラウザ内で使用するJavaScriptの管理に使用。
外部ツール(Node.js製)の管理に使用。
- ASP.NET Coreへの移行の「パッケージ・マネージャ」の節を参照。
不可能
可能
- サーバ上に格納したものを
<script src=""></script>で指定 - ただ、更新かかるように、キャッシュ無効にすると、オフライン起動できない。
上記の問題を回避するために、OTAアップデート機構が設けられている。
localのhtmlファイルに画面遷移
- index.html
<body onload="onBodyLoad()">
<div data-role="header"><h1>Page1</h1></div>
<p>This app is for my Blog</p>
<a href="second.html" data-role="button">secondへ</a>
</body>- second.html
<body onload="onBodyLoad()">
<div data-role="header"><h1>Page2</h1></div>
<p>This is second page</p>
<a href="index.html" data-role="button">indexへ</a>
</body>-
ページの定義
-
data-role="page"
<section>タグを使い、その中にdata-role="page"とすることで、
</section>までを1ページと認識<section id="page1" data-role="page">・・・</section>
-
-
戻る
-
addBackBtnプロパティ
<script> $(document).bind("mobileinit", function() { $.mobile.page.prototype.options.addBackBtn = true; }); </script> ・・・ <div data-role="page" id="id1"> <div data-role="header" data-add-back-btn="true">
-
data-rel="back"
<div data-role="header"> <a href="" data-rel="back">戻る</a> </div>
-
SPAフレームワーク(SPAフレームワークの追加)のRouter機能を使用する。
UserAgentでOAuth2のTokenを取得するベスト・プラクティス
OAuth PKCEを実装する。
-
色々なプラグインがあるが、使うとIDMaaSにロックインされる。
-
例えば、Azureなら ADAL(MSAL)(OpenID / OAuth / OpenID Connectの該当節を参照)の
プラグインを利用する。 -
ブラックボックス化されているが、
- 恐らく中身は、OAuth2/OIDC。
- モノによっては、ケルベロスなどもあるかも。
※ そんな・こんな。なので、あまり利用したくないんです。
- 色々なプラグインがあるが、使うと mBaaSにロックインされる。
- FCM(Android (FCM))は実質デファクトなのでロックインの影響も少ない。
https://docs.monaca.io/ja/tutorials/phonegap_push/
-
準備(iOSのみ)
- APNs(iOS (APNs))入手
- APNs認証キー、またはAPNs証明書の入手
-
FCM関連の設定
Android (FCM)の該当節を参照。
Android (FCM)の該当節を参照。
Android (FCM)の該当節を参照。
Android (FCM)の該当節を参照。
Android (FCM)の該当節を参照。
Android、iOS、其々のプラットフォームに向けて、
- 前述のダウンロード・ファイルをビルド・プロセスへ組み込む。
- メイク・ファイル的なものを一部、手修正する。
Cordova - Pluginの該当節を参照。
Android (FCM)の該当節を参照。
SPA((MV*) UIフレームワーク)は index.html と index.jsに纏まるので、
これを、www の index.html と差し替えれば良い。
JavaScriptライブラリの作り方の該当節を参照。
CommonJSモジュールを利用する際に使用。
Cordovaを拡張したCLI(Cordovaコマンドを直接使用しない)で、
UIのベースに Angular((MV*) UIフレームワークの該当節を参照)を
使用するアプリ開発に特化した開発環境。
React Nativeとの棲み分けは...。
-
参考
- create-react-app と Cordova を使って一発でReactのネイティブアプリ開発環境を作る - Qiita
https://qiita.com/hal_sk/items/cdc459fd639a736bccc3 - javascript - Cordova with Create-react-app - Stack Overflow
https://stackoverflow.com/questions/43336924/cordova-with-create-react-app
- create-react-app と Cordova を使って一発でReactのネイティブアプリ開発環境を作る - Qiita
-
Apache Cordova - Wikipedia
https://ja.wikipedia.org/wiki/Apache_Cordova -
HTML5ハイブリッドアプリ開発を支えるOSS
「Cordova」はなぜアツいのか?PhoneGapとの違いは何か? - ふろしき.js
http://furoshiki.hatenadiary.jp/entry/2014/07/23/084643 -
Cordova を使って本気で商用ハイブリッドアプリ開発をやってみた
https://www.slideshare.net/ShinOgata1/cordova-73839153
-
Monaca Docs
http://docs.monaca.io/ja/ -
ガイド - Apache Cordova
https://cordova.apache.org/docs/ja/latest/
-
[Cordova/PhoneGap] CordovaとPhoneGapの違い
http://qiita.com/cigalecigales/items/1245bff1f2e81ff02a2c -
Cordovaの環境構築をしてみる
https://qiita.com/katsu_suzuki/items/2a9251f8a13812b03664- Cordovaのフォルダ構成について
https://qiita.com/katsu_suzuki/items/ee606a198020a0fe27df
- Cordovaのフォルダ構成について
-
Apache Cordovaの開発環境をちょっと良くして自己満足
https://qiita.com/BlackCat/items/0f20cc865ca3ccb69a92- MacにApache Cordovaの開発環境を作って、実機にデプロイしてみた
https://qiita.com/BlackCat/items/c89a00e2ddbe95f8110f
- MacにApache Cordovaの開発環境を作って、実機にデプロイしてみた
-
Cordova
https://html5experts.jp/tag/cordova/-
HTML5ハイブリッドアプリの濃いネタ満載!第1回Cordova勉強会まとめ
https://html5experts.jp/masahiro/11351/ -
Cordovaは今やMicrosoftが主導!?最新状況と基本を素早く再チェック!
https://html5experts.jp/masahiro/20562/ -
Electron、React Native、Cordova…
Web技術でネイティブアプリ開発する方法を、
アシアル田中さんに聞いた | HTML5Experts.jp
https://html5experts.jp/shumpei-shiraishi/24253/
-
- 書籍転載:[iOS/Android対応]HTML5ハイブリッドアプリ開発[実践]入門
http://www.buildinsider.net/mobile/bookhtml5hybrid
- Cordovaを用いた開発環境を構築する
http://www.buildinsider.net/mobile/bookhtml5hybrid/0401 - Cordovaを用いてアプリを開発する
http://www.buildinsider.net/mobile/bookhtml5hybrid/0402 - Cordova: アプリの設定
http://www.buildinsider.net/mobile/bookhtml5hybrid/0403 - Cordova:プラットフォームごとにカスタマイズする
http://www.buildinsider.net/mobile/bookhtml5hybrid/0404 - Cordovaプラグインを利用する
http://www.buildinsider.net/mobile/bookhtml5hybrid/0405\ Android 向けのCordovaプラグインを実装する
4.5.7 Android 向けのプラグイン開発の詳細
http://www.buildinsider.net/mobile/bookhtml5hybrid/0406
Cordova (PhoneGap)ではなく、WebViewの話題っぽい。
https://codezine.jp/article/detail/9218
https://codezine.jp/article/detail/9327
https://codezine.jp/article/detail/9368
https://codezine.jp/article/detail/9412
https://codezine.jp/article/detail/9454
https://codezine.jp/article/detail/9527
https://codezine.jp/article/detail/9577
https://codezine.jp/article/detail/9593
https://codezine.jp/article/detail/9701
https://codezine.jp/article/detail/9780
https://codezine.jp/article/detail/9838
https://codezine.jp/article/detail/9886
https://codezine.jp/article/detail/9929
https://codezine.jp/article/detail/9970
-
Adobe PhoneGap FAQ のサービスの終了
https://helpx.adobe.com/jp/experience-manager/kb/adobe-phonegap-end-of-service.html -
PhoneGap開発終了と今後のApache Cordovaについて | モナカプレス
https://press.monaca.io/takuya/5562
移行メモ
- jQuery Mobile の「戻る」のコードにあった
$(document).bind("bobileinit", ...)は、 jQuery Mobile の初期化イベント名から"mobileinit"の誤記と判断し正した。- 「ソースの外だし」の JS ファイルの記述
<src script=""></src>は<script src=""></script>に正した。- 「デプロイしデバックできる」は「デバッグできる」、 「およびデプロイするサービス(と、サーバー」の閉じ括弧を補った。
- jQuery Mobile のページ定義の説明にあった HTML 実体参照(
<)は 通常の記号に戻し、コード部分はコード ブロック/コード スパンとした。- iOS のスプラッシュスクリーンのファイル名に含まれる
~が Markdown の取り消し線記法と衝突するため、表中はコード スパンで記述した。- マイクロソフト系技術情報 Wiki(techinfoofmicrosofttech.osscons.jp)への リンクは、移行済みの
MS_CordovaToolsExtension/MS_MigrationToASPNETCore/MS_CodePush/MS_UserAgentOAuthBestPractice/MS_OpenIDOAuthに張り替えた。
Tags: 移行, Cordova, PhoneGap, Monaca, ハイブリッドアプリ, WebView, スマホ, プラグイン
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。