Android デバイスにシステム アプリとしてバンドルされるアプリを作成しています。メーカーはデバイスを私たちに届けようとしています。それまでの間、エミュレーターでアプリのシステム レベルのアクセス許可を付与して、対話なしで APK のサイレント インストールを実行する自動更新機能に取り組みたいと考えています。ユーザーから。私が読んだことから、Androidでサイレントインストールを実行できる唯一の方法は、アプリがOSと同じ証明書で署名されている場合であるという私の理解です。では、エミュレータでこれをどのようにシミュレートできますか?
2 に答える
signatureOrSystem 権限が必要な場合は、システム イメージに配置するだけで済みます。特別な証明書で署名する必要はありません。次のように、これを 1 回限り (エミュレーターを終了するまで) 行うことができます。
> adb root
> adb remount
> adb push /path/to/My.apk /system/app/My.apk
それが完了したら、通常のプロセスを使用して、さらに更新をデータ パーティションにインストールできます (「adb install -r /path/to/My.apk」は、Eclipse から実行するときに開発者ツールが行うことです)。この方法でインストールすると、アプリはシステム イメージの元のバージョンから要求した signatureOrSystem アクセス許可を保持しますが、新しいそのようなアクセス許可を取得することはできません。
純粋な署名権限が必要な場合は、それらの権限を宣言しているものと同じ証明書でアプリに署名する必要があります (通常はコア フレームワークですが、メディア システムは別の証明書などです)。システム イメージにインストールする必要のない署名のアクセス許可を要求している場合は、通常のアプリとしてインストールするだけで、署名によってアクセス許可を取得できます。
私が知る限り、次のことを行う必要があります。
- Android ソースをダウンロードし、エミュレーター ファームウェア イメージをビルドします。
- にある Android ソース ツリーのキーを使用してアプリケーションに署名します
/build/target/product/security/
。 android:sharedUserId="android.uid.system"
アプリケーションのマニフェストに追加します。- ステップ 1 でビルドしたイメージを使用して、エミュレーターでアプリケーションを実行します。
独自のファームウェア イメージを作成する必要があるのは、キーを取得できるようにするためです。現在、標準エミュレータ イメージのキーがどこかで利用できる可能性があります。これにより、独自の Android を構築するための長くて非常に退屈なプロセスを節約できますが、残念ながらこれらがどこにあるのかわかりません。
免責事項:これを自分で試したことはありません。