モバイルハイブリッド開発フレームワーク + Android ネイティブのモジュール化/コンポーネント化

背景1枚

    Android ネイティブ フレームワークは、手書きルーティング フレームワークであっても、ARouter などの統合オープン ソース フレームワークであっても、モジュール/コンポーネント方式で開発できます。では、ハイブリッド開発フレームワークはコンポーネント開発を実現できるのでしょうか?

2の実装

   携帯端末開発の経験から、モジュール化には複数のモジュール間でプロセスを共有するものと、複数のモジュール間でプロセスを横断するものの2種類があると考えています。Androidでは、各モジュールのクロスプロセスアクセスは詳しくは理解されていません。私の知る限り、モジュール間を移動する現在の方法はプロセスを共有することです。

2.1 プロセスの共有

   いわゆる共有プロセスとは、各モジュールが同じアプリケーション サンドボックス、同じファイル ストレージ セット、同じストレージ キー セット、同じリソース ファイル セット (Android では /res) を共有することを意味します。

2.2Cordovaフレームワークをモジュール化する方法

   Android ネイティブ フレームワークの www フォルダーは、H5 の実行ディレクトリです。cordova フレームワークのモジュール化とは、複数のビジネス モジュールを分割することを意味します。分割には 2 つのタイプがあります。
(1) H5 サイド分割: フロントエンド Cordova プロジェクトを複数の独立したプロジェクトに分割します
。 (2) ネイティブ側コンポーネント化: Android Studio で実行されるネイティブ フレームワークがモジュールに分割され、それぞれのモジュールが独立した H5 に対応します。プロジェクト、つまり、各モジュールには独自の www パッケージがあります。

   モジュール化の最終目標は、メインのアプリ モジュールを複数のビジネス モジュールに分割することです。パッケージ化するとき、メイン モジュールは他のサブモジュールに依存します。サブモジュールは、メイン モジュールの下でリソース ファイルを共有します。

Cordova のモジュール化には次の作業が必要です。

   1. プロジェクトのニーズに応じて、フロントエンド プロジェクトを複数のプロジェクトに分割します。メイン アプリはポータルとして機能し、ポータル内の他のビジネス モジュールを統合します。各フロントエンド プロジェクトには、異なるログイン ロジック、異なるインターフェイス スタイルなどが含まれる場合があります。
   2. Android ネイティブ フレームワークにはルーティング フレームワークが統合されており、モジュール間のルーティング ジャンプを実現できます。
   3. Cordova の依存関係パッケージを統合し、各モジュールに共通の依存関係パッケージを分離します。
   4. 手書きの H5 サイド ルーティング プラグイン。ポータルのサブモジュール メニューをトリガーし、サブモジュール アプリケーションにジャンプするために使用されます。
   5. モジュールごとに異なる config.xml ファイルを構成します。各モジュールの起動またはロードでは、cordova 環境全体を再生成する必要があります。つまり、各モジュールには異なる Cordova コンテキスト環境があります。
    6. リソースはモジュール間で共有されます。たとえば、異なるモジュールのdrawId は一貫しています。独自のリソース ファイルが必要な場合は、それらをすべてメイン モジュールの res の下に置くことができます。
    7. サブモジュールの下に www 構造を構成します。サブモジュールはコンパイル後に最終的にメイン モジュールの下の www フォルダーにロードされるため、メイン モジュールの www フォルダーの下に複数の同一のインデックス ファイルが作成されます。この場合、サブモジュールの www 構造に 1 つを追加する必要があります。 submodule. このフォルダーを特定のサブモジュールの下の H5 コンテンツとして識別するためのモジュール フォルダー。
    8.index.html内のCordova jsファイルの参照パスを変更します。各モジュールは同じ Cordova js 環境を共有するため、サブモジュールの下のindex.html ファイルのパスを「.../cordova.js」に変更する必要があります。

www ファイルパスは以下のようになります

ここに画像の説明を挿入します

ハイブリッド フレームワークをモジュール化した後にアップグレードしてパッケージ化するにはどうすればよいですか?

H5 リソース ファイルを www にパッケージ化する方法、それらを動的にアップグレードする方法、およびバージョンをアップグレードする方法は?
1. メイン モジュールの H5 コードは引き続き動的アップグレードを実行し、完全な更新 (APK 全体の) を実行することもできます。
2. サブモジュールの www はサーバー上で動的にプルでき、プルが完了するとメイン モジュールの実行ディレクトリに配置され、メイン モジュールの www ファイルとマージされます。

複数の SQLite データベースを同じアプリケーション サンドボックスに保存する方法

例:
1. メイン モジュールは sqlite データベースに適用され、データベース Database を作成します。
2. 他のサブモジュールも sqlite データベースを適用し、データベース app_database_h を作成します。
DataBase1 と DataBase2 はアプリケーションの packageName の下にどのように格納されるのか教えてください。
ここに画像の説明を挿入します
シミュレータ アプリケーションを分析すると、メイン モジュール データベースが app_webview/databases に存在することがわかります。ここで、Databases.db はメイン アプリケーション モジュールの下のデータベースであり、メイン モジュールのデータベース インデックスを格納します。app_webview/databases/file__0/1 はメインモジュールデータベースのデータです

サブモジュールのデータベース名は app_database_h です。そのパスは/パッケージ名/databases/です。データは現在のディレクトリの file__0 フォルダーに配置されます。

要約する

1. ハイブリッド モバイル開発コンポーネントの開発では、フロントエンドの H5 ページ分割を考慮する必要があります。複雑さに応じて、異なるモジュールを異なる H5 プロジェクトに分割できます。各 H5 プロジェクトには、異なるバックエンド サービス サポートがあります。
2. ハイブリッド開発モデルのコンポーネント化方法は、ネイティブ Android フレームワークのコンポーネント化方法と一致しています。
3. コンポーネント化では、各モジュール コードの動的なプルとアップグレードを考慮する必要があります。
4. コンポーネント化にローカル データベースが関係する場合は、モジュールごとに異なるデータベースを作成することを検討する必要があります。
5. コンポーネント化ではリソース共有の問題を考慮する必要があり、実際の開発ではいくつかの問題を回避する必要があります。

おすすめ

転載: blog.csdn.net/superzhang6666/article/details/125789433
おすすめ