Android - E 'possibile creare una libreria personalizzata da usare tra diverse applicazioni?

StackOverflow https://stackoverflow.com/questions/1828448

  •  11-09-2019
  •  | 
  •  

Domanda

E 'possibile creare una libreria personalizzata in Android (con le proprie risorse di layout) per l'utilizzo in diversi applicazioni Android?

  • Ho creato un file regolare * .jar, ma quando ho cercato di creare / stile mio punto di vista in modo dinamico la maggior parte delle proprietà non funzionano. Anche riferimento a stili semplici dal file android.jar come android.attr.listSeparatorTextViewStyle non ha funzionato.

  • Ho creato un progetto Android senza alcuna attività, avendo le sue file di risorse proprie e quindi fatto riferimento questo progetto da un altro progetto Android da utilizzare nel suo percorso di generazione. Tutto sembra funzionare bene, ma l'emulatore continua a bloccarsi (senza alcun messaggio di errore significativo nel LogCat ) quando si tenta di eseguire il progetto.

Mi sto perdendo qualcosa?

È stato utile?

Soluzione

Bene, penso che ci sia un modo per farlo (anche se non ho provato io stesso), ma richiede gli utenti della vostra biblioteca dover costruire le loro APK manualmente tramite aapt.

Il problema è questo: il vaso si esporta contiene il file di classe R che contiene gli ID delle risorse della biblioteca. Quindi, qualsiasi applicazione può accedere a questi ID, semplicemente collegando il vostro JAR. Tuttavia, questo non è sufficiente, perché per impostazione predefinita, solo le risorse in res / cartella del app sono in bundle con l'APK. Quindi, è necessario creare l'APK da soli, usando aapt, dicendogli di includere anche tutte le risorse dalla libreria. Controllare l'aiuto strumento aapt per ulteriori informazioni.

Dal momento che questo implica che gli utenti della vostra biblioteca devono introdurre un processo di generazione manuale (o almeno modificarlo), si fa per una scarsa esperienza.

Altri suggerimenti

Potrebbe essere in ritardo per rispondere, ma ha trovato questa che è interessante. La creazione di un Progetto Biblioteche

  

Un progetto di libreria Android è un   progetto di sviluppo che detiene condiviso   il codice sorgente di Android e di risorse.   Altri progetti di applicazione Android può   riferimento al progetto di biblioteca e, in   Il tempo di costruzione, includere il suo compilato   fonti in loro file .apk. multiplo   progetti applicativi possono fare riferimento allo   stesso progetto biblioteca e ogni singolo   progetto di applicazione può fare riferimento   più progetti di libreria.

     

Se hai il codice sorgente e le risorse   che sono comuni a più   progetti di applicazione, è possibile spostare   loro di un progetto di libreria in modo che   è più facile da mantenere in tutta   applicazioni e versioni. qui ci sono   alcuni scenari comuni in cui si   potrebbe fare uso di progetti di libreria:

  

E 'possibile creare un costume   biblioteca di Android (con la propria   risorse di layout) per l'utilizzo in tutta   diverse applicazioni di Android?

No. JAR non possono avere risorse. È possibile condividere il codice in questo modo, ma le risorse devono risiedere nelle applicazioni riutilizzando i vasi.

  

Anche riferimento a stili semplici da   il file android.jar come   android.attr.listSeparatorTextViewStyle   non ha funzionato.

Assicurarsi che si sta collegando il vostro JAR contro android.jar. Si possono vedere molti esempi di questo nei componenti CWAC sulla mia github .

E 'ancora vero con R21? Sono in grado di esportare un progetto di libreria in un file jar e utilizzato in altri progetti dei clienti con successo, sia il codice saggio e saggio File beni di accesso.

http://developer.android.com/tools/projects/index.html ha ancora la seguente dichiarazione, che non sembra più vero:

  

Non è possibile esportare un progetto di libreria a un file JAR Una libreria non può essere   distribuito come un file binario (ad esempio un file JAR). Questo sarà aggiunto   in una futura versione degli strumenti di SDK.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top