Questo è solo pura speculazione come non ho mai provato a utilizzare l'API di installazione del pacchetto stesso:.
si potrebbe provare a impostare un pacchetto di installazione ge per l'app del proprietario del dispositivo (utilizzando PackageManager.setInstallerPackageName()
). Questo pacchetto di installazione dovrebbe essere un APK separato firmato con lo stesso certificato dell'APK del proprietario del dispositivo.
getPackageManager().setInstallerPackage("<device.owner.package.name>", "<installer.package.name>");
Dal tuo APK installatore, si potrebbe quindi utilizzare PackageInstaller
per preparare un aggiornamento:
PackageInstaller pi = getPackageManager().getPackageInstaller();
int sessId = pi.createSession(new PackageInstaller.SessionParams(PackageInstaller.SessionParams.MODE_FULL_INSTALL));
PackageInstaller.Session session = pi.openSession(sessId);
OutputStream out = session.openWrite("app");
// .. write updated APK file to out
session.fsync(out);
session.commit(...);
session.close();
Non sono sicuro se questo viene installato silenziosamente l'aggiornamento anche se (o se funziona affatto nel modo che mi sarei aspettato).
fonte
2015-07-03 10:26:28
Evolve (https://github.com/VivekPanyam/Evolve) potrebbe essere utile –
L'ho già visto ma non riesco a utilizzarlo, è anche in fase alpha, che potrebbe causare l'arresto anomalo della nostra app. Sembra che cambi il codice in fase di esecuzione, quindi sembra un po 'complicato. – Shubham
@Shubham hai ottenuto questo lavoro? – Maragues