コンテンツにスキップ

アプリのインストールと管理

入口:「空间设置」(スペース設定)→「应用管理」(アプリ管理)。

アプリ管理と複製(マルチインスタンス)

このページは 3 つのセクションに分かれています。

  1. インストールとインポート:APK のインポート、デスクトップアプリのインポート、APK のテスト。
  2. 「虚拟应用」(仮想アプリ):NestSpace 内部にインストール済みのアプリ。
  3. 「桌面应用」(デスクトップアプリ):現在デスクトップに配置されているシステムアプリ。

APK のインポート

  1. 「导入 APK」(APK をインポート)をタップします。
  2. システムのファイルピッカーで APK を選択します。
  3. 解析とインストールが完了するまで待ちます。

通常のアプリは APK を 1 つ選ぶだけです。split アプリはすべてのファイルを一度に選択する必要があります。

base.apk
split_config.arm64_v8a.apk
split_config.xxhdpi.apk
...

base だけを選択するとコード、ネイティブライブラリ、リソースが不足し、アプリが起動時に失敗する可能性があります。

インポート中には次のチェックが行われます。

チェック 失敗時の動作
パッケージ名 インストールを拒否
署名の一致 同じパッケージ名の記録が既にあり署名が異なる場合、SIGNATURE_MISMATCH を返す
minSdk 現在のシステムバージョンより高い場合、インストールを拒否
REQUIRE_SECURE_ENV 対象が安全な環境の要件を宣言している場合、SECURE_ENV_REQUIRED を返す
ABI インストールは成功するが、起動時に一致するネイティブライブラリがない場合 ABI_MISMATCH を返す

インストールに成功すると:

  • APK は NestSpace のアプリ専用ディレクトリにコピーされ、元のファイルには依存しません。
  • アプリはデスクトップと「仮想アプリ」リストに表示されます。
  • インストール記録は永続化され、アプリを再起動しても残ります。

仮想アプリリスト

各アプリは 1 行で、次の項目が含まれます。

  • アプリアイコン、名前、パッケージ名、バージョン。
  • インスタンスセレクター(「インスタンス 1」「インスタンス 2」…)。
  • 「启动」(起動):現在選択中のインスタンスを開きます。
  • 「多开」(複製(マルチインスタンス)):新しいインスタンスを作成して起動します。
  • 「卸载」(アンインストール):APK とすべてのインスタンスデータを削除します。

あるアプリを初めて起動すると、「インスタンス 1」が自動的に作成されます。その後「複製(マルチインスタンス)」をタップするたびに、インスタンス 2、3……が順に作成されます。

インスタンスとデータの分離

各インスタンスは次の独立した領域を持ちます。

  • files
  • cache
  • code_cache
  • databases
  • getDir
  • SharedPreferences 名前空間
  • ネイティブライブラリの抽出ディレクトリ

そのため、同じアプリで 2 つのアカウントに同時にログインでき、2 つのインスタンスが互いのデータを読み取ることはありません。異なるアプリのインスタンス同士も分離されています。

データディレクトリ構造:

/data/user/0/com.coke.nestspace/files/vspace/
  apps/<package>/...         安装的 APK
  data/<package>/<instance>/ 实例数据

同時実行数

コンテナプロセスプールはデフォルトで自動管理され、最大 16 個のスロットがあります。メモリが逼迫すると、最も長く使われていないバックグラウンドコンテナが終了されますが、フォアグラウンドのコンテナは終了されません。「スペース設定 → 容器槽位」(コンテナスロット)で固定の上限(1〜16)を設定することもできます。

デスクトップアプリのインポート

「导入桌面应用」(デスクトップアプリをインポート)はデスクトップ上の表示だけに影響し、アプリのコピーやインストールは行いません。

  1. 「デスクトップアプリをインポート」をタップします。
  2. 必要なインストール済みアプリにチェックを入れます。
  3. チェックを外すとデスクトップから削除されます。

仮想アプリはチェック不要で、インストール後に自動的に表示されます。

APK のテスト

「测试 APK」(APK をテスト)は、開発者がコンテナの機能を検証するためのショートカットです。ファイルピッカーは開かず、外部ファイルディレクトリにある固定のファイルを読み込みます。

/sdcard/Android/data/com.coke.nestspace/files/stage-b-test.apk

リポジトリでビルドした testapp-debug.apk をこのパスにプッシュしてから「APK をテスト」をタップします。一般のユーザーは「APK をインポート」で任意の APK を選択できるため、この入口に依存する必要はありません。

testapp には、複数 Activity の遷移、Service、Provider、ブロードキャスト、Job、PackageManager、インスタンス分離のテストページが含まれており、コンテナ機能が正常かどうかの確認に適しています。

アンインストール

仮想アプリをアンインストールすると、次のものが削除されます。

  • インストール済みの APK。
  • すべてのインスタンス。
  • すべてのインスタンスデータ、キャッシュ、データベース。
  • そのアプリの NestSpace 名前空間下の SharedPreferences。

この操作は復元できません。システムアプリはデスクトップの長押しメニューにある「从桌面移除」(デスクトップから削除)で非表示にできますが、データは削除されません。仮想アプリには現在、個別に非表示にする入口はありません。

よくあるインストールの問題

SIGNATURE_MISMATCH

同じパッケージ名で、以前に異なる署名の APK がインストールされています。古いアプリをアンインストールしてからインストールするか、同じ署名で再パッケージしてください。

SECURE_ENV_REQUIRED

対象アプリがマニフェストで REQUIRE_SECURE_ENV を宣言しています。NestSpace は要求された安全な環境ではないため、現在はインストールを拒否します。

ABI_MISMATCH

APK に arm64 または armeabi-v7a のネイティブライブラリのみが含まれており、現在のデバイスのアーキテクチャと一致しません。対応するアーキテクチャの実機に変更するか、対応する ABI を含むインストールパッケージを使用してください。

起動後に黒画面またはクラッシュ

通常はアプリの互換性の問題です。加固(パッカー)、ネイティブ SDK、動的ロード、依存関係の競合などが原因として考えられます。「スペース設定」→「容器自检」(コンテナセルフチェック)を先に実行してから、アプリのバージョンとエラーメッセージを添えてプロジェクトに issue を提出してください。

インストールは成功したがデスクトップにアイコンがない

「スペース設定 → アプリ管理」に移動し、アプリが「仮想アプリ」リストにあるか確認して、その場で起動してください。システムアプリは先に「デスクトップアプリをインポート」でチェックを入れる必要があります。

関連ドキュメント