Posso obter o arquivo .apk de um aplicativo instalado?


9

Implantei o arquivo .apk dos meus aplicativos em um dispositivo Qualcomm. Agora, devido à minha má sorte, meu laptop no qual este aplicativo foi desenvolvido foi roubado. Portanto, não tenho meu código de aplicativo comigo. No entanto, tenho o dispositivo no qual eu havia instalado meu aplicativo anteriormente.

Portanto, minha pergunta é: posso obter o arquivo .apk dos meus aplicativos neste dispositivo? se sim, por favor me diga como conseguir isso.

Qualquer ajuda é apreciável.

Obrigado, Gaurav

Respostas:



4

Se você souber o nome do arquivo instalado do apk (que em alguns dispositivos pode ser myapp-1.apk ou myapp-2.apk em vez de apenas myapp.apk), poderá acessá-lo diretamente como usuário comum, incluindo o adb. em um dispositivo seguro, para poder puxá-lo. Mas se você não souber o nome do apk instalado , não poderá navegar no diretório / data / app sem ser root ou aid_system.

Pode valer a pena adivinhar o nome instalado - tente com simplicidade, tente com o -1.apk e o -2.apk, etc.

Pode haver outra maneira: acredito que o seguinte funcionará em um dispositivo seguro, mas não há um na minha frente no momento para testá-lo.

EDIT: nova ideia para determinar o nome exato do arquivo APK

1) adb pull /data/system/packages.xml

2) Procure nele a entrada codePath do seu aplicativo

3) adb puxe isso

EDIT: Com relação à velha idéia abaixo, Matthew descobriu que, embora os arquivos por processo em / proc tenham permissão de leitura em um dispositivo protegido, eles estão vazios quando lidos por um uid não privilegiado que não seja o de seu proprietário. Então isso não vai funcionar.


1) Coloque seu aplicativo em execução. Você também precisará de uma máquina com adb.

2) tipo

adb shell ps 

e procure a linha com o nome do seu aplicativo:

app_1     11959 907   112984 27580 ffffffff afd0c5bc S com.clevername.myapp

3) pegue o número na segunda coluna, que é o ID do processo, e visualize seu mapa de memória virtual; nesse caso, eu digitaria

adb shell cat /proc/11959/maps

e procure uma linha em que ele tenha mapeado seu próprio arquivo apk na memória

43e9c000-43ea3000 r--s 001f4000 b3:06 15393      /data/app/com.clevername.myapp-1.apk

4) Esse é o nome do arquivo que você precisa adb pull

adb pull /data/app/com.clevername.myapp-1.apk .

O exame das permissões de diretório em / proc sugere que isso funcione para um usuário sem privilégios, desculpe-me se não. Se você estiver familiarizado com o uso do 'grep', use-o para evitar a varredura manual da saída.

Adendo: Não sei ao certo qual é a história dos aplicativos instalados no cartão SD.


Eu apenas tentei no meu dispositivo seguro; adb shell cat /proc/####/mapsinfelizmente não retorna nada.
Matthew Leia

@ Matthew ... estranho, estou simulando o caso seguro e vendo a maioria dos arquivos em proc ter tamanho zero, mas são legíveis. Antes eu só tinha verificado se eles teriam permissões de leitura. Talvez isso seja feito anulando-os em vez de permissões, para que as ferramentas de leitura / proc não obtenham um fluxo constante de erros de acesso. Oh bem ... adivinhar a variante de nome do apk instalado pode ser o melhor.
Chris Stratton

Meu nome de arquivo apk era louco e impossível de entender, mas usar o packages.xml funcionou para descobrir o nome real. :)
paleozogt
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.