Google PlayとAndroid Emulatorのルート権限

こんにちは、Habr!



Google PlayをAndroid SDKの一部であるエミュレーター追加するというコーン埋めた経験を共有したいと思います。 「 しかし、ここで何が複雑になるのでしょうか?必要な.apkを追加して、喜んでそれを使用してください、彼らはすでにここでHabréについてそれを書きました



そして、ここに、落とし穴がかなりたくさんあることが判明しました。 カットの下でそれらについて説明します。 ちなみに、途中でエミュレータのルート権限を取得する方法を説明します。







面白い? 猫へようこそ。



UPD :古いリンクを更新しました。



それで、初心者のために-私の指示は以前に書いたものとどう違うのですか? Google Playを使用している場合、3つ半のアプリケーションがカテゴリに表示されているとき、そのような写真に出くわすことはありません。 たとえば、Top Freeでは、最大2つのアプリケーションを見ることができます。





このマニュアルはWindows用に作成されていますが、いくつかの変更を加えるだけで、サポートされている他のSDK OSに適しています。



以下が必要です。

次のパッケージがインストールされたAndoid SDK:

仮想化サポートを備えたIntelプロセッサーの場合、まず、 ここで最近公開された指示に従って、Android 2.3でエミュレーターを作成することをお勧めします。



GooglePlayというフォルダーを作成し、そのフォルダーでコンソールを開きます。 これは、Shiftキーを押しながらフォルダーを右クリックすることで簡単に行えます。 残念ながら、これはWindows Vista以降でのみ機能します。 XPを使用する場合は、cdのパスを記述する必要があります。



次に、いくつかのファイルをダウンロードする必要があります。 作成したフォルダーにすべてのダウンロードを保存します。

エミュレーター2.3を使用しているため、次のようにします。



すべてのパッケージをインストールした後、便宜上、システムPATHandroid-sdk \ toolsおよびandroid-sdk \ platform-toolsを追加します。



AVD Managerを使用してAndroid 2.3用のエミュレーターを作成し、SDカードのサイズを200-250 mbに設定します。





エミュレータを実行し、完全にロードされたら-コマンドラインを開き、コマンド「 adb devices 」を入力します 。 接続されたデバイスのリストにエミュレーターが表示されます。





存在しない場合は、エミュレータの設定に移動します( メニューボタン-設定-アプリケーション-開発 )。 「 USBデバッグ 」ボックスをチェックして、エミュレータを再起動します。 これでリストに表示されるはずです。



次に、 多くのコンソールコマンドを入力して待機しているのではなく、魅力的なものが見つかります。



GoogleAppsからダウンロードしたアーカイブからGoogleServicesFramework.apkMarketUpdater.apkおよびVending.apkファイルが必要になります 。 それを開き、以前に作成したフォルダーにコピーします。



ここで、要件に関係なくGoogle Playのすべてのアプリケーションを使用できるように、いくつかのトリッキーなハッキングを行う必要があります。 それ以外の場合、上記のように、いくつかの孤独なアプリケーションの写真が待っています。 発言する価値はあります。サポートされていないアプリケーションを実行することはできませんが、これらのハックにより、これらのアプリケーションをデバイスにダウンロードし、その後、エミュレータからapkをプルすることができます。



コマンドを実行します。

adb pull system / build.prop。


念のため、コマンドの最後のドットはタイプミスではないことに注意してください。

build.propファイルがフォルダーに表示されます。 テキストエディタで開き、 ro.product.cpu.abiで始まる行を見つけます。

その後、もう1行追加します。

ro.product.cpu.abi2 = armeabi-v7a


また、コメントADDITIONAL_BUILD_PROPERTIESの後に、行を追加する必要があります

ro.opengles.version = 131072


これにより、ARM7プロセッサアーキテクチャとバージョン2.0のサポートを必要とするアプリケーションを確認できます。



ここで取得できる権限のあるアーカイブも必要です

許可フォルダーをアーカイブからGooglePlayフォルダーにドラッグします。

これらのファイルは、特定の機器が動作する必要があるアプリケーションに必要です。 たとえば、カメラ、または加速度計。



ところで、私は多くのコンソールコマンドを入力することについて嘘をつきました。 へへ。

2つの.batファイルを作成するだけです。 sに取りかかりましょう。



最初のファイルにpermissions.batという名前を付け、次の内容を入力します。

adbプッシュ許可/ android.hardware.camera.autofocus.xml / system / etc / permissions /

adbプッシュ許可/ android.hardware.camera.flash-autofocus.xml / system / etc / permissions /

adb push permissions / android.hardware.camera.front.xml / system / etc / permissions /

adb push permissions / android.hardware.camera.xml / system / etc / permissions /

adb push permissions / android.hardware.location.gps.xml / system / etc / permissions /

adb push permissions / android.hardware.location.xml / system / etc / permissions /

adbプッシュ許可/ android.hardware.sensor.accelerometer.xml / system / etc / permissions /

adb push permissions / android.hardware.sensor.compass.xml / system / etc / permissions /

adb push permissions / android.hardware.sensor.gyroscope.xml / system / etc / permissions /

adb push permissions / android.hardware.sensor.light.xml / system / etc / permissions /

adb push permissions / android.hardware.sensor.proximity.xml / system / etc / permissions /

adbプッシュ許可/ android.hardware.telephony.gsm.xml / system / etc / permissions /

adb push permissions / android.hardware.touchscreen.multitouch.jazzhand.xml / system / etc / permissions /

adb push permissions / android.hardware.touchscreen.multitouch.xml / system / etc / permissions /

adb push permissions / android.hardware.touchscreen.xml / system / etc / permissions /

adb push permissions / android.hardware.wifi.xml / system / etc / permissions /

adb push permissions / android.software.live_wallpaper.xml / system / etc / permissions /

adbプッシュ許可/ android.software.sip.voip.xml / system / etc / permissions /

adb push permissions / com.android.location.provider.xml / system / etc / permissions /

adbプッシュ許可/ features.xml /システム/ etc /許可/

adbプッシュ許可/ handheld_core_hardware.xml /システム/ etc /許可/

adbプッシュ許可/ platform.xml /システム/ etc /許可/





後-任意の名前(make.batなど)と次の内容で別の名前を作成します。

adb再マウント

adb push build.prop / system /

adb push su / system / bin /

adb push Superuser.apk /システム/アプリ/

adb push Vending.apk /システム/アプリ/

adb push MarketUpdater.apk /システム/アプリ/

adb push GoogleServicesFramework.apk / system / app /

permissions.batを呼び出す

adb push mkfs.yaffs2 / data / misc /

adb shell rm /system/app/SdkSetup.apk

adb再マウント

adb shell chmod 4755 / system / bin / su

adbシェルchmod 777 /data/misc/mkfs.yaffs2

adb shell ./data/misc/mkfs.yaffs2 / system /sdcard/system.img

adb pull /sdcard/system.img system.img



Intelからエミュレータを選んだ人のために-make.batのファイル名に注意してください。



adb push su / system / bin /

adb push mkfs.yaffs2 / data / misc /

adbシェルchmod 777 /data/misc/mkfs.yaffs2

adb shell ./data/misc/mkfs.yaffs2 / system /sdcard/system.img



次のものに置き換える必要があります。

adb push su.x86 / system / bin / su

adb push mkfs.yaffs2.x86 / data / misc /

adb shell chmod 777 /data/misc/mkfs.yaffs2.x86

adb shell ./data/misc/mkfs.yaffs2.x86 / system /sdcard/system.img





その結果、 GooglePlayフォルダーの内容は次のようになります。







今-make.batファイルを実行し、待機を開始します。 make.batファイルの最後の2つのコマンドの実行には時間がかかることに注意してください。 ちょっとしたトリックがあります-このプロセスを高速化するには、エミュレータで何かをする必要があります。 たとえば、エミュレータからHabrahabrをサーフィンします。 方法と理由はわかりませんが、エミュレータをロードすると、system.imgの作成とコピーのプロセスが大幅に高速化されます。



コンソールが実行を報告して終了すると、作業フォルダーにsystem.imgファイルが見つかります。 エミュレータを閉じます。 すぐにログインしたり、アプリケーションをインストールしたりする必要はありません。エミュレータを再起動すると、すべての変更が失われます。



表示されたsystem.imgを取得し、フォルダーのファイルに置き換えます

android-sdk /プラットフォーム/ android-10 / images /


誰かがIntelからx86ベースのイメージを取得した場合は、フォルダーを使用します

android-sdk /アドオン/ addon-intel_atom_x86_system_image-intel_corporation-10 / images / x86


元のsystem.imgをバックアップすることを忘れないでください!

android-10フォルダーはandroidバージョン2.3と同等であることに注意してください。 Androidの他のバージョンの場合、Androidの後の数字は、このバージョンのAPIレベルに等しくなります。



エミュレーターファイルがあるフォルダーに移動し、「 cache.img 」、「 userdata-qemu.img 」、「 snapshot.img 」、「 userdata.img 」のファイルを削除します(ある場合)。 Win7のデフォルトは

C:/ Users / Your Username / .android / avd / Your Emulator Name.avd /


その後、エミュレータを起動し、Google Playを開いてログインし、契約条件に同意してから...エミュレータを再起動します。多くの場合、アプリケーションはログイン後すぐにロードしたくないためです。



そして今、最後の再起動後、最終的にエミュレータを完全に使用できます。





私の記事が誰かの時間節約に役立つことを願っています。 読んでくれてありがとう。



All Articles