Lage og publisere en Android Library

Creating og Publisering av en Android Bibliotek
25
Del
19
Del
Dette Cyber ​​mandag Envato Tuts + Kursene vil bli redusert til bare $ 3. Ikke gå glipp av.

Innledning

Våre liv som Android-utviklere vil være mye vanskeligere om ikke for alle disse tredjeparts biblioteker der ute som vi elsker å ta med i våre prosjekter. I denne opplæringen vil du lære hvordan du kan gi tilbake til utbygger samfunnet ved å opprette og publisere dine egne Android-biblioteker, som folk kan enkelt legge til og bruke i sine prosjekter.

1. Opprette en Android Bibliotek

Hvis biblioteket skal være sammensatt av bare Java-klasser, emballasje det som et JAR og distribuere den ved hjelp av en fil vert er kanskje den raskeste og enkleste måten å dele den. Hvis du skulle lage den fra konsollen, vil følgende kommando nok:
jar cvf mylibrary.jar Class1.class Class2.class ... ClassN.class

Denne opplæringen derimot, viser deg hvordan du arbeider med mer komplekse biblioteker som inneholder ikke bare Java-klasser, men også ulike typer XML-filer og ressurser. Slike bibliotekene er opprettet som Android bibliotek moduler og er vanligvis pakket som AAR filer

La oss lage en enkel Android bibliotek som tilbyr en tilpasset Vis til utviklere som bruker det

Trinn 1:.. Legg en New Module

For å begynne, legge til en ny Android-modul til prosjektet ved å velge ny > Ny modul fra Fil-menyen. Du vil bli vist følgende skjermbilde, som tilbyr mange muligheter:

Velg Android Bibliotek og trykk Neste. I skjemaet som følger, skriv inn et navn for biblioteket og trykk Neste. Jeg vil kalle dette biblioteket mylittlelibrary.

I den siste skjermen, velger du Legg ingen aktivitet, og trykk Fullfør.

Prosjektet vil nå ha to moduler, en for app og en for bibliotek. Her er hva dens struktur ser slik ut:

Trinn 2: Lag et oppsett

Opprett en ny layout XML ved å høyreklikke på res-mappen på biblioteket modulen og velge New > XML > Layout XML File. Name it my_view.xml.

For å holde denne opplæringen enkel, vi skal opprette en egendefinert visning som har to TextView widgets inne i en LinearLayout. Etter å legge litt tekst til TextView widgets, bør oppsettet XML-filen se slik ut:?
≪ xml version = "1.0" encoding = "UTF-8" > < LinearLayout xmlns: android = "http: //schemas.android.com/apk/res/android "android: layout_width =" match_parent "android: layout_height =" match_parent "android: orientering =" vertikal "android: padding =" 16dp "> < TextView android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: textAppearance =: android "android attr /textAppearanceLarge?": text = "Hei" /> < TextView android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: textAppearance =: android "android attr /textAppearanceMedium?": text = ". Dette er min egendefinert utsikten fra min lille bibliotek" /> < /LinearLayout >
Trinn 3: Lag en Java Class

Opprett en ny Java-klassen og gi den navnet MyView.java. Sørg for å sette denne filen i src katalogen på biblioteket modul ikke app-modulen.

For å gjøre denne klassen oppfører seg som et View, gjør det til en underklasse av LinearLayout klassen. Android Studio vil be deg om å legge noen konstruktører for klassen. Etter å legge dem, bør den nye klassen se slik ut:
public class MyView strekker LinearLayout {public MyView (Context kontekst) {super (sammenheng); } Public MyView (Context kontekst, AttributeSet attrs) {super (kontekst, attrs); }}

Som du kan se, har vi nå to konstruktører. For å unngå å legge initialisering kode til hver konstruktør, kaller en metode som heter initialize fra hver konstruktør. Legg til følgende kode i hver konstruktøren.
Initial (sammenheng);

I initialize metoden, kaller blåse å knytte oppsettet vi opprettet i forrige trinn med klassen
private void initialize (Context kontekst) {blåse (sammenheng R.layout.my_view, dette);}
2. Bruke Bibliotek Lokal

Nå som biblioteket er klar, la oss gjøre bruk av den i app-modulen av det samme prosjektet for å sikre at det er ingen problemer. For å gjøre dette, legg det som en kompilering avhengighet i build.gradle fil av app-modulen:
kompilere prosjektet (": mylittlelibrary")

Opprett en ny Java-klassen, MainActivity inne i app-modulen. . Gjør det til en underklasse av aktiviteten klassen og overstyre sin onCreate metode
public class MainActivity strekker Aktivitet {Override beskyttet void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); }}

Inne i onCreate metoden, opprette en forekomst av tilpasset visning ved hjelp av sin konstruktør. Gi det til setContentView metode slik at det fyller hele skjermen plassen av aktivitet:
Overrideprotected void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); Vis v = new MyView (denne); setContentView (v);}

Din aktivitet er nå klar. Etter å legge det til app manifest, bygge prosjektet og distribuere programmet ditt til en Android-enhet. Du bør være i stand til å se tilpasset visning når programmet starter.

3. Publisering biblioteket på Bintray

Bintray er en populær plattform du kan bruke til å publisere Android biblioteker. Det er gratis og enkelt å bruke.

Start med å opprette en konto på Bintray. Etter å logge på kontoen din, vil du se at du allerede eier seks repositories. Du kan enten bruke en av dem eller opprette et nytt depot. For denne opplæringen, vil jeg være bruker depotet kalt maven, som er en Maven repository.

Besøk din profilside og klikk på Rediger. På neste side, klikker du på API-nøkkel linken for å se din API-nøkkel.

Lag notat av nøkkelen, fordi du vil være behov det å autentisere deg selv når du bruker Bintray plugin.

Trinn 1: Legg Nødvendige Plugins

Hvis du vil kommunisere med Bintray i Android Studio, bør du inkludere Bintray plugin i avhengighetene av prosjektets build.gradle fil
klassebane 'com.jfrog.bintray.gradle.: gradle-bintray-plugin: 1,2 '

Fordi du skal laste opp biblioteket til en Maven repository, bør du også legge til Maven plugin som vist nedenfor
CLASSPATH "com.github.dcendents. android-maven-gradle -plugin: 1.3 "
Trinn 2:. Påfør Plugins

Åpne build.gradle filen på biblioteket modul og legge til følgende kode for å bruke plugins vi lagt i forrige trinn
gjelder plugin: 'com.jfrog.bintray'apply plugin:' com.github.dcendents.android-maven '
Trinn 3: Angi POM Detaljer

Bintray plugin vil se etter en POM filen når den laster opp biblioteket. Selv om Maven plugin genererer det for deg, bør du angi verdien av groupId tag og verdien av den versjonen tagge deg selv. For å gjøre dette, bruker gruppen og versjons variabler i gradle fil.
Gruppe = 'com.github.hathibelagal.librarytutorial' //Endre dette til å matche din pakke nameversion = '1.0.1' //Endre dette til å matche versjonsnummeret

Hvis du er kjent med Maven og du lurer på hvorfor vi ikke oppgi verdien av artifactId tag, er det fordi Maven plugin vil som standard bruke navnet på biblioteket som artifactId.

Trinn 4: Lag en Kilder JAR

For å samsvare med de Maven standarder, bør biblioteket også ha en JAR-fil som inneholder bibliotekets kildefilene. Å generere JAR-fil, opprette en ny Jar oppgave, generateSourcesJar, og angi plasseringen av kildefilene bruker fra
funksjon oppgave generateSourcesJar (type: Jar). {Fra android.sourceSets.main.java.srcDirs klassifikator ' kilder '}
Trinn 5: Lag en Javadoc JAR

Det anbefales også at biblioteket har et JAR-fil som inneholder sin Javadocs. Fordi du for øyeblikket ikke har noen Javadocs, opprette en ny Javadoc oppgave, generateJavadocs, for å generere dem. Bruk kilden variabel å angi plasseringen av kildefilene. Du bør også oppdatere CLASSPATH variabel slik at oppgaven kan finne klasser som tilhører Android SDK. Du kan gjøre dette ved å legge til returverdien av android.getBootClasspath metoden til det
oppgave generateJavadocs (type: Javadoc). {Source = android.sourceSets.main.java.srcDirs CLASSPATH + = project.files (android.getBootClasspath () .join (File.pathSeparator))}

Neste, for å generere et JAR fra Javadocs, opprette en Jar oppgave, generateJavadocsJar, og bestå destinationDir eiendom generateJavadocs til sin fra funksjon. Din nye oppgaven skal se slik ut:
oppgaven generateJavadocsJar (type: Jar) {fra generateJavadocs.destinationDir klassifikator 'javadoc'}

For å sikre at generateJavadocsJar oppgave kun starter når generateJavadocs oppgaven er ferdig, legger du til følgende kode snippet, som bruker dependson metode for å bestille oppgaver:
generateJavadocsJar.dependsOn generateJavadocs
Trinn 6: Ta den genererte JAR filer

For å inkludere kilden og Javadoc JAR-filer i listen over gjenstander, som vil bli lastet opp til Maven repository, bør du legge til navnene på sine oppgaver til en konfigurasjons kalt arkiver. For å gjøre dette, bruker du følgende kode:
gjenstander {arkiver generateJavaDocsJar arkiver generateSourcesJar}
Trinn 7: Kjør Oppgaver

Det er nå tid for å kjøre de oppgavene vi opprettet i forrige trinn. Åpne Gradle Prosjekter vinduet og søke etter en oppgave som heter installere.

Dobbeltklikk det å kjøre oppgavene knyttet til biblioteket modulen. Når det er ferdig med å kjøre, vil du ha alt du trenger for å publisere ditt bibliotek, en gyldig POM-fil, en AAR-fil, en kilder JAR, og en Javadocs JAR

Trinn 8:. Konfigurer Bintray Plugin

For å konfigurere plugin, bør du bruke bintray nedleggelsen i Gradle fil. Først autentisere deg selv ved hjelp av bruker- og viktige variabler, som tilsvarer din Bintray brukernavn og API-nøkkel hhv.

På Bintray, vil biblioteket ligge inne en Bintray pakke. Du bør gi detaljer om det å bruke de intuitivt navngitte repo, navn, lisenser og vcsUrl parametere for pkg nedleggelse. Hvis pakken ikke eksisterer, vil det bli opprettet automatisk for deg.

Når du laster opp filer til Bintray, vil de bli assosiert med en versjon av Bintray pakken. Derfor må pkg inneholde en versjon nedleggelse hvis navn eiendommen er satt til et unikt navn. Eventuelt kan du også gi en beskrivelse, utgivelsesdato, og Git tag bruker synkende, utgitt, og vcsTag parametere.

Til slutt, for å spesifisere hvilke filer som skal lastes opp, setter verdien av konfigurasjonsparameteren til . arkivene

Dette er et eksempel på oppsett:
bintray {user = 'test-user' key = '01234567890abcdef01234567890abcdef' pkg {repo = 'maven' name = 'com.github.hathibelagal.mylittlelibrary' versjon {name = '1.0.1-tuts' desc = 'Min test upload' utgitt = new Date () vcsTag = '1.0.1'} lisenser = ['Apache-2,0'] vcsUrl = 'http://github.com /hathibelagal/LibraryTutorial.git 'websiteUrl =' http://github.com/hathibelagal/LibraryTutorial '} konfigurasjoner = [' arkiver ']}
Trinn 9: Last opp filer Bruke Bintray Plugin

Åpne den Gradle Prosjekter vinduet igjen og søker etter bintrayUpload oppgaven. Dobbeltklikk på den for å begynne å laste opp filene.

Når oppgaven er fullført, åpner du en nettleser til å besøke din Bintray pakkens detaljer. Du vil se en melding som sier at du har fire upubliserte filer. For å publisere disse filene, klikker du Publiser link.

4. Bruke Library Fra Bintray

Biblioteket er nå tilgjengelig som en Bintray pakke. Når du dele nettadressen til Maven repository, sammen med gruppen ID, artefakt ID, og ​​versjonsnummer, kan alle utviklere tilgang til biblioteket. For eksempel, for å bruke biblioteket vi opprettet, vil utviklere må inneholde følgende kode:
repositories {maven {url 'http://dl.bintray.com/eruzza/maven'}} avhengig {kompilere 'com .github.hathibelagal.librarytutorial: mylittlelibrary: 1.0.1@aar '}

Vær oppmerksom på at utbygger må eksplisitt inkludere depotet i listen over repositories før du legger biblioteket som en compile avhengighet

5. . Legge biblioteket til JCenter

Som standard Android Studio søker etter bibliotekene i et depot som heter JCenter. Hvis du tar med ditt bibliotek i JCenter depotet, vil utviklere ikke trenger å legge noe til deres repositories listen.

Hvis du vil legge biblioteket til JCenter, åpne en nettleser og gå til Bintray pakkens detaljer. Klikk på knappen merket Legg til JCenter.

Du vil da bli tatt til en side som lar deg skrive en melding. Du kan bruke kommentarfeltet feltet til å eventuelt nevner noen detaljer om biblioteket.

Klikk på Send-knappen for å begynne Bintray gjennomgang prosess. Innen en dag eller to, vil folk på Bintray knytte biblioteket til JCenter depotet, og du vil være i stand til å se koblingen til JCenter på pakken din informasjonsside.

Enhver utbygger kan nå bruke biblioteket uten å endre listen over repositories.

Konklusjon

I denne opplæringen, lært deg hvordan du kan lage en enkel Android bibliotek modul og publisere den på både din egen Maven repository og til JCenter depotet. Underveis også lært deg hvordan du kan lage og gjennomføre ulike typer gradle oppgaver.

Hvis du vil vite mer om Bintray, besøk Bintray brukerhåndboken. Anmeldelser



Previous:
Next Page: