2013-03-10 13 views
20

Ho installato un'app Android sul mio telefono che ho creato io stesso su java. L'app è stata installata correttamente sul dispositivo ma non sono in grado di individuare il pacchetto in cui è stato installato.Dove viene installato il pacchetto di app Android sul telefono

Come trovare il percorso dell'applicazione installata?

+0

a livello di programmazione http://stackoverflow.com/questions/5527764/get-application-directory –

risposta

30

troverete la cartella applicazione su:

/data/data/"your package name" 

è possibile accedere a questa cartella utilizzando il DDMS per il vostro emulatore. non è possibile accedere a questa posizione su un dispositivo reale a meno che non si disponga di un dispositivo rooted.

+0

Sono in grado di trovare il file di installazione nell'emulatore. Ma non può trovarlo nel dispositivo reale in quanto il dispositivo potrebbe non essere rootato. Questo mi porta a ulteriori domande di follow-up come di seguito: 1) Come verificare se un dispositivo è rootato o meno 2) Supponiamo che il dispositivo non sia rootato e io harcode nel mio codice qualcosa come 'DB_PATH ="/data/data/"+ context.getPackageName() + "/ databases /' per accedere alla cartella del database.Funzionerebbe su un dispositivo in cui non riesco a trovare/data/data/"nome pacchetto" – user2129794

+1

per la prima domanda che potresti usare il correttore radice: http://theunlockr.com/2012/06/20/how-to-check- se-your-android-device-is-rooted-or-no/ http://androidforums.com/rezound-all-things-root/499372-how-know-if-you-rooted.html per te secondo domanda: se il tuo dispositivo non è rootato, non avrai accesso a questa posizione in alcun modo poiché questo è il modo in cui Android è progettato per proteggere le informazioni delle applicazioni installate. –

+0

ok ... quindi se uso qualcosa come 'DB_PATH ="/data/data/"+ context.getPackageName() +"/databases/'allora funzionerà solo per il dispositivo rooted e non per quello senza root ?? – user2129794

5

Un'applicazione quando installata su un dispositivo o un emulatore installerà a:

/data/data/APP_PACKAGE_NAME 

L'APK stesso è inserito nella cartella /data/app/.

Questi percorsi, tuttavia, si trovano nella partizione di sistema e per accedervi è necessario disporre di root. Questo è per un dispositivo. Sull'emulatore, si può vedere nel vostro logcat (DDMS) nella File Explorer scheda

Tra l'altro, mostra solo il nome del pacchetto che viene definito nel Manifest.XML sotto l'attributo package="APP_PACKAGE_NAME". Gli altri pacchetti che potresti aver creato nel tuo progetto in Eclipse non vengono visualizzati qui.

+0

@Siddharth ... Sono in grado di trovare il file di installazione nell'emulatore. Ma non può trovarlo nel dispositivo reale in quanto il dispositivo potrebbe non essere rootato. Questo mi porta a ulteriori domande di follow-up come di seguito: 1) Come verificare se un dispositivo è rootato o meno 2) Supponiamo che il dispositivo non sia rootato e io harcode nel mio codice qualcosa come 'DB_PATH ="/data/data/"+ context.getPackageName() + "/ databases /' per accedere alla cartella del database. Funzionerebbe su un dispositivo in cui non riesco a trovare/data/data/"nome pacchetto" – user2129794

+0

@ user2129794: se si intende archiviare il database al suo valore predefinito posizione, non è necessario preoccuparsi di questa parte. Ecco un buon tutorial che lo spiega: http://www.vogella.com/articles/AndroidSQLite/article.html#overview_sqliteandroid –

+0

@ user2129794 L'utente non vedrà il/dati/cartelle di dati senza avere root, ma il sistema operativo lo sa sempre: il tutorial è stato sottoposto a –

1
/data/data/"your app package name " 

ma voi non in grado di leggere che se non si dispone di un dispositivo radicata

2

Il pacchetto da-sé si trova sotto /data/app/com.company.appname-xxx.apk.

/data/app/com.company.appname è solo una directory creata per memorizzare i file come librerie native, cache, ecc ...

È possibile recuperare il percorso di installazione del pacchetto con la chiamata Context.getPackageCodePath() funzioni.

3

App di sistema installate/system/app/or/system/priv-app. Altre app possono essere installate in/data/app o/data/preload /.

Connetti al tuo cellulare Android con USB ed esegui i seguenti comandi. Vedrai tutti i pacchetti installati.

$ adb shell 

$ pm list packages -f 
1

-> Elenca tutti i pacchetti da:

adb shell su 0 pm list packages -f 

-> Cerca il nome del pacchetto che tiene le chiavi "ctrl + alt + f".

-> Una volta trovato, cerca la posizione ad esso associata.

Problemi correlati