おでーぶでおでーぶ

いろいろ書く。いろいろ。

エミュレーターでプリインアプリを再現する

  1. Google APIの入っていないAVDを作成しておく

今回は API 27 でお試し。

f:id:jmatsu:20181112162241j:plain

  1. AVD name を確認しておく

ls ~/.android/avd/

cd $ANDROID_SDK_HOME/tools

export PATH=$PWD:$PATH

# tools 以下にいないと以下のコマンドは失敗する
# -writable-system で起動しないと/systemに書き込み権限がない
emulator -avd $avd_name -writable-system
# note: avd_name に拡張子はいらない

# Google APIが入ってるとproduction扱いなので、adbdがrootで立ち上がらない
adb root
adb remount

adb shell
# このディレクトリにプリインが入る。古いバージョンだとディレクトリが違う。
cd /system/priv-app
mkdir $package_name

exit

adb push $apk_file /system/priv-app/$package_name/$apk_file

# 再起動するまではインストールされない
adb reboot

昔とsystem以下への書き込み権限の取得方法が違ったのでちょっとだけハマった

qiita.com