某ソフトを使いたいのだが PC 版がないみたいなので Android Studio 付属の Emulator 上で動かそうと思ったら対応してない機種と言われる。
そこで、adb で実機から apk 抜いて emulator に移植しようと画策。
実機を USB で繋ぎ USB Debug を有効にしたら Android Studio の SDK Tools に含まれてる adb に PATH を通しておく。
package 一覧を得るには以下のようにする。
これで目的のパッケージ名と apk の場所が分かったので、
エミュレーターへのインストールは以下のようにすれば良い。
今回の場合、実機は ARM、エミュレーターは x86 なので
どうやら、ネイティブライブラリ使ってて ARM 版バイナリーしか生成してないので x86 のエミュレーターだと Google Play で非対応扱いされるってことか。
成程、これが Zenfone2 とかで噂に聞いてた Android x86 辛味ってやつか。
そこで、adb で実機から apk 抜いて emulator に移植しようと画策。
実機を USB で繋ぎ USB Debug を有効にしたら Android Studio の SDK Tools に含まれてる adb に PATH を通しておく。
PATH="$(cygpath "$LOCALAPPDATA"'\Android\Sdk\platform-tools'):$PATH"まず接続を確認
adb devices -l例えば以下のような結果が得られる。
************ device product:X3-KC model:X3_KC device:X3-KC_sprout transport_id:2 emulator-**** device product:sdk_gphone_x86 model:Android_SDK_built_for_x86 device:generic_x86 transport_id:1unauthorized だと、USB Debug の許可が出てないので実機側で OK しておく。
package 一覧を得るには以下のようにする。
adb -d shell pm list package adb -e shell pm list packageオプション -d で USB 接続のデバイス(実機)、-e で TCP 接続のデバイス(エミュレーター)が対象になる。
adb -d shell pm list package \ | grep $PATTERNで目的のパッケージを1つに絞れたらとりあえず
read PKG < <(adb -d shell pm list package | grep $PATTERN | sed -E 's/^package://g;s/[\r\n]//g' ); \ echo $PKGとして PKG にパッケージ名保存しといて
read PKGPATH < <(adb -d shell pm path "$PKG" | sed -E 's/^package://g;s/[\r\n]//g'); \ echo $PKGPATHのようにして PKGPATH にパッケージのパスを得る。
これで目的のパッケージ名と apk の場所が分かったので、
adb -d pull "$PKGPATH" "$PKG.apk"とすれば $PKG.apk が得られる。
エミュレーターへのインストールは以下のようにすれば良い。
adb -e install "$PKG.apk"
今回の場合、実機は ARM、エミュレーターは x86 なので
Performing Streamed Install adb: failed to install $PKG.apk: Failure [INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113]とか言われてしまった。
どうやら、ネイティブライブラリ使ってて ARM 版バイナリーしか生成してないので x86 のエミュレーターだと Google Play で非対応扱いされるってことか。
成程、これが Zenfone2 とかで噂に聞いてた Android x86 辛味ってやつか。
- Google: apk export adb
- Qiita / sashimi3 / 2017-11-17: apkを狙い撃ちでadb pullする
- clock-up-blog junk-junction / 2015-02-28: Android 実機から apk を探して取得
- Android デベロッパー / Android Studio / ユーザーガイド / Android Debug Bridge(adb)
タグ
コメントをかく