iGO no android kitkat 4.x e lollipop 5.x com root
Algumas pessoas gostam de utilizar o programa de GPS iGO nos celulares android, para terem uma opção de navegação completamente offline, em termos de mapas e rotas.
A partir do android kitkat o Google mudou a api que permite o acesso ao cartão SDHC do dispositivo por programas de terceiros, causando alguns problemas relativos a perda de acesso a gravação no cartão de memória.
No caso do iGO algumas pessoas estavam instalando o programa inteiro na memória interna do aparelho, mas isso é só para quem tem dispositivos com muita memória, já que dependendo da configuração de mapas a instalação ocupa facilmente 500M, podendo chegar a 1G.
Fiquei curioso e resolvi fazer uns testes. A instalação ocorria normalmente, mas observei que toda vez que o programa fosse acessado era necessário fazer a configuração inicial (linguagem, escolha de vozes, sistema de medidas, configurações regionais).
Com o adb dei uma olhada no diretório da aplicação (no caso um LG H442f firmware 10f, a localização pode mudar entre diferentes fabricantes e versões de firmware):
C:\adt-bundle-windows-x86-20131030\sdk\platform-tools> .\adb shell shell@c70ds:/ $ su su root@c70ds:/ # cd /data/data/com.navngo.igo.javaclient cd /data/data/com.navngo.igo.javaclient root@c70ds:/data/data/com.navngo.igo.javaclient # ls -l ls -l lrwxrwxrwx u0_a118 u0_a118 2016-04-21 21:47 android_linked_root -> /storage/external_SD/iGO/ lrwxrwxrwx u0_a118 u0_a118 2016-04-21 21:47 branding.gro -> /storage/external_SD/iGO/branding.gro lrwxrwxrwx u0_a118 u0_a118 2016-04-21 21:47 branding.zip -> /storage/external_SD/iGO/branding.zip drwxrwx--x u0_a118 u0_a118 2016-04-21 21:47 cache lrwxrwxrwx u0_a118 u0_a118 2016-04-21 21:47 content -> /storage/external_SD/iGO/content lrwxrwxrwx u0_a118 u0_a118 2016-04-21 21:47 data.gro -> /storage/external_SD/iGO/data.gro lrwxrwxrwx u0_a118 u0_a118 2016-04-21 21:47 data.zip -> /storage/external_SD/iGO/data.zip lrwxrwxrwx u0_a118 u0_a118 2016-04-21 21:47 debug -> /storage/external_SD/iGO/debug lrwxrwxrwx u0_a118 u0_a118 2016-04-21 21:47 gfx -> /storage/external_SD/iGO/gfx -rw------- u0_a118 u0_a118 2 2016-04-21 21:47 kuka_logger.txt lrwxrwxrwx install install 2016-04-22 00:31 lib -> /data/app/com.navngo.igo.javaclient-2/lib/arm lrwxrwxrwx u0_a118 u0_a118 2016-04-21 21:47 license -> /storage/external_SD/iGO/license -rw------- u0_a118 u0_a118 94 2016-04-21 21:47 monkey.txt lrwxrwxrwx u0_a118 u0_a118 2016-04-21 21:47 save -> /storage/external_SD/iGO/save -rw------- u0_a118 u0_a118 656 2016-04-21 21:47 sentinel.txt lrwxrwxrwx u0_a118 u0_a118 2016-04-21 21:47 sys.txt -> /storage/external_SD/iGO/sys.txt lrwxrwxrwx u0_a118 u0_a118 2016-04-21 21:47 ui_android -> /storage/external_SD/iGO/ui_android lrwxrwxrwx u0_a118 u0_a118 2016-04-21 21:47 ui_igo9 -> /storage/external_SD/iGO/ui_igo9 lrwxrwxrwx u0_a118 u0_a118 2016-04-21 21:47 ux -> /storage/external_SD/iGO/ux
Pode-se observar que a maioria dos arquivos estão com link simbólico, isto é, o arquivo está fisicamente no cartão SDHC (/storage/external_SD) e são referenciados na memória interna, para economizar o armazenamento interno do aparelho.
A informação de link está presente tanto no “l“(ink) das permissões vistas no lado esquerdo (ex.: lrwxrwxrwx) como no símbolo -> do lado direito que aponta onde fisicamente está armazenado o arquivo.
No caso de um aparelho com root fica fácil corrigir o problema, basta trazer o mínimo necessário de arquivos para a memória interna, que são os arquivos que sofrem algum tipo de escrita (preferências, locais favoritos, etc): sys.txt e as pastas android_linked_root e save. Para isso remove-se o link com o comando rm e copia-se o arquivo com o comando cp:
root@c70ds:/data/data/com.navngo.igo.javaclient # rm sys.txt root@c70ds:/data/data/com.navngo.igo.javaclient # cp /storage/external_SD/iGO/sys.txt .
As pastas android_linked_root e save são removidas com o rm e criadas internamente com o comando mkdir. Basta recriar a pasta save, a pasta android_linked_root é criada de maneira automática pelo programa com todas as permissões e conteúdos necessários quando o iGO é executado pela primeira vez:
root@c70ds:/data/data/com.navngo.igo.javaclient # rm android_linked_root root@c70ds:/data/data/com.navngo.igo.javaclient # rm save root@c70ds:/data/data/com.navngo.igo.javaclient # mkdir save
Os arquivos criados e copiados são pertencentes ao usuário que os criou (root), então é necessário corrigir a propriedade para que fique igual ao usuário interno do programa (u0_a118, no exemplo):
... drwx------ root root 2016-04-22 01:00 save -rw------- u0_a118 u0_a118 656 2016-04-21 21:47 sentinel.txt -rwx------ root root 13455 2016-04-22 00:58 sys.txt ...
root@c70ds:/data/data/com.navngo.igo.javaclient # chown -R u0_a118.u0_a118 sys.txt save
Após a correção das permissões temos o seguinte:
drwx------ u0_a118 u0_a118 2016-04-22 01:00 save -rw------- u0_a118 u0_a118 656 2016-04-21 21:47 sentinel.txt -rwx------ u0_a118 u0_a118 13455 2016-04-22 00:58 sys.txt
A partir desse momento o iGO passa a funcionar corretamente, não sendo necessário a configuração inicial a cada utilização e a gravação de favoritos e demais personalizações são permanentes.
Publicado em 24/04/2016, em android, GPS, iGO, Uncategorized e marcado como adb, android, GPS, iGO, iGO GPS, kitkat, lollipop, root, SDHC. Adicione o link aos favoritos. Deixe um comentário.
Deixe um comentário
Comentários 1