Skip to content

Instantly share code, notes, and snippets.

@jtrindade
Created February 28, 2014 21:02
Show Gist options
  • Save jtrindade/9279850 to your computer and use it in GitHub Desktop.
Save jtrindade/9279850 to your computer and use it in GitHub Desktop.
Google Play Services e Google Store no emulador de Android
=========
À data corrente (Fevereiro de 2014), o emulador de Android não suporta devidamente a utilização dos Google Play Services.
Criando uma imagem com a opção Google APIs e usando-a para executar um projecto baseado na biblioteca incluída com o SDK, resulta numa mensagem de erro indicando a necessidade de actualizar os Google Play Services, em que essa actualização falha.
Para resolver o problema, são necessários os seguintes passos:
1. Criar uma dispositivo virtual com o AVD Manager.
1. Obter o pacote de Google Apps correspondente em CyanogenMod.
1. Obter o utilitário mkfs.yaffs2 para ARM.
1. Obter versões recentes dos Google Play Services e da Google Play Store a partir de um dispositivo Android actualizado.
1. Arrancar com o emulador abrindo espaço na partição _system_.
1. Instalar os pacotes Google Login Service, Google Services Framework, Google Play Services e Google Play Store na partição _system_.
1. Copiar o utilitário _mkfs.yaffs2_ para a imagem do emulador.
1. Utilizar o _mkfs.yaffs2_ para criar uma nova imagem da partição _system_
1. Substituir a imagem da partição _system_ no SDK.
Dispositivo Virtual
--------
Usando o AVD Manager, criar um dispositivo virtual com uma versão de Android >= 4.0.3 (API 15) sem Google APIs. Usei Android 4.2.2 com API 17. Deve ser configurado um SD Card com 512 MiB.
Downloads
--------
### Google Apps ###
Escolher a versão de [Google Apps](http://wiki.rootzwiki.com/Google_Apps) apropriada para o dispositivo criado no passo anterior.
Extrair do _zip_ os seguintes ficheiros da directoria _system_:
- GoogleLoginService.apk
- GoogleServicesFramework.apk
### mkfs.yaffs2 ###
Obter o utilitário [_mkfs.yaffs2_ para ARM](http://code.google.com/p/android-group-korea/downloads/detail?name=mkfs.yaffs2.arm).
Obter APKs recentes
--------
Ligar um dispositivo Android >= 4.0.3 actualizado ao PC. Usando o adb, obter os pacotes Google Messaging Service e Android Vending:
### Confirmar nomes completos dos pacotes ###
Imprimir a lista completa de pacotes instalados no dispositivo real com:
```
adb -d shell pm list packages
```
Deverá encontrar os seguintes:
- **com.google.android.gms** : Google Play Services
- **com.android.vending** : Google Play Store
### Obter o caminho dos pacotes ###
Obter o caminho para os pacotes seleccionados do dispositivo real com:
```
adb -d shell pm path com.google.android.gms
adb -d shell pm path com.android.vending
```
Poderá obter algo como:
- /data/app/com.google.android.gms-2.apk
- /data/app/com.android.vending-1.apk
### Obter os pacotes ###
Obter os pacotes seleccionados do dispositivo real com:
```
adb -d pull /data/app/com.google.android.gms-2.apk
adb -d pull /data/app/com.android.vending-1.apk
```
Alterar os nomes dos ficheiros obtidos para:
- com.google.android.gms-2.apk -> **GmsCore.apk**
- com.android.vending-1.apk -> **Vending.apk**
Lançar o emulador
--------
O emulador tem de ser lançado com espaço extra na partição _system_, o que, para um dispositivo virtual chamado AVD17 pode ser feito na linha de comando com:
```
emulator -partition-size 768 -avd AVD17
```
Instalar os pacotes seleccionados
--------
Permitir acessos de escrita na partição _system_ e copiar os 4 pacotes para a directoria _/system_:
```
adb -e mount -o remount,rw /system
adb -e push GoogleLoginService.apk /system/app/
adb -e push GoogleServicesFramework.apk /system/app/
adb -e push GmsCore.apk /system/app/
adb -e push Vending.apk /system/app/
adb -e mount -o remount,ro /system
```
Instalar mkfs.yaffs2
--------
Copiar o ficheiro _mkfs.yaffs2_ para a directoria _/data_ do dispositivo virtual:
```
adb -e push mkfs.yaffs2 /data/
adb -e shell chmod 755 /data/mkfs.yaffs2
```
Gerar uma nova system.img
--------
Produzir uma nova versão da imagem de sistema do dispositivo virtual:
```
adb -e shell
/data/mkfs.yaffs2 /system /sdcard/system.img
exit
adb -e pull /sdcard/system.img
```
Substituir system.img no SDK
--------
Copiar a nova imagem para cima da antiga, dentro da estrutura de directorias do SDK (ex.: `sdk/system-images/android-17/armeabi-v7a/system.img`)
** NÃO ESQUECER O BACKUP DA VERSÃO ANTERIOR. **
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment