Google Play и root права для Android Emulator
Хочу поделиться своим опытом набивания шишек добавления Google Play в эмулятор, входящий в состав Android SDK. Вы спросите: «Да что тут может быть сложного? Добавить нужные .apk и пользоваться с удовольствием, об этом уже писали на Хабре тут!«
А вот и нет, подводных камней оказалось достаточно много. О них я расскажу под катом. Кстати, попутно расскажу как получить root права для эмулятора.
Интересно? Добро пожаловать под кат.
UPD: Обновил устаревшие ссылки.
И так, для начала — чем моя инструкция отличается от написанной ранее? Тем, что при использовании Google Play вы не столкнётесь с такой картиной, когда в категориях видно три с половиной приложения. Например вот, в Top Free видно целых два (sic!) приложения.:
Инструкция написана для ОС Windows, но подойдёт и для других поддерживаемых SDK ОС, просто с маленькими изменениями.
Нам потребуется:
Andoid SDK со следующими установленными пакетами:
- Android SDK Tools
- Android SDK Platform-tools
- SDK Platform для Android 2.3.3
- Extras/Android Support
- Extras/Google USB Driver
Обладателям процессоров от Intel с поддержкой виртуализации рекомендую, для начала, проследовать инструкции, недавно опубликованной тут, и создать эмулятор с андроидом 2.3.
Создайте папку с именем GooglePlay и откройте консоль в ней. Это легко сделать, кликнув правой кнопкой в папке, с зажатой клавишей Shift. К сожалению это работает только в Windows Vista и выше. Тем, кто пользуется XP, придётся писать пути для cd.
Теперь нужно скачать кое-какие файлы. Сохраняйте все загрузки в созданную папку.
Мы используем эмулятор 2.3, поэтому берём:
- Google Apps для CyanogenMod 7
- Утилиту mkfs.yaffs2: для ARM эмулятора
- Или же mkfs.yaffs2 для x86 эмулятора
- SuperUser.apk и su для ARM или x86.
После установки всех пакетов — добавьте android-sdk\tools и android-sdk\platform-tools в системный PATH для удобства работы.
Создайте эмулятор для Android 2.3 с помощью AVD Manager, задав размер SD карты в 200-250 мб.
Запустите эмулятор и когда он полностью загрузится — откройте командую строку и введите команду «adb devices«. Вы должны будете увидеть эмулятор в списке подключённых устройств:
Если его там нет — в эмуляторе заходим в настройки (Кнопка меню — Настройки — Приложения — Разработка). Поставьте галочку на пункте «Отладка по USB» и перезапустите эмулятор. Теперь он должен отображаться в списке.
Далее вас ждёт увлекательный не очень ввод кучи консольных команд и ожидание.
Нам понадобятся файлы GoogleServicesFramework.apk, MarketUpdater.apk и Vending.apk из скачанного архива с GoogleApps. Откройте его и скопируйте их в созданную ранее папку.
Теперь нам нужно сделать несколько хитрых хаков для того чтобы нам были доступны все приложения из Google Play, вне зависимости от их требований. Иначе — вас ожидает картина из нескольких одиноких приложений, как было показано выше. Стоит сделать ремарку — запустить неподдерживаемые приложения не получится, но эти хаки позволят скачать эти приложения на девайс и, после, вытащить apk из эмулятора, например.
Это позволит нам видеть приложения, которые требуют архитектуру процессора ARM7 и поддержку версии версии 2.0.
Так же нам нужен архив с permissions, который можно взять здесь.
Перетащите папку permissions из архива в нашу папку GooglePlay.
Эти файлы нужны для приложений, которые требуют определённое оборудование для работы. Например камеру, или акселерометр.
Кстати, насчёт ввода кучи консольных команд я соврал. Хе-хе.
Вам нужно будет всего лишь создать два .bat файлика. Приступим-с.
Первый файл назовите permissions.bat и наполните его таким вот содержанием:
adb push permissions/android.hardware.camera.autofocus.xml /system/etc/permissions/
adb push permissions/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 push permissions/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 push permissions/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 push permissions/android.software.sip.voip.xml /system/etc/permissions/
adb push permissions/com.android.location.provider.xml /system/etc/permissions/
adb push permissions/features.xml /system/etc/permissions/
adb push permissions/handheld_core_hardware.xml /system/etc/permissions/
adb push permissions/platform.xml /system/etc/permissions/
После — создайте ещё один, с произвольным названием, например make.bat и таким содержанием:
adb remount
adb push build.prop /system/
adb push su /system/bin/
adb push Superuser.apk /system/app/
adb push Vending.apk /system/app/
adb push MarketUpdater.apk /system/app/
adb push GoogleServicesFramework.apk /system/app/
call permissions.bat
adb push mkfs.yaffs2 /data/misc/
adb shell rm /system/app/SdkSetup.apk
adb remount
adb shell chmod 4755 /system/bin/su
adb shell chmod 777 /data/misc/mkfs.yaffs2
adb shell ./data/misc/mkfs.yaffs2 /system /sdcard/system.img
adb pull /sdcard/system.img system.img
adb push su /system/bin/
adb push mkfs.yaffs2 /data/misc/
adb shell 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 будут выполняться долго. Есть маленькая хитрость — что бы ускорить этот процесс нужно что-нибудь делать на эмуляторе. Например, серфить хабрахабр из эмулятора. Я не знаю как и почему, но когда эмулятор нагружен — это здорово ускоряет процесс создания и копирования system.img.
После того, как консоль отрапортует о выполнении своим закрытием, мы обнаружим в рабочей папке файлик system.img. Теперь закроем эмулятор. Не нужно сразу логиниться или устанавливать какие-то приложения — вы потеряете все изменения после перезапуска эмулятора.
Хватайте появившийся system.img и заменяйте им файлик из папки
Не забудьте сделать резервную копию оригинального system.img!
Обратите внимание, что папка android-10 эквивалента для андроида версии 2.3. Для других версий андроида число после android- равно API Level данной версии.
Теперь заходите в папку, в которой у вас находятся файлы эмулятора и удаляйте файлы «cache.img«, «userdata-qemu.img«, «snapshot.img«, «userdata.img«(если он там есть). По умолчанию для Win7 это
После этого запускайте эмулятор, открывайте Google Play, логиньтесь, принимайте условия соглашения и… перезапускайте эмулятор ещё раз, потому что, зачастую, приложения не хотят загружаться сразу после логина.
И вот, после последней перезагрузки, вы наконец-то можете полноценно пользоваться эмулятором.
Надеюсь, моя статья поможет кому-нибудь сохранить время. Спасибо за то, что уделили время на её прочтение.
Источник
How to Use Google Pay on Rooted Android Devices
In case you haven’t already heard, Google Play Store won’t support rooted Android devices anymore. It will still run on rooted devices as it does, but developers can now choose to make their apps not work with rooted devices. The new changes in the Google Play developer console allow developers to make this choice. This means Google Pay, Snapchat and NetFlix will soon be having some company. It would be a good time to prepare for what’s coming already. Yes, of course, you can still use Google Pay on rooted Android devices.
If you have a rooted Android device your device will most probably be listed as Uncertified on the Google Play Store. You can check this by going to the Google Play Store settings and scrolling down to the bottom. As long as your device is listed as Uncertified here, you’re out of the safe zone. And what pushes you out of this safe zone is a SafetyNet check. Basically, if you have ever made any changes, no matter how minuscule, to your device’s system partition, your device will fail the SafetyNet check.
Before we go trying to get you a rooted device that Google Pay will work on, you might have to unroot it completely and restore the system partition to its stock state. You can flash the ROM again or uninstall each and every mod, and undo each and every change they’ve done.
So if your device is listed as Uncertified on the Google Play Store already, it means you have made changes to your device’s system partition. In that case, you should check out the following link:
However, if you were still contemplating whether rooting is worth losing Google Pay, you don’t have to lose it. Continue to read below and learn how you can root your device while still have a working Google Pay.
Using Google Pay on Rooted Android Devices
Method 1: Systemless SuperSU
If all you want is to get Google Pay on a rooted Android device, there are a few ways to do it. But with how things are progressing, those methods won’t last and you might have to go looking for a new method. Luckily, that new method is already here and it’s called systemless root.
Rooting usually involves installing a Superuser app such as SuperSU, along with its binaries in the system partition. This will no doubt trip the SafetyNet. So Chainfire, the developer of the very popular SuperSU developed a method to achieve root without touching the system. This is done by replacing the boot image of your device and installing SuperSU and its binaries outside the system partition. This has a few caveats such as factory resetting the device kills the root. But at least it will work and you won’t have to stop using your favorite apps, including Google Pay.
Requirements
- ADB – How to set up system-wide ADB and fastboot on Windows.
- USB Debugging enabled – How to enable USB debugging.
- USB drivers – Download USB drivers for your Android device
- Download Flashable Systemless SuperSU 2.79
Installing Systemless SuperSU
Rooting with a systemless SuperSU is as easy as rooting with any other SuperSU. All you have to do is boot into recovery and flash the systemless SuperSU zip.
- In case you don’t know how, simply select Install from the main TWRP menu.
- Browse to the downloaded SuperSU zip file and select it.
- Swipe right to flash it.
- Reboot System when the process finishes.
Note: This method only works if your ROM supports simply flashing SuperSU to root it. Most stock ROMs can’t be rooted by simply flashing SuperSU.
ADB commands
Now that your device is rooted, open up a command prompt on your Windows PC, and connect your phone to it via a USB cable. If a prompt appears on your device screen asking to allow permissions, grant the permission. Now issue the following commands one by one:
Once done, disconnect your device and Google Pay should now work. Keep in mind that, even though Google Pay works, you can’t ever use any root apps that modify the system partition in any way nor can you do so yourself. Unless you are fine with tripping the safety net again. If you are into modding your ROM we’d suggest you use Magisk instead.
Method 2: Magisk Systemless Root
Our second method to use Google Play on rooted Android devices involved Magisk. Magisk is based on the same philosophy, except it takes things further. Not only does it root your device but also provides a systemless framework for other developers to work on. We’ve covered Magisk quite extensively here at DroidViews since it is not the easiest to use. Rooting with Magisk gives you several advantages over SuperSU. These advantages are what we call Magisk modules or mods. They are based on the systemless Magisk framework so they don’t trip the SafetyNet.
You still get to have a rooted device, you still get to install mods, such as Viper4Android and you can still turn 3rd party apps into system apps with a Magisk mod. All of that, while having a working Google Pay app, alongside Snapchat, NetFlix, and others if you use them.
As mentioned, we’ve covered Magisk quite a bit so we already have a detailed guide on how to install it as well as how to use it. We’ll just list the links below so you can go check them out and hopefully get what you need.
Once you have rooted your device with Magisk, you might also want to enable the options in Magisk settings as shown in the screenshot above. In case Google Pay doesn’t still work, use ADB and issue the commands as mentioned in the first method.
Finally, you should be able to use Google Pay on rooted Android devices. In case you have any question, please drop a question in the comment section.
Источник