Viețile noastre ca dezvoltatori Android ar fi mult mai greu dacă nu pentru toate acele biblioteci terțe acolo, pe care le place să le includem în proiectele noastre. În acest tutorial, veți învăța cum să redați comunității de dezvoltatori prin crearea și publicarea propriilor biblioteci Android, pe care oamenii le pot adăuga și utiliza fără efort în proiectele lor.
Dacă biblioteca dvs. va fi alcătuită numai din clase Java, ambalarea ca JAR și distribuirea acestuia folosind o gazdă de fișiere este probabil cea mai rapidă și mai ușoară modalitate de ao împărtăși. Dacă ați fi creat-o din consola, ar fi suficientă următoarea comandă:
bash jar cvf mylibrary.jar Class1.class Class2.class ... ClassN.class
Totuși, acest tutorial vă arată cum să lucrați cu biblioteci mai complexe care conțin nu numai clase Java, ci și diverse tipuri de fișiere și resurse XML. Aceste biblioteci sunt create ca module de bibliotecă Android și sunt de obicei ambalate ca AAR fișiere.
Să creați o bibliotecă simplă Android care oferă un personalizat Vedere
pentru dezvoltatorii care o folosesc.
Pentru a începe, adăugați un nou modul Android la proiectul dvs. selectând Nou> Modul nou de la Fişier meniul. Veți fi afișat următorul ecran, care oferă o mulțime de opțiuni:
Selectați Android Library și apăsați Următor →. În formularul care urmează, introduceți un nume pentru bibliotecă și apăsați Următor →. O să chem această bibliotecă mylittlelibrary.
În ultimul ecran, selectați Adăugați nicio activitate și apăsați finalizarea.
Proiectul dvs. va avea acum două module, una pentru aplicație și una pentru bibliotecă. Iată cum arată structura sa:
Creați un nou layout XML făcând clic dreapta pe res folderul modulului dvs. de bibliotecă și selectarea Nou> XML> Fișier XML Layout. Numeste my_view.xml.
Pentru a păstra acest tutorial simplu, vom crea un obicei Vedere
care are două TextView
widget-uri în interiorul unui LinearLayout
. După adăugarea unui text la TextView
widget-uri, fișierul XML de aspect ar trebui să arate astfel:
„xml
"
Creați o nouă clasă Java și denumiți-o MyView.java. Asigurați-vă că ați pus acest fișier în src directorul modulului bibliotecii - nu modulul de aplicație.
Pentru a face ca această clasă să se comporte ca a Vedere
, faceți o subclasă a LinearLayout
clasă. Android Studio vă va solicita să adăugați câțiva constructori în clasă. După adăugarea lor, noua clasă ar trebui să arate astfel:
"clasa publica java MyView extinde LinearLayout
public MyView (Context context) super (context); public MyView (Context context, AttributeSet attrs) super (context, attrs);
“
După cum puteți vedea, acum avem doi constructori. Pentru a evita adăugarea codului de inițializare fiecărui constructor, apelați o metodă numită inițializa de la fiecare constructor. Adăugați următorul cod la fiecare constructor:
java initialize (context);
În inițializa
metoda, apel umfla
pentru a asocia aspectul creat în etapa anterioară cu clasa.
java private void initialize (context context) inflate (context, R.layout.my_view, this);
Acum că biblioteca este gata, să o folosim în aplicaţia modulul aceluiași proiect pentru a vă asigura că nu există probleme. Pentru a face acest lucru, adăugați-l ca pe compila
dependența în build.gradle fișierul modulului de aplicație:
Proiectul de compilare groovy (": mylittlelibrary")
Creați o nouă clasă Java, Activitate principala, în interiorul modulului de aplicație. Faceți-o o subclasă a Activitate
clasa și suprascrie onCreate
metodă.
"clasa publica java MainActivity extinde Activitatea
@Override protejate void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); "
În interiorul onCreate
, creați o instanță a vizualizării personalizate folosind constructorul său. Treceți-l la setContentView
astfel încât să umple tot spațiul de pe ecran Activitate
:
"java @Override protejat void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState);
Vezi v = MyView nou (aceasta); setContentView (v);
“
Ta Activitate
este acum gata. După ce le adăugați la manifestul de aplicații, construiți proiectul și implementați aplicația pe un dispozitiv Android. Ar trebui să puteți vizualiza vizualizarea personalizată atunci când începe aplicația.
Bintray este o platformă populară pe care o puteți utiliza pentru a publica biblioteci Android. Este gratuit și ușor de utilizat.
Începeți prin a crea un cont pe Bintray. După ce vă conectați la cont, veți vedea că dețineți deja șase depozite. Puteți utiliza una dintre ele sau puteți crea un depozit nou. Pentru acest tutorial, voi folosi repozitoriul numit Maven, care este un depozit Maven.
Accesați pagina de profil și faceți clic pe Editați | × buton. În pagina următoare, faceți clic pe Cheia API pentru a vizualiza cheia API.
Notați cheia, deoarece veți avea nevoie de ea pentru a vă autentifica atunci când utilizați pluginul Bintray.
Pentru a interacționa cu Bintray în Android Studio, ar trebui să includeți pluginul Bintray în dependențe
din proiectul dvs. build.gradle fişier.
groovy clasă de clasă "com.jfrog.bintray.gradle: gradle-bintray-plugin: 1.2 '
Deoarece veți încărca biblioteca într-un depozit Maven, ar trebui să adăugați și pluginul Maven după cum se arată mai jos.
groovy classpath "com.github.dcendents: android-maven-gradle-plugin: 1.3"
Deschide build.gradle fișierul modulului dvs. de bibliotecă și adăugați următorul cod pentru a aplica pluginurile pe care le-am adăugat în pasul anterior.
groovy apply plugin: 'com.jfrog.bintray' aplica plugin: 'com.github.dcendents.android-maven'
Pluginul Bintray va căuta un fișier POM când va încărca biblioteca. Chiar dacă pluginul Maven o generează pentru tine, trebuie să specificați valoarea lui groupid
eticheta și valoarea versiune
etichetați-vă. Pentru a face acest lucru, utilizați grup
și versiune
variabilele din fișierul dvs. de grădină.
groovy group = 'com.github.hathibelagal.librarytutorial' // Schimba acest lucru pentru a se potrivi cu numele pachetului version = '1.0.1' // Schimba acest lucru pentru a se potrivi numarului de versiune
Dacă sunteți familiarizat cu Maven și vă întrebați de ce nu am specificat valoarea lui artifactId
tag, aceasta se datorează faptului că pluginul Maven va utiliza, în mod implicit, numele bibliotecii dvs. ca artifactId
.
Pentru a vă conforma standardelor Maven, biblioteca dvs. ar trebui să aibă, de asemenea, un fișier JAR care conține fișierele sursă ale bibliotecii. Pentru a genera fișierul JAR, creați un nou Borcan
sarcină, generateSourcesJar, și specificați locația fișierelor sursă utilizând din
funcţie.
sarcina groovy generateSourcesJar (type: Jar) din surse de clasificator android.sourceSets.main.java.srcDirs '
De asemenea, este recomandat ca biblioteca dvs. să aibă un fișier JAR care să conțină Javadocs. Deoarece în prezent nu aveți niciun Javadocs, creați un nou javadoc
sarcină, generateJavadocs, pentru a le genera. Folosește sursă
pentru a specifica locația fișierelor sursă. De asemenea, trebuie să actualizați CLASSPATH
astfel încât sarcina să poată găsi clase care aparțin SDK-ului Android. Puteți face acest lucru prin adăugarea valorii returnate a android.getBootClasspath
metodă pentru aceasta.
groovy sarcină generateJavadocs (tip: Javadoc) source = android.sourceSets.main.java.srcDirs classpath + = project.files (android.getBootClasspath () .join (File.pathSeparator)
În continuare, pentru a genera un JAR de la Javadocs, creați un Borcan
sarcină, generateJavadocsJar, și treceți destinationDir
proprietatea generateJavadocs
la ei din
funcţie. Noua dvs. sarcină ar trebui să arate astfel:
sarcina groovy generateJavadocsJar (tip: Jar) de la generateJavadocs.destinationDir clasificator 'javadoc'
Pentru a vă asigura că generateJavadocsJar
sarcina începe numai atunci când generateJavadocs
sarcina a finalizat, adăugați următorul fragment de cod, care utilizează depinde de
metodă de comandă a sarcinilor:
groovy generateJavadocsJar.dependsOn generateJavadocs
Pentru a include fișierele de sursă și Javadoc JAR în lista de artefacte care vor fi încărcate în depozitul Maven, trebuie să adăugați numele sarcinilor acestora într-o configurație
denumit arhive. Pentru a face acest lucru, utilizați următorul fragment de cod:
groovy artefacte arhive generateJavaDocsJar arhive generateSourcesJar
Acum este timpul să executăm sarcinile pe care le-am creat în pașii anteriori. Deschide Proiecte Grad fereastră și căutați o sarcină numită instalare.
Faceți dublu clic pe acesta pentru a executa sarcinile asociate modulului bibliotecă. Odată ce rulează, veți avea tot ce aveți nevoie pentru a vă publica biblioteca, un fișier POM valabil, un fișier AAR, un JAR de surse și o JAR Javadocs.
Pentru a configura pluginul, trebuie să utilizați bintray
închidere în fișierul Gradle. În primul rând, autentificați-vă utilizând utilizator
și cheie
variabile, corespunzătoare numărului dvs. de utilizator Bintray și cheii API.
Pe Bintray, biblioteca dvs. va locui în interiorul unui Bintray pachet. Ar trebui să oferiți detalii despre acesta utilizând numele intuitiv repo
, Nume
, licențe
, și vcsUrl
parametrii PKG
închidere. Dacă pachetul nu există, acesta va fi creat automat pentru dvs..
Când încărcați fișierele în Bintray, acestea vor fi asociate cu o versiune a pachetului Bintray. Prin urmare, PKG
trebuie să conțină a versiune
închidere al cărei Nume
proprietatea este setată la un nume unic. Opțional, puteți oferi și o descriere, data lansării și o etichetă Git utilizând desc
, eliberată
, și vcsTag
parametrii.
În cele din urmă, pentru a specifica fișierele care ar trebui încărcate, setați valoarea configurație
parametru pentru arhive.
Aceasta este o configurație de eșantion:
"groovy bintray user = 'test-user' cheie = '01234567890abcdef01234567890abcdef' pkg repo = 'maven' nume = 'com.github.hathibelagal.mylittlelibrary'
versiunea name = '1.0.1-tuts' desc = 'Încercarea mea încărcată' eliberat = noua dată () vcsTag = '1.0.1' licenses = ['Apache-2.0'] vcsUrl = 'https: // github. com / hathibelagal / LibraryTutorial.git 'websiteUrl =' https://github.com/hathibelagal/LibraryTutorial ' configurații = [' arhive ']
Deschide Proiecte Grad fereastră din nou și căutați bintrayUpload sarcină. Faceți dublu clic pe acesta pentru a începe încărcarea fișierelor.
După finalizarea sarcinii, deschideți un browser pentru a vizita pagina cu detalii a pachetului Bintray. Veți vedea o notificare care spune că aveți patru fișiere nepublicate. Pentru a publica aceste fișiere, faceți clic pe Publica legătură.
Biblioteca dvs. este acum disponibilă ca pachet Bintray. Odată ce partajați adresa URL a depozitului dvs. Maven, împreună cu ID-ul grupului, ID-ul de artefacte și numărul versiunii, orice dezvoltator poate accesa biblioteca dvs. De exemplu, pentru a utiliza biblioteca pe care am creat-o, dezvoltatorii ar trebui să includă următorul fragment de cod:
"depozite groovy maven url 'https://dl.bintray.com/eruzza/maven'
dependențele compile 'com.github.hathibelagal.librarytutorial: mylittlelibrary: 1.0.1@aar' "
Rețineți că dezvoltatorul trebuie să includă explicit magazia dvs. în lista de arhive
înainte de a adăuga biblioteca ca a compila
dependenţă.
În mod implicit, aplicația Android Studio caută biblioteci într-un depozit numit JCenter. Dacă includeți biblioteca dvs. în depozitul JCenter, dezvoltatorii nu vor trebui să adauge nimic pentru ei arhive
listă.
Pentru a adăuga biblioteca la JCenter, deschideți un browser și accesați pagina cu detalii a pachetului Bintray. Faceți clic pe butonul etichetat Adăugați la JCenter.
Veți fi apoi duși la o pagină care vă permite să compuneți un mesaj. Puteți utiliza funcția Comentarii câmp pentru a menționa opțional orice detalii despre bibliotecă.
Apasă pe Trimite pentru a începe procesul de revizuire al Bintray. În decurs de o zi sau două, cei de la Bintray vor lega biblioteca dvs. la magazia JCenter și veți putea vedea linkul către JCenter pe pagina cu detalii a pachetului.
Orice dezvoltator poate folosi acum biblioteca dvs. fără a schimba lista de arhive
.
În acest tutorial, ați învățat cum să creați un modul simplu de bibliotecă Android și să-l publicați atât în magazia dvs. Maven, cât și în depozitul JCenter. Pe parcurs, ați învățat, de asemenea, cum să creați și să executați diferite tipuri de sarcini de grădină.
Pentru a afla mai multe despre Bintray, vizitați manualul de utilizare al lui Bintray.