Első lépésként egy regisztrációt kell készíteni a visualstudio.com oldalra:
Ehhez kell egy microsoft account, majd a kezdéshez meg kell adni egy értelmes dns nevet, én a xamarin201702-t választottam a tanfolyam nevére utalásként.
Ha ezzel megvagyunk, érdemes egy új projektet felvinni, (mert a my first project név nem feltétlenül informatív), a nevet, a leírást kitöltése után a kódtár típusát hagyjuk alapértelmezett állapotban a Git-en, mert így könnyen tudjuk szinkronizálni a kódot a GitHub-bal.
A hockeyapp.com oldalon válasszuk ki a szervizmenüből a regisztráció beállításait:
innen pedig az API Tokens menüpontot:
majd nevezzük el a tokenünket, amit létrehozunk. Ezt a tokent fogja az automatikus build arra használni, hogy az alkalmazásunkat a hockeyapp-ra feltöltse és release-t készítsen belőle.
Jegyezzük meg az API Token értékét, ez kell majd a BUILD-hez:
A Visual Studio-ban az Android projekten nyomjunk jobb egérgombot,
és válasszuk a View Archives... menüpontot, majd válasszuk ki az egyik talapítőcsomagot, és nyomjuk meg az Open Folder gombot:
Ez megnyitja azt a könyvtárat, ahova a Xamarin az egyes csomagokat elmenti.
Itt navigáljunk ki a Mono for Android mappába, ott egyet be a KeyStore mappába, aztán tovább a solution mappába:
Amire szükségünk van, az a *.keystore állomány.
Figyelem: Ha a tanusítványunkat nagyobb biztonságban szeretnénk tudni, vagyis nem szeretnénk feltölteni kódolatlan formában a forráskódkezelő kódtár(ak)ba, akkor nem ezt az állományt érdemes használni, hanem openssl segítségével des3 titkosítást használva jelszóval titkosíthatjuk ezt az állományt (például a Windows Subsystem for Linux segítségével, a következő parancssal: openssl des3 -in xamarin201702.keystore -out xamarin2017.keystore.encrypted, majd adjuk meg a titkosítás jelszavát.), és ezt az állományt használjuk a továbbiakban. Ebben az esetben a Build folyamatunkat ki kell egészíteni két lépéssel:
- Egyrészt az aláírás előtt vissza kell állítani a titkosított állományból az eredetit, méghozzá a Build folyamathoz adott Decrypt File (OpenSSL) lépéssel a Utility kategóriából

- Aláírás után pedig azonnal törölni kell a titkosítatlan állományt ugyancsak a Utility kategória Delete Files lépésével

Az aláíró állományunkat másoljuk át a forráskódunkba, és töltsük fel a kódtárba:
A visualstudio.com oldalon a megnyitott projektünk oldalán hívjuk elő a kódtárat:
majd kattintsunk a Clone gombra, hogy hozzáférjünk a kódtár webes eléréséhez:
ha ez megvan, másoljuk az url-t a vágólapra:
Nyissuk meg a Visual Studio 2015-ben a projektünket, majd a Team Explorer ablakot, és kattintsunk a Home linkre.
Majd a Settings gombot használva hozzáférünk a lokális GitHub kódtár beállításaihoz:
Itt válasszuk ki a Repository Settings-t:
vegyünk fel egy újabb Remote-ot,
nevezzük el, és másoljuk be a linket a vágólapról:
Ha megvagyunk, akkor ezzel készen vagyunk az előkészületekkel. Ha a Build kódtárba szeretnénk a kódunkat feltölteni, akkor ehhez nyissuk meg a Team Explorer ablakot, és kattintsunk a Home linkre.
Majd a szinkronizálás linkre:
Figyelem: Ha nem ezen a gépen fejlesztünk kizárólagosan, akkor ez előtt a lépés előtt le kell tölteni Pull paranccsal a GitHub kódtárból az utolsó változatot, és ha szükséges elvégezni az összefésülést (Merge).
A megjelenő ablakban nyissuk le a Push gomb lenyílóját,
és célként válasszuk a most rögzített Build remote-ot:
majd nyomjuk meg a Push gombot:
Mivel szükséges hozzá, elképzelhető, hogy a Visual Studio megkér, hogy a Microsoft-os bejelentkezésünket erősítsük meg névvel és jelszóval. Ezt követően a kódunk a megfelelő *.visualstudio.com projekt kódtárába feltöltődik.
Ellenőrizhetjük a weboldalon is:
A visualstudio.com oldalon a projekten belül kattintsunk a Build & Release linkre:
majd a +New gombra:
(Bekapcsoltam az új build definíció szerkesztőt, így a képeken látható kinézet eltérhet a konkrét esetben, de a tartalom azonos.)
A megjelenő listából közül válasszuk ki a Xamarin.Android template-et:
Figyelem: vegyük észre, hogy nem Visual Studio buildet használunk, hanem Xamarin Studio buildet.
A
- Xamarin component restore,
- a (Visual Studio) Build solution **/test.csproj és a
- Test $(build.binariesdirectory)
lépések törölhetőek, ezekre ebben a megoldásban nem lesz szükség. Ami marad, az a következő:
Menjünk végig az egyes Build lépéseken.
- Első a Get sources, ez arra szolgál, hogy letöltsük a kódtárból a build ügyfél gépre a forráskódot. Érdemes bekapcsolni az Advanced settings láthatóságát, hogy minden paramétert lássunk, de nem állítunk az alapértelmezett beállításokon. Ha itt bekapcsoljuk a Clean kapcsolót, akkor mindig üres kódtárba húzzuk le a forráskódot, különben (ha ugyanazt a klienst kapjuk) a korábbi forráskódra csak az azóta keletkezett commit módosítások kerülnek. Ez sebességben jelenthet különbséget, illetve, ha módosítunk a forráskódon a Build során, akkor erre vigyázni kell.

- A *Nuget restore *.sln arra szolgál, hogy a nuget csomagokat letöltsük a forráskód mellé. Ezeken a beállításokon sem érdemes módosítani.

- A Build Xamarin.Android projekt lépésben figyelni kell a Java Developer Toolkit (JDK) beállításra, és be kell állítani JDK8-ra, mást nem kell átállítani.

- A következő lépés a Signing and aligning APK file. Itt tallózuk ki a korábban feltöltött *.keystore állományt (opcionálisan egy lépéssel korábban dekódoljuk), pipáljuk be a Sign the APK és a Zipalign kapcsolókat, majd töltsük ki a jelszavakat és az Alias-t.

- Ha a változók közé felvesszük rejtettnek őket, akkor többet a felületről nem olvashatók, így a jelszavak nagyobb biztonságban vannak. Ebben az esetben a változó értékére $(változónév) formában hivatkozhatunk bármelyik mezőben.

- Az (egyelőre) utolsó lépés a Publish Artifact: drop beállításain nem kell módosítani:

Ha ezzel megvagyunk, indíthatunk egy Build-et a Save & queue linkkel:
hogy az eddigiek működését ellenőrizzük. Ha ez jól lefutott, akkor folytathatjuk tovább, két fontos rész hiányzik a build folyamatunkból.
- Verziózás
- Feltöltés a HockeyApp oldalra
Mindkettőhöz kiegészítéseket kell telepítenünk a Visual Studio Marketplace-ről, méghozzá a Browse Marketplace menüpont segítségével innen:
A hockeyapp integrációhoz telepítsük a hockeyapp extension-t,
A verziózáshoz telepítsük a Colin's ALM Corner Build & Release Tools-t:
Ha ez megvan, menjünk vissza a Build definícióba, és a + Add Task link segítségével adjunk hozzá három Version Assemblies lépést a Build kategóriából:
és egy HockeyApp lépést a Deploy kategóriából:
a következőképpen rendezve őket:
A három Version Assemblies a Build Xamarin.Android lépés elé kerül, HockeyApp pedig a Build legvégére.
A beállításuk pedig a következő:
-
A verziózáshoz öt lépés kell
- Az Android projektben az AndroidManifest.xml állományban be kell állítani az android:versionVode="1" és az android.versionName="0.0.1.0" értékeket, ezt fogja majd az automatikus Build átírni. Ehhez a legcélszerűbb (ahelyett, hogy kézzel írnánk az AndroidManifext állományt) jobb egérgombot nyomni az Android projekten (Day1.Droid) és megnyitni a Properties menüpontot:

- majd az Android Manifest lapon beállítani a két értéket

- be kell állítani a Build verziószámát a Build definíció Options fülén a Build number format mezőben 0.0.1.$(BuildID), hogy legyen egy verziószámunk hasonlóan a SemVer szerint, ez 0.0.1 és a negyedik szám pedig a build sorszáma, amit ezen a visualstudio.com account-on valaha összesen indítottunk. Így ez a szám egyedi lesz minden Build során, az első három sorszámot pedig a SemVer szerint kézzel állíthatjuk be.
Figyelem! A verzószám első három részének átállításakor szinkronban kell módosítanunk az AndroidManifest.xml állomány android.versionName mezőjének és a Build definíció Options/Build number format mezőnek az értékét!
- A Build során át kell írnunk a AndroidManifest.xml állomány android:versionCode mezőjének értékét az aktuális Build számára, ehhez a android:versionCode="0" értéket kell átírni úgy, hogy a Build verzóból levágjuk az utolsó számot és beírjuk az android:versionCode="0" mezőbe a 0 helyére így

- A Build során át kell írnunk az AndroidManifest.xml állomány android:versionName mezőjének értékét az aktuális verziószámra, ehhez csak az AndroidManifest.xml állományt kell kiválasztani, a többi beállítást már hagyhatjuk alapértelmezett beállításokkal, így:

- végül, hogy a dll-ben lekérdezhető legyen a build verziószáma, és a felhasználónak meg tudjuk mutatni, A Build során át kell írnunk az AssemblyInfo.cs állomány verziószámait, ehhez elég megadnunk a Portable projektünk megfelelő mappáját, így:
Ahhoz pedig, hogy ezt a verziószámot (Az utoljára beállítottat, ami az AssemblyVersion.cs-be kerrült, ez lesz a fordított .dll verziószáma) az alkalmazásból elérjük, a következő lekérdezés segíthet:
- Az Android projektben az AndroidManifest.xml állományban be kell állítani az android:versionVode="1" és az android.versionName="0.0.1.0" értékeket, ezt fogja majd az automatikus Build átírni. Ehhez a legcélszerűbb (ahelyett, hogy kézzel írnánk az AndroidManifext állományt) jobb egérgombot nyomni az Android projekten (Day1.Droid) és megnyitni a Properties menüpontot:
var asmn = new AssemblyName(typeof(App).GetTypeInfo().Assembly.FullName);
labelVersion.Text = asmn.Version.ToString();
- A HockeyApp beállításához
- fel kell vennünk a szervizek közé külső szolgáltatónak. Ehhez a fogaskerék ikonra kell kattintani a HockeyApp Connection mező mellett:
- Az új szerviz végpont felvitelénél kiválasztva a HockeyApp-ot
- A kapott ablakba fel kell vinni a a HockeyApp szerviz API Tokenjét, a megnevezés tetszőleges, csak a VisualStudio.com build-ben hivatkozunk majd ezzel a névvel.
- Miután ezzel megvagyunk, visszamegyünk a Build definícióra, és a HockeyApp connection mező mellett a frissítés ikonra kattintunk, utána ki tudjuk választani a most rögzített HockeyApp kapcsolatot:
- be kell még állítanunk az App ID-t, célszerűen ezt is változóként titkosítva, itt az App ID mezőben pedig $(változónév) segítségével a titkos értéket betöltve.
- meg kell adnunk a Binary File Path mezőben a következőt:
$(build.binariesdirectory)/$ (BuildConfiguration)/*.apk
- Mást a HockeyApp-nál nem kell beállítani.
- fel kell vennünk a szervizek közé külső szolgáltatónak. Ehhez a fogaskerék ikonra kell kattintani a HockeyApp Connection mező mellett:






































