システム権限が必要なアプリのテストの備忘メモ

はじめに

androidAPIによりシステム権限が無いよー =>Exception な物があり

<uses-permission android:name="android.permission.MODIFY_PHONE_STATE"
 tools:ignore="ProtectedPermissions" />

みたいな権限が必要なAPIとか・・

sample自体が試せない事があるので調べて見たメモ

動作環境

  • macOS Sierra
  • 16G
  • HDDタイプのiMac
  • AS 3.0.0-Canary2
  • gradle plugin 2.3.2

下記を参考にしたのですが・・

この手順で遣ると、インストールトリガーが今一わからない。

pushしただけでは、installされないよな??

で、調べてみると

  • /system/app/
  • /system/priv-app/

に置いたapkが、エミュレータ起動時に自動インストールされるみたい。

従って、公式エミュレータだと再起動時に消えるので、テストできなくね? とい状態

ちなみに

上記に一度配置すれば、以降は ASより実行ボタンで・・な記載もありましたが、それも動かなかったです

かならず

gradlew assembleDebug

で作成したapkを配置後、エミュレータを再起動する必要があり*1

genymotionでやってみる

  • mysample.apk
  • OS7.1のgenymotion image
# この状態で /system/ 以下が書込/削除できる。実機では不可(たぶんroot権限が必要?)
adb -s 192.168.56.101:5555 remount  

adb -s 192.168.56.101:5555 shell mkdir /system/priv-app/mysample
adb -s 192.168.56.101:5555 push mysample.apk /system/priv-app/mysample

apkと同じ名前のフォルダを作らないと、installが始まらない

この状態でimageの起動し直しを行う。エミュレータに再起動オプションって無いんだよな・・

で、一度終了し直して起動し直す必要があり

システム権限ありのアプリの作り方

下記読んでるんだけと、作るの難しそう


gemymotionやエミュレータで実行できないアプリの検証

rootチェックアプリとかの挙動を見る時、引っかかったのでメモ

Chariesあたりを入れて通信を観たい系

下記あたりのチェックを入れても、実機だと別の要因で動かないことが多々なんだよな・・。やっぱりエミュレータ系のほうが素直かも・・

Build Prop Editor
  ro.build.tags
    test-keys => dev-keys
Hide Rooting Lite
  実行
Superuser
  設定>Superuser Access>無効化

参考

*1:installされる場所が違うからだと思われ・・