Como portar um app de outro smartphone
Descrição:
1. Como colocar apps de terceiros numa ROM
2. Colocando um app JNI na ROM
3. Portando um app para sua ROM/Sistema
Como colocar apps de terceiros numa ROM
1. Baixe um explorer com acesso root. Recomendo o ES File Explorer (Grátis) ou Solid Explorer (Pago). Nesse tutorial usei o ES File Explorer.
2. Copie o apk que quer passar para a ROM e cole dentro da pasta /System/app
3. Mude as permissões para RW-R--R--
Depois que fizer isso, apenas reinicie o sistema. Depois de ligado, o Android reconhecerá o app que você colocou na pasta System como um app do sistema.
Colocando um app JNI na ROM
Existem alguns apps que não funcionam quanto são copiados para o diretório do sistema, que é o caso do QuickPic. Ele, como alguns outros apps, são feitos em JNI, o que não permite a leitura da lib dentro do apk se ele estiver no sistema, justamente pelo sistema ser uma partição 'somente leitura'
Apps JNI só funcionarão na sua ROM da seguinte forma:
1. Abra o apk como zip (Na foto estou usando o Winrar);
2. Abra a pasta lib.;
3. Se seu processador for x86. abra a pasta x86, se for ARM, abra a pasta Armeabi;
4. Extraia o(os) arquivo(os) *.so de dentro do apk.;
5. Depois de extraído o arquivo '*.so', você vai voltar até a raiz e deletar a pasta lib. ;
6. Para o app funcionar, você colará o apk dentro da pasta /system/app e os arquivos *.so que estavam dentro do app para a pasta /system/lib.
Só para constar, Esse caso do QuickPic é uma exceção, Muitos apps funcionam se você simplesmente copiar o apk para a pasta /system/app. (E é claro, colocar a permissão 0644 RW-R--R--. Caso não saiba o que é permissão de arquivo, clique aqui).
No caso de um zip, é só colocar o apk na pasta /system/apk, não precisa mudar nada, o updater-script muda as permissões quando a ROM é instalada.
Porque resolvi ensinar isso primeiro?No caso de um zip, é só colocar o apk na pasta /system/apk, não precisa mudar nada, o updater-script muda as permissões quando a ROM é instalada.
R: Bem, para mostrar que boa parte dos apps do sistema que são proprietários, tem libs dentro do sistema e que o app não vai funcionar só copiando o apk.
Mas na pasta lib tem mais de 100 arquivos "*.so", como vou descobrir quais são os certos?
R: Assim...
Portando um app para sua ROM/Sistema
Voce vai precisar de:
App Catlog
LogCat Extreme <- Clique no nome para baixar (Play Store)
Se quiser fazer esse procedimento pelo computador, o ADB tem a função nativa de logcat
Porém, recomendo que faça por esse aplicativo
App que deseja portar instalado no seu celular
Vou portar o app MobileTV do Motorola D1 (XT918) para o Moto G (xt1039).
Eu vou instalar um app que sei que não vai funcionar corretamente no meu celular, para assim, fazer um 'link' para mais um problema.
Copie o apk que deseja instalar do celular antigo para o celular novo.
Abra o apk e tente instalar.
Ao concluir, aperte concluído e abra o logcat.
Ao concluir, aperte concluído e abra o logcat.
Com ele aberto, vá em Per-App Logcat e procure o app que acabou de instalar
Ao encontrar e clicar no app e minimize o Logcat
Abra o app que deseja portar.
Se aparecer uma mensagem de erro, significa que o app necessita de outro arquivo que está no sistema do celular antigo, vamos descobrir qual.
*Ao abrir o app com o Logcat minimizado, o mesmo pegará todos os dados de execução e te mostrará onde está o erro.
Aqui estão todos os processos gerados pelo app de TV, Você verá os erros listados com a letra E .
Ali está a linha que precisamos
...' /system/lib]]] couldn't find "libJellyPG.so"
Mostrou que o app não consegue encontrar o arquivo libJellyPG.so, Esse arquivo está no Motorola D1,
Ali marcado vocês podem ver, já peguei o arquivo que faltava de dentro da pasta
/system/lib do D1 e joguei dentro da mesma pasta /system/lib, só que no Moto G, vamos abrir o app
Aqui você vê que o app só precisava daquela lib para abrir, mas o app não funciona. Porque não?
Bem, tirando o fato do Moto G não ter receptor interno de TV, alguns apps exclusivos são ligados ao framework do sistema, ou seja, se o framework do novo sistema não for editado, o app não vai funcionar. Em outros casos, você conseguiria pegar o framework e o app em questão e com horas de trabalho e uma leitura de smali code, você conseguiria portar.
1. À partir do Lollipop, as libs dos apps deixaram de ficar dentro da pasta lib do sistema e agora ficam do lado do apk
'/system/app/<Pasta com nome do app>'/<Apk com o mesmo nome da pasta>/lib'
2. Existem apps que não tem nenhuma lib dentro dele, mas que podem necessitar de outros arquivos, o processo de encontrar esses arquivos necessários é o mesmo.
3. Apps podem ter várias libs, eu simplesmente dei sorte de portar um app que só tinha 1 lib.
4. Pode acontecer de um app de uma versão superior funcionar em uma versão anterior do Android. (tipo portar um app do 4.4 para o 4.0).
Queria saber se esse processo funciona com music player do Samsung galaxy s4 mini tenho ele em apk! Gostaria de saber como faço pra instalar em outros dispositivos?
ResponderExcluirMeu é moto g5 plus
ResponderExcluirNão sei informar, não conheço esse player exatamente.
ResponderExcluirRecomendo que faça o procedimento citado acima e informe o resultado aqui nos comentários.
abs,
Estou muito grato por você ter compartilhado esse tutorial tão compreensível e pratico, estou procurando algo assim a alguns dias.
ResponderExcluirPor nada.
ExcluirSe tiver pedidos de tutorial, pode mandar no meu 'contato'. Se quiser escrever algum post relacionado, pode usar o mesmo menu.
Abs.