Il punto chiave è generare un .aar.
Iniziamo con: Click File > New > New Module.
In the Create New Module window that appears, click Android Library, then click Next.
Give your library a name and select a minimum SDK version for the code in the library, then click Finish.
L'ho chiamata Mia Libreria e l'SDK minimo è 17.
E' stata fatta la sincronizzazione di Gradle.
Il cambiamento della voce apply plugin sul modulo Gradle della libreria è già stato cambiato da c.antonello.studiojar3 a com.android.library.
Ora dovrei salvare il file.
Come?
Boh... faccio "Save All"...
Ma il passo completo è Save the file and click Tools > Android > Sync Project with Gradle Files. Vado a cliccare quanto dovuto...
Bene.
Ora se io clicco "build APK" dovrebbe generarmi un AAR...
Lo deduco da questo: When you want to build the AAR file, select the library module in the Project window and then click Build > Build APK
Proviamo...
Fatto, e vediamo se si è generato un AAR...
Non funziona.
La procedura che funziona per creare l'aar è invece
View -> Tool Windows -> GradleSulla finestra di gradle che si apre a destra si va su mialibreria -> Tasks -> assemble, e si generano due aar: una versione debug e una versione release.
Ora il problema è come usare queste librerie.
Ora, dato che la libreria fa parte di questo progetto, posso fare direttamente questo:
Make sure the library is listed at the top of your settings.gradle file, as shown here for a library named "my-library-module":
include ':app', ':my-library-module'
include ':app', ':mialibreria'Confermato!
Open the app module's build.gradle file and add a new line to the dependencies block as shown in the following snippet:
dependencies { compile project(":my-library-module") }Vediamo:
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
compile project(":mialibreria")
}
Vediamo se sincronizza...Ha sincronizzato.
Ora, nella mia libreria ho messo un codice estremamente fesso per fare la prova:
public class Classe { public Classe(){} public void Scrivi(){ System.out.println("Ciao"); } }Vediamo se si riesce a inserire la funzione.
No.
Anziché modificare manualmente il file app Gradle (parte che ho scritto in rosso) si può procedere con File -> Project Structure
Quindi si seleziona la scheda Dependencies e si aggiunge con il + il riferimento alla libreria.
Il file Gradle app si modifica così:
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
implementation project(':mialibreria')
}
compile è deprecato, l'uso più moderno è di implementation.