Come mantenere due versioni di un'app installata?


43

Android Market ha appena aggiornato un'app sul mio dispositivo. Mi è piaciuto l'aggiornamento, ma è completamente diverso dall'ultima versione che era anche la mia preferita. Quindi, voglio mantenere anche l'ultima versione. Ho l'apk dell'ultima versione grazie a Titanium Backup. Ma non posso installarlo senza sostituire quello attuale (l'architettura Android fa schifo). C'è un modo per fare questo? Hacks ecc.
Nota: voglio mantenere la versione corrente che deve essere collegata a Market per ricevere aggiornamenti futuri.

Risposte:


29

Può essere fatto, ma non è semplice per le ragioni menzionate da eldarerathis . Hai bisogno di apktool . Fare riferimento a questa guida su come usarlo. E questo sulla firma dell'apk dopo aver finito.

Devi modificare il file AndroidManifest.xml. Trova la linea che assomiglia a questa:

manifest package="com.example.app"

e cambiarlo in qualcosa del tipo:

"com.example.app.foo"

Al termine, ricompilare, quindi dimettersi. Per ripristinare i tuoi dati, prova quanto segue tramite adb:

adb rm /data/data/com.example.app.foo
adb push /data/data/com.example.app /data/data/com.example.app.foo

Dov'è com.example.appil nome del pacchetto dell'originale ed com.example.app.fooè modificato.

C'è sempre una leggera possibilità che l'app si rompa o, a seconda del modo in cui l'app è strutturata, potresti ricevere una finestra di dialogo ogni volta che cambi lo schermo che ti chiede di scegliere quale app vuoi avviare, ma vale sicuramente la pena provare se lo voglio abbastanza male.

Naturalmente, le due app non condivideranno le stesse impostazioni e gli stessi dati.


2
Fantastico ... Non penso che sarebbe soggetto a problemi legali in quanto non ho intenzione di distribuirlo / venderlo .. Grazie!
Android Quesito

1
Dipende dal tuo paese. In Ungheria è legale decodificare un'app per scopi personali / di apprendimento, ma non conosco il resto del mondo. Ma poiché non stai distribuendo nulla, non avrai problemi.
RR

16

Non puoi farlo. Ogni applicazione Android ha un nome di pacchetto, che definisce efficacemente lo spazio dei nomi Java / Dalvik occupato dalle sue classi. Non è possibile installare due pacchetti con lo stesso nome perché creerebbe spazi dei nomi sovrapposti, motivo per cui sostituisce sempre quello vecchio quando si installa uno nuovo. L'unico modo in cui è possibile farlo è se si fosse in grado di ottenere l'origine dell'app e modificare tutte le definizioni del pacchetto.


7

Fallo con in 5 minuti

Metodo : cambia il nome del pacchetto in modo che Android lo riconosca come un'altra app.

Nessun APKtool, nessun adb, nessuna abilità di superutente necessaria.

Strumenti richiesti

  • PC con JAVA (Windows, Linux, Mac) (preferibilmente JDK 8)
  • ApkRename

passi

  1. Backup / Scarica una copia dell'app desiderata ( app.APK)
  2. Trasferimento su PC
  3. Su PC scarica JAVA e ApkRename
  4. Cambia il nome del pacchetto fornendo, percorso del file APK e nuovo nome del pacchetto, in ApkRename
  5. Firma l'APK usando ApkSign
  6. Trasferisci il nuovo APK sul telefono e installalo.

NOTA: in caso di difficoltà nella firma dell'APK, utilizzare l'app dell'editor APK Android come Advanced permission managered effettuare qualsiasi modifica, premere Salva e installa. Al momento firmeranno l'app.


2

Potresti provare a riconfezionare l'applicazione. Una volta ho installato una versione modificata di un gioco e il risultato sono stati due giochi. Se ricordi bene, i nomi dei pacchetti non erano gli stessi.


0

A volte, ci sono alcuni riferimenti nella libreria eseguibile ( .so) e neanche cambiare il nome del pacchetto (anche smali -> classes.dex).

In casi semplici, cerca ApkEditor .


1
Questo è un buon inizio, ma non spiega quali cambiamenti è necessario apportare in ApkEditor. Se vuoi che la tua risposta sia utile, potresti volerla modificare per aggiungere un po 'più di informazioni.
Dan Hulme,
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.