ho bisogno di usare la nuova libreria di espansione google-play (o mercato), e ho difficoltà con esso. Mi chiedo se qualcun altro lo sta usando e noto gli stessi problemi che posso vedere, quindi sarei molto felice se potessi aiutare a risolverli:android - tanti problemi con la libreria di espansione
1. a volte non capisco eventi importanti (errori, per esempio) torna all'attività del downloader.
2.it non funziona affatto su alcuni dispositivi, come xoom. penso di averlo risolto: Download expansion files on tablet
3.anche per dispositivi identici, uno può scaricare il file e l'altro può sempre ottenere un errore di connessione. per alcuni dispositivi, non potrà mai essere in grado di scaricare (anche dispositivi non-rooted con l'app di google-play).
4. Dopo il completamento del download, il file può essere danneggiato, quindi è necessario utilizzare il controllo CRC e scaricare di nuovo nuovamente tutto.
5. La notifica talvolta apre più istanze dell'attività del downloader quando viene premuto. Inoltre, non capisco perché hanno lasciato la notifica rimanere nel caso in cui l'attività è ancora mostrata.
6.quando si verifica un errore e successivamente viene gestito, non attende che l'utente lo confermi. non sono sicuro in quali casi si verifica, ma è davvero strano e imprevedibile.
7. Dopo aver lasciato l'attività di downloader, ottengo un'eccezione di un servizio che perde.
8.Ogon offuscando l'app, si blocca a causa di operazioni SQL effettuate tramite la libreria. come e perchè? EDIT: questo perché google ha deciso di fare alcune operazioni di riflessioni sulla parte SQL (nel file "DownloadsDB.java"). per sistemarlo, ho provato a impostare proguard per ignorare l'intera libreria (è comunque open source), ma non ha funzionato, quindi quello che ho fatto è dare le classi che vuole da solo, quindi ho sostituito "DownloadsDB.class.getDeclaredClasses()" con "new Class [] {MetadataColumns.class, DownloadColumns.class};" .
Non capisco perché Google non ha potuto pubblicare solo una semplice API per inviare un intento al mercato per scaricare il file e verificare se è ok oppure fornire una libreria molto meno complessa. a causa della complessità, è molto difficile trovare e correggere i loro bug.
la mia domanda è: qualcun altro ha provato questa libreria e qualcun altro ha avuto successo nell'usarlo senza problemi? in tal caso, pubblica la soluzione ...
MODIFICA: sembra che Google abbia aggiornato la sua libreria (alla versione 2).
essi sostengono i prossimi cambiamenti:
- voce dell'Elenco
- file di patch ora viene scaricato.
- dispositivi Honeycomb ora supportati con le notifiche ICS-like
- controllo CRC (da campione) ora supporta i file Zip compressi
- L'utilizzo di riflessione rimossa per permettere un facile offuscamento
- Servizio perdite fisso
- carattere non stampabile rimosso dal ZipResourceFile
- formattazione piccole modifiche
- Ulteriori commenti e le modifiche al file
l'ho provato ora e sembra che siano quasi arrivati.
l'unico bug che ho trovato è che se aggiorno il file di espansione (e l'APK & CRC), il download inizia ma non rimuove il vecchio file di espansione.
Inoltre, la notifica mostra l'ora corrente anziché, beh, qualsiasi altra cosa che potrebbe essere correlata al download.
per ora, dal momento che ho una sola espansione, eseguo il controllo successivo ogni volta che ottengo lo stato STATE_COMPLETED dal servizio. spero che non abbia altri problemi:
private void deleteOldExpansionFile()
{
int fileVersion = 0;
final int versionCode = App.getAppVersionCode(DownloaderActivity.this);
fileVersion = versionCode;
final String fileName = Helpers.getExpansionAPKFileName(this, true, fileVersion); //get the expansion file name based on the build version of the app.
final File newFile = new File(Helpers.generateSaveFileName(this, fileName));
final File[] listFiles = newFile.getParentFile().listFiles();
for (final File file:listFiles)
{
final String name = file.getName();
if (name.startsWith(fileName))
continue;
file.delete();
}
}
È inoltre possibile creare il proprio formato, che unisce tutte le risorse per voi. il motivo: potrebbe essere un po 'più sicuro e impedire agli altri di guardare i tuoi file. –