Posso ottenere il file .apk di un'app installata?


9

Ho distribuito il mio file .apk di app su un dispositivo Qualcomm. Ora a causa della mia sfortuna il mio laptop su cui è stata sviluppata questa app è stato rubato, quindi non ho il mio codice app con me. Tuttavia, ho il dispositivo su cui avevo precedentemente installato la mia app.

Quindi la mia domanda è: posso ottenere il mio file .apk di app da questo dispositivo? se sì, allora per favore dimmi come ottenerlo.

Qualsiasi aiuto è apprezzabile.

Grazie Gaurav

Risposte:



4

Se conosci il nome del file installato dell'apk (che su alcuni dispositivi potrebbe essere myapp-1.apk o myapp-2.apk anziché solo myapp.apk) puoi accedervi direttamente come un normale utente incluso l'uno adb che esegue come su un dispositivo sicuro, quindi dovresti essere in grado di adb tirarlo. Ma se non conosci il nome apk installato , non puoi navigare nella directory / data / app senza essere root o aid_system.

Potrebbe valere la pena di indovinare il nome installato: provalo semplicemente, provalo con -1.apk e -2.apk, ecc.

Potrebbe esserci un altro modo: credo che quanto segue funzionerà su un dispositivo sicuro, ma al momento non ne ho uno davanti a me per testarlo.

EDIT: nuova idea per determinare il nome esatto del file APK

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

2) Cerca la voce codePath della tua applicazione

3) adb tirare quello

EDIT: Per quanto riguarda la vecchia idea di seguito, Matthew ha scoperto che mentre i file per processo in / proc hanno l'autorizzazione di lettura su un dispositivo sicuro, sono vuoti quando vengono letti da un utente non privilegiato diverso da quello del loro proprietario. Quindi questo non funzionerà.


1) Avvia la tua app. Avrai anche bisogno di una macchina con adb.

2) tipo

adb shell ps 

e cerca la riga con il nome della tua app:

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

3) prendi il numero nella seconda colonna che è l'id del processo e visualizza la sua mappa di memoria virtuale, in questo caso scrivo

adb shell cat /proc/11959/maps

e cerca una linea in cui ha mappato il proprio file apk in memoria

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

4) Questo è il nome del file che dovresti aggiungere ad pull

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

L'esame delle autorizzazioni della directory in / proc suggerisce che questo dovrebbe funzionare per un utente non privilegiato, mi scuso se non lo fa. Se hai familiarità con l'uso di 'grep' puoi usarlo per evitare la scansione manuale dell'output.

Addendum: non sono davvero sicuro di quale sia la storia delle app installate sulla scheda SD.


Ho appena provato sul mio dispositivo sicuro; adb shell cat /proc/####/mapsnon restituisce nulla, purtroppo.
Matteo Leggi

@Matthew ... strano, sto simulando il caso sicuro e vedendo la maggior parte dei file in proc hanno dimensioni zero, ma sono leggibili. Prima avevo solo verificato che avrebbero avuto i permessi di lettura. Forse è fatto annullandoli invece delle autorizzazioni in modo che gli strumenti di lettura / proc non ottengano un flusso costante di errori di accesso. Vabbè ... indovinare la variante del nome apk installata potrebbe essere la migliore.
Chris Stratton,

Il mio nome file apk era tutto pazzo e indecifrabile, ma usando pacchetti.xml ha funzionato per capire il vero nome. :)
paleozogt
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.