LoginSignup
12
15

More than 5 years have passed since last update.

Androidエミュレータでシステム署名が必要な処理の動作を確認する

Last updated at Posted at 2014-02-03

システム署名(端末メーカー提供/市販品は通常、入手不可)が必要な機能を実装していて、「修正⇒システム署名依頼⇒実機でテスト」が時間がかかり面倒・・・

そんな時、エミュレータでテストできればいいのになと思っていろいろ試した結果、以下の手順でいくつかは動かせることが分かりました。

全ての要システム署名の権限、要rootのコマンドを試したわけではないので、あしからず。

●確認した動作(権限)

  • PackageManager#installPackage,deletePackage(INSTALL_PACKAGES,DELETE_PACKAGES)

  • 位置情報のネットワークを利用,GPSを利用のON/OFF(WRITE_SECURE_SETTINGS)

もしかしたらもう有名な方法かもしれませんが^^;
自分用のメモとしても置いておきます。

アプリ権限のうち、条件が「signature」になっているものは、

  • システム署名がされているか

  • プリインアプリであるか(/system/app/下にインストールされているか)

    追記:KitKat以降では、/System/priv-app/下

のどちらかでしか動作しません。
なので、エミュレーターの/system/app/下にインストールさせられれば動くのでは?と考えて試してみたところ・・・、無事動作しました。

●手順

(1)エミュレータを起動する

(2)コマンドプロンプトから、以下を実行する

adb -s emulator-5554 remount

※emulator-5554の「5554」の部分は、起動しているエミュレータのタイトルバーに表示されているものと合わせてください。

(3)/system/app/下に署名付きapkをインストールする(デバッグ署名でも可)

adb -s emulator-5554 push mysample.apk /system/app/

ただし、この方法はエミュレータを閉じると、アプリが消えてしまうので、(2)から毎回やり直す必要があります。
それでも、これで、何度もハードメーカーさんのお手を煩わせることがなくなり、大幅に効率がUPしました。

なお、一度上記で/system/app/下に置いておけば、エミュレータを落とさない限り、その後の上書きインストールは通常のadb installで出来ます。

また、プリインストールアプリ扱いとなり端末からはアンインストールできませんが、消したかったらエミュレータを再起動すればよいだけです。

12
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
15