2010-07-15 15 views
15

Per la prossima versione della nostra applicazione, desidero modificare sharedUserId poiché ora utilizziamo un'app dashboard di controllo interno che deve scrivere nei file delle impostazioni dell'app.sharedUserId: sicuro di cambiare quando l'app è già sul mercato?

Ma poiché l'app è già installata su molti telefoni, questo sarà un problema? Ho eseguito un piccolo test sull'emulatore, e ho visto eccezioni nei registri del dispositivo che le versioni * .bak dei file delle preferenze non possono essere scritte. Non sono sicuro di quanto sia critico. Curiosamente, le impostazioni di sicurezza sembrano funzionare, anche se la cartella shared_prefs è stata creata usando un altro ID utente Linux.

Qualcuno ha provato prima?

+0

va bene, sembra che questo sarà impossibile, dang. Si blocca quando si tenta di accedere a un file di database che è stato creato utilizzando una versione dell'app che non ha un set di ID utente personalizzato. Qual è l'ID utente predefinito comunque? La seconda app potrebbe forse impostare l'ID utente sull'ID utente predefinito della prima app? – Matthias

risposta

24

E per rispondere alla mia domanda nuovo:

No, non è sicuro. Poiché l'aggiornamento di un'app tramite Android Market non rimuoverà il database ei file delle preferenze, la nuova versione non sarà in grado di leggere o scrivere questi file (poiché sono stati creati con un diverso ID utente Linux) e l'app si arresterà in modo anomalo dopo il aggiornare. Dovresti chiedere ai tuoi utenti di disinstallare e reinstallare completamente l'app, che non è certamente raccomandato.

Come regola generale concludo da questo: Ogni volta che si inizia lo sviluppo di una nuova applicazione, assicurarsi di impostare un manuale attributo android:process e android:sharedUserId! Non ti fa male se non ne hai bisogno, ma ti dà il pieno controllo su quali app hanno accesso alle risorse private di questa app.

+2

Grazie per aver postato, stavo quasi pubblicando un aggiornamento di sharedUserId .. Purtroppo non impareremo mai che quando stiamo creando l'app:/ –

+0

Per quelli di noi che non hanno pianificato in anticipo, c'è una soluzione a questo problema? –

+1

@BarryFruitman Se non è un problema perdere i dati dell'utente, è possibile utilizzare nuovi file con nomi diversi. Dovevamo farlo una volta a causa di un bug di Android che rendeva inaccessibili i nostri file su alcuni dispositivi. – Oderik

2

Nessuna soluzione fin d'ora, ma interpretato in problemi registrati potrebbe ottenere Google per risolvere questo:

http://code.google.com/p/android/issues/detail?id=1227

http://code.google.com/p/android/issues/detail?id=14074

+0

Il problema è che questo non è un bug, è una funzionalità. Senza specificare un ID utente condiviso, Android (o il Linux sottostante) ne assegna uno per te. Non appena ne imposti uno, sarà diverso per definizione. Dal momento che su qualsiasi sistema Linux, a un utente non è consentito accedere ai file di un altro utente a meno che non sia stato concesso il permesso, questo è praticamente il comportamento previsto. – Matthias

+0

Vero, ma il bug citato è il fatto che il sistema operativo Android non riconosce un ID condiviso che viene assegnato/modificato e aggiorna i diritti dei dati dell'app già installati di conseguenza. –

Problemi correlati