Een Android-bibliotheek maken en publiceren

Invoering

Ons leven als Android-ontwikkelaars zou een stuk moeilijker zijn, zo niet voor al die externe bibliotheken die we graag in onze projecten opnemen. In deze zelfstudie leert u hoe u kunt teruggeven aan de ontwikkelaarsgemeenschap door uw eigen Android-bibliotheken te maken en te publiceren, die mensen moeiteloos kunnen toevoegen en gebruiken in hun projecten..

1. Een Android-bibliotheek maken

Als uw bibliotheek alleen uit Java-klassen zal bestaan, is het verpakken ervan als JAR en distributie via een bestandshost misschien wel de snelste en gemakkelijkste manier om het te delen. Als u het via de console zou maken, zou de volgende opdracht volstaan:

bash jar cvf mylibrary.jar Class1.class Class2.class ... ClassN.class

In deze zelfstudie wordt echter uitgelegd hoe u kunt werken met complexere bibliotheken die niet alleen Java-klassen bevatten, maar ook verschillende typen XML-bestanden en bronnen. Dergelijke bibliotheken worden gemaakt als Android-bibliotheekmodules en worden meestal als zodanig verpakt AAR bestanden.

Laten we een eenvoudige Android-bibliotheek maken met een aangepast gebruik Uitzicht voor ontwikkelaars die het gebruiken.

Stap 1: voeg een nieuwe module toe

Voeg om te beginnen een nieuwe Android-module aan uw project toe door te selecteren Nieuw> Nieuwe module van de het dossier menu. U krijgt het volgende scherm te zien, dat veel keuzes biedt:

kiezen Android-bibliotheek en druk op volgende. Voer in het onderstaande formulier een naam in voor uw bibliotheek en druk op volgende. Ik zal deze bibliotheek bellen mylittlelibrary.

Selecteer in het laatste scherm Voeg geen activiteit toe en druk op Af hebben.

Uw project heeft nu twee modules, één voor de app en één voor de bibliotheek. Hier ziet de structuur eruit:

Stap 2: Maak een lay-out

Maak een nieuwe lay-out-XML door met de rechtermuisknop op de knop te klikken res map van uw bibliotheekmodule en selecteren Nieuw> XML> Layout XML-bestand. Noem maar op my_view.xml.

Om deze tutorial eenvoudig te houden, maken we een aangepaste versie Uitzicht dat heeft er twee Tekstweergave widgets in a LinearLayout. Na het toevoegen van wat tekst aan de Tekstweergave widgets, zou het lay-out XML-bestand er als volgt uit moeten zien:

"xml

"

Stap 3: Maak een Java-klasse

Maak een nieuwe Java-klasse en geef deze een naam MyView.java. Zorg ervoor dat dit bestand in de src map van de bibliotheekmodule - niet de app-module.

Om deze klasse zich te laten gedragen als een Uitzicht, maak er een subklasse van LinearLayout klasse. Android Studio zal u vragen een paar constructeurs aan de klas toe te voegen. Na het toevoegen zou de nieuwe klasse er als volgt uit moeten zien:

"java public class MyView breidt LinearLayout uit

public MyView (context context) super (context);  public MyView (Context-context, AttributeSet-attrs) super (context, attrs);  

"

Zoals u kunt zien, hebben we nu twee constructeurs. Om te voorkomen dat initialisatiecode aan elke constructor wordt toegevoegd, roept u een methode met de naam initialiseren van elke constructor. Voeg de volgende code toe aan elke constructor:

java initialiseren (context);

In de initialiseren methode, bel opblazen om de lay-out die we in de vorige stap hebben gemaakt te associëren met de klas.

java private void initialize (Context context) inflate (context, R.layout.my_view, this);

2. De bibliotheek lokaal gebruiken

Nu de bibliotheek gereed is, laten we er gebruik van maken in de app module van hetzelfde project om ervoor te zorgen dat er geen problemen zijn. Voeg dit toe als a compileren afhankelijkheid in de build.gradle bestand van de app-module:

groovy compile project (": mylittlelibrary")

Maak een nieuwe Java-klasse, Hoofdactiviteit, in de app-module. Maak er een subklasse van Activiteit klasse en overschrijven het onCreate methode.

"java public class MainActivity breidt activiteit uit

@Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState);  "

Binnen in de onCreate methode, maak een instantie van de aangepaste weergave met behulp van de constructor. Geef het door aan de setContentView methode zodat het alle schermruimte van de vult Activiteit:

"java @Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState);

Bekijk v = nieuwe MyView (this); setContentView (v); 

"

Jouw Activiteit is nu klaar. Nadat u het aan het app-manifest hebt toegevoegd, bouwt u uw project en implementeert u uw app op een Android-apparaat. Je zou de aangepaste weergave moeten kunnen zien wanneer de app start.

3. Publicatie van uw bibliotheek op Bintray

Bintray is een populair platform dat u kunt gebruiken om Android-bibliotheken te publiceren. Het is gratis en gemakkelijk te gebruiken.

Begin met het maken van een account op Bintray. Nadat je bent ingelogd op je account, zie je dat je al zes repositories hebt. Je kunt een van deze gebruiken of een nieuwe repository maken. Voor deze tutorial gebruik ik de genoemde repository maven, wat een Maven-repository is.

Ga naar je profielpagina en klik op de Bewerk knop. Klik op de volgende pagina op API sleutel link om uw API-sleutel te bekijken.

Noteer de sleutel, want u hebt deze nodig om uzelf te verifiëren bij het gebruik van de Bintray-plug-in.

Stap 1: voeg de benodigde invoegtoepassingen toe

Als u wilt communiceren met Bintray in Android Studio, moet u de Bintray-plug-in opnemen in de afhankelijkheden van uw project build.gradle het dossier.

groovy classpath 'com.jfrog.bintray.gradle: gradle-bintray-plugin: 1.2'

Omdat u de bibliotheek naar een Maven-opslagplaats uploadt, moet u ook de Maven-plug-in toevoegen zoals hieronder wordt weergegeven.

groovy classpath "com.github.dcendents: android-maven-gradle-plugin: 1.3"

Stap 2: Pas de plug-ins toe

Open de build.gradle bestand van uw bibliotheekmodule en voeg de volgende code toe om de plug-ins toe te passen die we in de vorige stap hebben toegevoegd.

groovy apply plugin: 'com.jfrog.bintray' apply plugin: 'com.github.dcendents.android-maven'

Stap 3: Specificeer POM-details

De Bintray-plug-in zoekt naar een POM-bestand wanneer het de bibliotheek uploadt. Hoewel de Maven-plug-in het voor u genereert, moet u de waarde van de groupId tag en de waarde van de versie tag jezelf. Gebruik hiervoor de groep en versie variabelen in uw graduele bestand.

groovy group = 'com.github.hathibelagal.librarytutorial' // Wijzig dit om overeen te komen met de naam van je pakketnaam = '1.0.1' // Wijzig dit om overeen te komen met je versienummer

Als u bekend bent met Maven en u vraagt ​​zich af waarom we de waarde van de waarde niet hebben opgegeven artifactId tag, dit komt omdat de Maven-plug-in standaard de naam van uw bibliotheek zal gebruiken als de artifactId.

Stap 4: Genereer een bronnen JAR

Om aan de Maven-normen te voldoen, moet uw bibliotheek ook een JAR-bestand bevatten met de bronbestanden van de bibliotheek. Maak een nieuw om het JAR-bestand te genereren Pot taak, generateSourcesJar, en specificeer de locatie van de bronbestanden met behulp van de van functie.

groovy task generateSourcesJar (type: Jar) van android.sourceSets.main.java.srcDirs classifier 'sources'

Stap 5: Genereer een Javadoc JAR

Het wordt ook aanbevolen dat uw bibliotheek een JAR-bestand heeft met daarin Javadocs. Omdat u momenteel geen Javadocs heeft, maakt u een nieuwe javadoc taak, generateJavadocs, om ze te genereren. Gebruik de bron variabele om de locatie van de bronbestanden op te geven. Je moet ook het classpath variabele zodat de taak klassen kan vinden die behoren tot de Android SDK. U kunt dit doen door de retourwaarde van de android.getBootClasspath methode om het.

groovy taak generateJavadocs (type: Javadoc) source = android.sourceSets.main.java.srcDirs classpath + = project.files (android.getBootClasspath (). join (File.pathSeparator))

Als u vervolgens een JAR van de Javadocs wilt genereren, maakt u een Pot taak, generateJavadocsJar, en passeer de destinationDir eigendom van generateJavadocs naar zijn van functie. Je nieuwe taak zou er als volgt uit moeten zien:

groovy task generateJavadocsJar (type: Jar) from generateJavadocs.destinationDir classifier 'javadoc'

Om zeker te zijn van de generateJavadocsJar taak begint pas als het generateJavadocs taak is voltooid, voegt u het volgende codefragment toe, dat de hangt af van methode om de taken te bestellen:

groovy generateJavadocsJar.dependsOn generateJavadocs

Stap 6: Neem de gegenereerde JAR-bestanden op

Als u de bron- en Javadoc JAR-bestanden in de lijst met artefacten wilt opnemen die naar de Maven-opslagplaats worden geüpload, moet u de namen van hun taken toevoegen aan een configuratie riep archief. Gebruik hiervoor het volgende codefragment:

groovy artifacts archives generateJavaDocsJar archives generateSourcesJar

Stap 7: Voer taken uit

Het is nu tijd om de taken uit te voeren die we in de vorige stappen hebben gemaakt. Open de Gradle-projecten venster en zoek naar een taak met de naam installeren.

Dubbelklik erop om de taken uit te voeren die aan de bibliotheekmodule zijn gekoppeld. Als het klaar is, heb je alles wat je nodig hebt om je bibliotheek, een geldig POM-bestand, een AAR-bestand, een bronnen-JAR en een Javadocs JAR te publiceren.

Stap 8: Configureer de Bintray-plug-in

Om de plug-in te configureren, moet u de bintray sluiting in uw Gradle-bestand. Ten eerste, authenticeer jezelf met behulp van de gebruiker en sleutel variabelen, die overeenkomen met uw Bintray-gebruikersnaam en API-sleutel respectievelijk.

Op Bintray bevindt uw bibliotheek zich in een Bintray-pakket. Je moet er details over geven met de intuïtieve naam repo, naam, licenties, en vcsUrl parameters van de pkg sluiting. Als het pakket niet bestaat, wordt het automatisch voor u gemaakt.

Wanneer u bestanden uploadt naar Bintray, worden deze gekoppeld aan een versie van het Bintray-pakket. daarom, pkg moet een bevatten versie sluiting waarvan naam eigenschap is ingesteld op een unieke naam. Optioneel kunt u ook een beschrijving, releasedatum en Git-tag opgeven met behulp van de desc, vrijgelaten, en vcsTag parameters.

Om ten slotte de bestanden te specificeren die moeten worden geüpload, stelt u de waarde in van configuratie parameter naar archief.

Dit is een voorbeeldconfiguratie:

"groovy bintray user = 'test-user' key = '01234567890abcdef01234567890abcdef' pkg repo = 'maven' name = 'com.github.hathibelagal.mylittlelibrary'

 versie name = '1.0.1-tuts' desc = 'Mijn testupload' vrijgegeven = nieuw Datum () vcsTag = '1.0.1' licenses = ['Apache-2.0'] vcsUrl = 'https: // github. com / hathibelagal / LibraryTutorial.git 'websiteUrl =' https://github.com/hathibelagal/LibraryTutorial ' configurations = [' archives '] "

Stap 9: Upload bestanden met behulp van de Bintray-plug-in

Open de Gradle-projecten venster opnieuw en zoek naar de bintrayUpload taak. Dubbelklik erop om te beginnen met het uploaden van de bestanden.

Zodra de taak is voltooid, opent u een browser om de detailspagina van uw Bintray-pakket te openen. U ziet een melding die zegt dat u vier niet-gepubliceerde bestanden hebt. Als u deze bestanden wilt publiceren, klikt u op Publiceren link.

4. Gebruik de bibliotheek van Bintray

Uw bibliotheek is nu beschikbaar als een Bintray-pakket. Zodra u de URL van uw Maven-repository deelt, samen met de groeps-ID, artefact-ID en versienummer, heeft elke ontwikkelaar toegang tot uw bibliotheek. Als u bijvoorbeeld de bibliotheek wilt gebruiken die we hebben gemaakt, moeten ontwikkelaars het volgende codefragment opnemen:

"groovy repositories maven url 'https://dl.bintray.com/eruzza/maven'

afhankelijkheden compile 'com.github.hathibelagal.librarytutorial: mylittlelibrary: 1.0.1@aar' "

Merk op dat de ontwikkelaar uw repository expliciet moet opnemen in de lijst van repositories voordat u de bibliotheek toevoegt als een compileren afhankelijkheid.

5. De bibliotheek toevoegen aan JCenter

Standaard zoekt Android Studio naar bibliotheken in een opgeroepen repository JCenter. Als u uw bibliotheek opneemt in de repository van JCenter, hoeven ontwikkelaars niets aan hun bibliotheek toe te voegen repositories lijst.

Om uw bibliotheek aan JCenter toe te voegen, opent u een browser en bezoekt u de detailspagina van uw Bintray-pakket. Klik op de knop met het label Toevoegen aan JCenter.

U wordt vervolgens naar een pagina geleid waar u een bericht kunt opstellen. U kunt de Comments veld om eventueel details over de bibliotheek te vermelden.

Klik op de Sturen om het beoordelingsproces van Bintray te starten. Binnen een dag of twee zullen de mensen bij Bintray je bibliotheek koppelen aan de JCenter-repository en je kunt de link naar JCenter bekijken op de detailspagina van je pakket..

Elke ontwikkelaar kan nu uw bibliotheek gebruiken zonder de lijst met te wijzigen repositories.

Conclusie

In deze zelfstudie leer je hoe je een eenvoudige Android-bibliotheekmodule kunt maken en publiceren naar zowel je eigen Maven-repository als naar de JCenter-repository. Onderweg leerde je ook hoe je verschillende soorten graduele taken moest maken en uitvoeren.

Voor meer informatie over Bintray, bezoekt u de gebruikershandleiding van Bintray.