2013-05-02 16 views
8

Stavo esaminando i documenti di APK EXPANSION FILES in Android e mi chiedevo che possiamo avere tutti i file di layout nell'apk delle patch e nella logica di business dell'applicazione nell'apk principale?Android Expansion apk

Ho letto anche questo Android Apps Break the 50MB Barrier.

Ho provato a creare questo, ma il problema che ho dovuto affrontare era che i nomi dei widget devono essere nel file R.java che viene generato automaticamente. Se ho file di layout nel file di patch non nel file principale, non sono in grado di fare riferimento quindi utilizzando R.id.xxx.

Quindi, per favore, dimmi se è possibile o no?

Se questo è possibile, allora come può essere raggiunto?

Voglio anche sapere quali sono le risorse o le risorse che possono essere aggiunte nell'apk patch.

risposta

3

a parlare immediatamente, non è possibile separare i file di layout da apk e poi cercando di accedervi utilizzando R.id.whatever

file di espansione sono destinate ad immagazzinare i beni come i media, documenti, e altre cose statiche che l'applicazione utilizza e il contenuto del pacchetto di espansione è memorizzato nell'archiviazione condivisa del dispositivo e non è collegato al file apk. Per accedere alle risorse del file di espansione, è necessario codificare l'applicazione per leggerle dal percorso di archiviazione condiviso di quel dispositivo.

Tornando alla domanda di memorizzazione dei file di layout in un file di espansione. Per ottenere ciò, dovrai scrivere il tuo parser di layout con le funzionalità di base simili a LayoutInflator. Non è possibile utilizzare LayoutInflator per analizzare qualsiasi file di layout che non fa parte dell'apk o memorizzato su qualsiasi archivio esterno. Quindi l'idea è di archiviare i file di layout nel file di espansione (che sarà fuori dall'apk, nella memoria condivisa del dispositivo), analizzare il file utilizzando il parser personale e aggiungere le viste al layout principale in fase di runtime. Anche se non sarai in grado di accedere alle tue visualizzazioni usando R.id.whatever ma puoi sempre usare la struttura ad albero visuale per accedere alle viste o mentre analizzi le viste, memorizza gli oggetti di riferimento per accedervi per un uso successivo.

Spero che questo ti dia un punto di partenza.