Come creare un progetto di libreria in Android Studio e un progetto di applicazione che utilizza il progetto di libreria

Sono nuovo del sistema di sviluppo gradle e IntelliJ.

Quindi, come posso creare un progetto di libreria Android (es. Com.myapp.lib1) e il progetto dell’applicazione (es. Com.myapp.app) e rendere il sistema di compilazione include com.myapp.lib1 sul progetto di applicazione?

Sono andato al progetto Struttura -> Moduli -> Il mio progetto App e aggiunto una dipendenza al progetto lib. IntelliJ ora può riconoscere le classi dal progetto lib quando viene utilizzato nel progetto dell’app, ma quando eseguo il progetto dell’app, ci sono errori come:

Gradle: error: package com.myapp.lib1 does not exist 

Per creare una libreria:

File> Nuovo modulo

seleziona Libreria Android

lib

Per usare la libreria aggiungila come una dipendenza:

File> Struttura del progetto> Moduli> Dipendenze

dep

Quindi aggiungi il modulo (libreria Android) come dipendenza del modulo.

aggiungi modulo

Esegui il tuo progetto. Funzionerà.

Mi chiedo perché non ci sia un esempio di progetto jar stand alone.

In eclipse, selezioniamo semplicemente la casella “Is Library” nella finestra di dialogo delle impostazioni del progetto.
In Android Studio, ho seguito questa procedura e ho ottenuto un file jar.

  1. Crea un progetto.

  2. apri il file nel menu di progetto sinistro. (app / build.gradle): Scritture Gradle> build.gradle (Modulo: XXX)

  3. cambia una riga: apply plugin: 'com.android.application' -> 'apply plugin: com.android.library'

  4. rimuovere applicationId nel file: applicationId "com.mycompany.testproject"

  5. build project: Build> Rebuild Project

  6. allora puoi ottenere il file aar: app> build> outputs> cartella aar

  7. cambia il nome dell’estensione del file in zip

  8. decomprimere, e puoi vedere classs.jar nella cartella. rinominalo e usalo!

Ad ogni modo, non so perché Google rende la creazione di jar così problematica in Android Studio.

Il metodo Gradle Plugin di Google consigliato per configurare i tuoi file gradle per creare più progetti presenta alcune carenze Se hai più progetti che dipendono da un progetto di libreria, questo post spiega brevemente la configurazione consigliata di Google, le sue carenze e consiglia un modo diverso per configurare i tuoi file gradle supporta le impostazioni multi-progetto in Android Studio:

Una configurazione multiprogetto alternativa per Android Studio

Un modo diverso:

Si scopre che esiste un modo migliore per gestire più progetti in Android Studio. Il trucco è creare progetti Android Studio separati per le tue librerie e dire a gradle che il modulo per la libreria da cui dipende la tua app si trova nella directory del progetto della libreria. Se si desidera utilizzare questo metodo con la struttura del progetto che ho descritto sopra, si dovrebbe fare quanto segue:

  1. Creare un progetto Android Studio per la libreria StickyListHeaders
  2. Crea un progetto Android Studio per App2
  3. Crea un progetto Android Studio per App1
  4. Configura App1 e App2 per creare i moduli nel progetto StickyListHeaders.

Il 4 ° passo è la parte difficile, quindi questo è l’unico passo che descriverò in dettaglio. È ansible fare riferimento a moduli esterni alla directory del progetto aggiungendo un’istruzione di progetto nel proprio file settings.gradle e impostando la proprietà projectDir sull’object ProjectDescriptor restituito da tale istruzione di progetto:

inserisci la descrizione dell'immagine qui

Il codice deve essere inserito in settings.gradle :

 include ':library1' project(':library1').projectDir = new File('../StickyListHeader/library1') 

Se l’hai fatto correttamente, noterai che i moduli referenziati dal tuo progetto verranno visualizzati nel navigatore del progetto, anche se tali moduli sono esterni alla directory del progetto:

inserisci la descrizione dell'immagine qui

Ciò consente di lavorare contemporaneamente sul codice della biblioteca e sul codice dell’app. L’integrazione del controllo della versione funziona egregiamente quando si fa riferimento esternamente ai moduli in questo modo. Puoi commettere e inviare le tue modifiche al codice della libreria proprio come puoi commettere e apportare modifiche al codice della tua app.

Questo modo di configurare più progetti evita le difficoltà che affliggono la configurazione consigliata di Google. Poiché facciamo riferimento a un modulo che si trova all’esterno della directory del progetto, non è necessario creare copie aggiuntive del modulo della libreria per ogni app che dipende da esso e possiamo eseguire la versione delle nostre librerie senza alcun tipo di assurdità del sottomodulo git.

Sfortunatamente, questo altro modo di configurare più progetti è molto difficile da trovare. Ovviamente, non è qualcosa che capirai guardando la guida di Google e, a questo punto, non c’è modo di configurare i tuoi progetti in questo modo utilizzando l’interfaccia utente di Android Studio.

Dai un’occhiata a questo link sulle configurazioni multi-progetto .

Alcune cose da sottolineare, assicurati di avere il tuo settings.gradle aggiornato per fare riferimento sia all’app che ai moduli della libreria.

settings.gradle: include ':app', ':libraries:lib1', ':libraries:lib2'

Assicurati inoltre che build.gradle dell’app abbia il seguente:

 dependencies { compile project(':libraries:lib1') } 

Dovresti avere la seguente struttura:

  MyProject/ | settings.gradle + app/ | build.gradle + libraries/ + lib1/ | build.gradle + lib2/ | build.gradle 

Build.gradle dell’app deve utilizzare il plugin com.android.application mentre build.gradle di qualsiasi libreria deve utilizzare il plug-in com.android.library .

L’IDE di Android Studio dovrebbe essere aggiornato se è ansible creare dalla riga di comando con questa configurazione.

Per Intellij IDEA (e Android Studio) ogni libreria è un modulo. Pensa a un modulo in Android Studio come equivalente al progetto in Eclipse. Il progetto in Android Studio è una raccolta di moduli. I moduli possono essere applicazioni eseguibili o moduli di libreria.

Quindi, per aggiungere un nuovo progetto di libreria Android devi creare un modulo di tipo “Libreria Android”. Quindi aggiungi questo modulo di libreria all’elenco delle dipendenze del tuo modulo principale (modulo Application).

Il modo più semplice per me di creare e riutilizzare un progetto di libreria:

  1. Su un file > new > new module progetto aperto file > new > new module (e rispondi alle domande dell’interfaccia utente)

inserisci la descrizione dell'immagine qui

  1. controlla / o aggiungi se nel file settings.gradle : include ':myLibrary'
  2. controlla / o aggiungi se nel file build.gradle :

    dependencies { ... compile project(':myLibrary') }

  3. Per riutilizzare questo modulo di libreria in un altro progetto, copiare la sua cartella nel progetto anziché il passaggio 1 e seguire i passaggi 2 e 3.

È inoltre ansible creare un nuovo progetto di applicazione di studio È ansible modificare facilmente un modulo di applicazione esistente in un modulo di libreria modificando l’assegnazione del plugin nel file build.gradle su com.android.library.

 apply plugin: 'com.android.application' android {...} 

a

 apply plugin: 'com.android.library' android {...} 

di più qui

Puoi aggiungere un nuovo modulo a qualsiasi applicazione, come dice Blundell nella sua risposta e poi farne riferimento da qualsiasi altra applicazione.

Se si desidera spostare il modulo in qualsiasi punto del computer, spostare semplicemente la cartella del modulo (i moduli sono completamente indipendenti), quindi sarà necessario fare riferimento al modulo.

Per fare riferimento a questo modulo dovresti:

  • Sul file build.gradle della tua app aggiungi:

     dependencies { ... compile project(':myandroidlib') } 
  • Sul file settings.gradle aggiungere quanto segue:

      include ':app', ':myandroidlib' project(':myandroidlib').projectDir = new File(PATH_TO_YOUR_MODULE) 

Non dimenticare di usare il apply plugin: 'com.android.library' nel tuo build.gradle invece di applicare plugin: 'com.android.application'

Ho avuto la stessa domanda e l’ho risolta nel modo seguente:

Situazione di partenza :

 FrigoShare (root) |-Modules: frigoshare, frigoShare-backend 

Target : desidera aggiungere un modulo denominato dataformats

  1. Aggiungi un nuovo modulo (es: Java Library )
  2. Assicurati che il tuo settings.gradle assomigli a questo (normalmente automaticamente):

    include ':frigoshare', ':frigoShare-backend', ':dataformats'

  3. Assicurati ( manualmente ) che i file build.gradle dei moduli che devono utilizzare la tua libreria abbiano la seguente dipendenza:

    dependencies { ... compile project(':dataformats') }

Scopo: libreria Android in un singolo luogo – Condividi su più progetti http://raevilman.blogspot.com/2016/02/android-library-project-using-android.html

Modo di documentazione

Questo è il metodo consigliato come indicato nella documentazione di Android Studio.

Crea un modulo di libreria

Creare un nuovo progetto per creare la libreria. Fare clic su File> Nuovo> Nuovo modulo> Libreria Android> Avanti> (scegliere il nome)> Fine . Quindi aggiungi le classi e le risorse che desideri alla tua biblioteca.

Quando si genera il modulo, verrà creato un file AAR. Puoi trovarlo in project-name/module-name/build/outputs/aar/ .

Aggiungi la tua libreria come dipendenza

Puoi aggiungere la tua libreria come dipendenza a un altro progetto come questo:

  1. Importa il file AAR della libreria con File> Nuovo modulo> Importa pacchetto .JAR / .AAR> Avanti> (scegli percorso file)> Fine . (Non importare il codice, altrimenti sarà modificabile in troppi punti.)
  2. Nel file settings.gradle, assicurati che il nome della tua libreria sia presente.

     include ':app', ':my-library-module' 
  3. Nel file build.gradle dell’app, aggiungi la riga di compilazione alla sezione delle dipendenze:

     dependencies { compile project(":my-library-module") } 
  4. Ti verrà richiesto di sincronizzare il tuo progetto con gradle. Fallo.

Questo è tutto. Dovresti essere in grado di usare la tua biblioteca ora.

Gli appunti

Se si desidera rendere la libreria facilmente disponibile per un pubblico più ampio, prendere in considerazione l’utilizzo di JitPac o JCenter .

Come commento di censura sopra, provo a cercare su Gradle Build Varians e ho trovato questo link: http://code.tutsplus.com/tutorials/using-gradle-build-variants–cms-25005 Questa è una soluzione molto semplice. Questo è quello che ho fatto: – In build.gradle:

 flavorDimensions "version" productFlavors { trial{ applicationId "org.de_studio.recentappswitcher.trial" flavorDimension "version" } pro{ applicationId "org.de_studio.recentappswitcher.pro" flavorDimension "version" } } 

Poi ho ancora 2 versioni della mia app: pro e trial con 2 differenti packageName che sono 2 applicationId nel codice sopra così posso caricare entrambi su Google Play. Ho ancora solo il codice nella sezione “main” e uso getpackageName per passare alla versione. Basta andare al link che ho dato per i dettagli.

Ci sono due modi più semplici se uno non funziona, per favore prova l’altro.

  1. Aggiungere la dipendenza della libreria all’interno della dipendenza all’interno del file build.gradle della libreria ur usando e incollare la propria libreria in Librerie esterne.

O

  1. Basta andare alla cartella libs all’interno della cartella app e incollare tutti i file .jar es. Libreria lì Ora il trucco qui è che ora vai dentro il file settings.gradle ora aggiungi questa riga “include”: app: libs “” dopo “include”: app “” Funzionerà sicuramente ……….. 🙂

Nel mio caso, utilizzo di MAC OS X 10.11 e Android 2.0 e facendo esattamente ciò che Aqib Mumtaz ha spiegato.

Ma, ogni volta, ho ricevuto questo messaggio: ” Si è verificato un problema durante la configurazione del progetto: app”.> Imansible valutare il modulo xxx: configurazione con nome ‘default’ non trovato . ”

Ho scoperto che la ragione di questo messaggio è che Android 2.0 non consente di creare direttamente una libreria. Quindi, ho deciso prima di creare un progetto app e quindi di modificare il file build.gradle per trasformarlo come una libreria.

Questa soluzione non funziona, perché un progetto di libreria è molto diverso da un progetto di app.

Quindi, ho risolto il mio problema in questo modo:

  • Per prima cosa crea un’app standard (se necessario);
  • Quindi scegli “File / Crea modulo”
  • Vai al Finder e sposta la cartella del modulo appena creata nella tua directory framework

Quindi continuare con la soluzione proposta da Aqib Mumtaz.

Di conseguenza, l’origine della tua libreria sarà condivisa senza dover duplicare ogni volta i file sorgente (è stata un’eresia per me!)

Sperando che questo ti aiuti.