Libreria di archivi di Android (aar) vs barattolo standard

Ho letto alcuni articoli sulla nuova adozione di Gradle come sistema standard di creazione per applicazioni Android. Beh, proveniente dallo sviluppo Java standard, di solito dipendo i file jar per build il mio progetto. Tuttavia sembra che Android disponga anche di pacchetti aar , che sono equivalenti ai file dll in un sistema operativo Windows, come qui accennato:

Innanzitutto, è necessario rendersi conto che la piattaforma Android non consente le "librerie condivise" a livello di applicazione. Nelle piattaforms linguaggio di programmazione "tradizionali", C, C ++, Java, tu lo denomini, abbiamo questo meccanismo di condivisione di librerie di runtime. (Ad esempio, DLL su Windows, DSO su Unix, Jar su JVM, ecc.). Su Android, però, non puoi farlo, a less che tu non sia Google o un produttore di cellulari (vedere la nota a piè di pagina 1 di seguito). Come sviluppatore di applicazioni, questo può essere una limitazione fondamentale. I codici di "condivisione" o "riutilizzo", sia a tempo di costruzione che a tempo di esecuzione, sono una parte molto importnte della pratica dell'ingegneria del software. Questo è piuttosto difficile (non imansible, solo più difficile) su Android a causa della limitazione di cui sopra.

  • come get il colore di text di textview?
  • Come recuperare l'authentication e il token di Twitter e facebook attraverso le classi di Account Manager di Android
  • Progetto Android Navit in Eclipse
  • come faccio a creare un effetto di particelle cocos2d in cocos2d android 1?
  • android - applica il selettivoItemBackground in xml con supporto v7
  • NDK: collegamento statico di libm
  • Tuttavia, ho qualche dubbio intorno a questo concetto. Voglio dire, quando dovrebbe essere interessato uno sviluppatore includendo le dependencies nella sua applicazione? Sono queste dependencies strette ad una versione minima SDK?

    Ad esempio, in un progetto ho accesso a una port COM, che utilizzi le librerie .so per la libreria precompilata di NDK . Devo creare un aar se voglio condividere questa utilità?

    3 Solutions collect form web for “Libreria di archivi di Android (aar) vs barattolo standard”

    AAR file AAR sono più simili a Jar s che a Dll s per la ragione seguente:

    Dll possono essere condivisi tra applicazioni in cui AAR e vasetti vengono confezionati con l'applicazione.

    AAR s vs Jar s:

    La differenza principale tra un Jar e un AAR è che AAR include risorse come i layouts, drawables ecc. Questo rende molto più semplice creare componenti visuali autonomi. Ad esempio se si dispone di più applicazioni che utilizzano la stessa schermata di accesso, con Jar s è ansible condividere le classi, ma non il layout, gli stili, ecc., Dovresti ancora duplicarli. Con AAR s tutto è in bundle in un pacchetto ordinato.

    In conclusione, gli AAR sono un grande passo nella giusta direzione.

    Nota:
    Tentativi simili sono stati fatti con apk-lib s ma sono ormai obsoleti, poiché gli AAR sono molto migliori.

    L'affermazione " La differenza principale tra un Jar e un AAR è che gli AAR includono risorse come i layout, i drawables ecc. " Non corrisponde alla specifica del file JAR e quindi non è una verità. Secondo la specifica del file JAR :

    Il file JAR è un formato di file basato sul formato popolare di file ZIP e viene utilizzato per aggregare molti file in uno. Un file JAR è essenzialmente un file zip che contiene una directory META-INF opzionale.

    Come potete vedere, non esiste alcuna limitazione di contenuto che vieta, tra cui risorse, come layout, disegni ecc., In un file JAR. Per ulteriori dettagli vedere l'articolo 5.3 "Creazione e caricamento" della Specificazione Java® Virtual Machine.

    Così sulla domanda Biblioteca di Archiviazione Android (aar) vs barattolo standard. La risposta dipende da quale strumento di generazione stai utilizzando.

    Se utilizzi Android Studio come strumento di creazione (come un organizzatore di progetti), sarai sicuramente meglio utilizzare i file * .ar per condividere le risorse incapsulate tra i progetti Android. Il formato di file AAR è parte della creazione di Android Studio e, come commentato negli altri commenti qui, la sua interface utente support il formato per le librerie Android.

    Ma ad exception di Android Studio il resto del mondo non sa cosa sia quel file aar (artefatto). Ad esempio, se la tua build di Android è basata su Maven, il file preferito per la condivisione di risorse sarà jar poiché questo è l'arte artificiale di progetto Maven java e non esiste alcuna limitazione a che cosa inserire nel file jar standard. Inoltre, esiste un modo per spiegare a Maven qualsiasi formato di file, includendo anche il miglioramento del ciclo di vita con un nuovo componente. Un esempio semplice è disponibile qui Come creare un nuovo tipo di imballaggio per Maven?

    La citazione nella domanda non ha nulla di comune rispetto alla realtà attuale. Naturalmente è ansible utilizzare librerie esterne in Android e ci sono molte librerie disponibili. Forse volevano dire che each applicazione deve mettere in bundle tutte le biblioteche di cui ha bisogno, ma riutilizzare la biblioteca al tempo di compilazione (collegamento statico) non è veramente un problema.

    .aar differisce da .jar non più di .jar differisce da .zip . Essa ha determinati concetti su quale tipo di contenuto dovrebbe essere previsto lì, ma entrambi .jar e .aar spesso contengono le classi compilate e le risorse. .aar solo specifica che la libreria è Android specifica e ha una struttura prevista, ragionevole per tali librerie (beh, .jar ha anche una certa struttura prevista).

    La vista che è stata supportta solo da Android è anche deprecata. Queste librerie possono essere distribuite a Maven Central e gli strumenti come gradle possono riferirli usando il suffisso @ar, ad esempio:

     dependencies { compile ('io.github.andviane:uncover:2.0.1@aar') .. } 

    per fare riferimento a questa distribuzione centrale di Maven.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.