Skip to content

Latest commit

 

History

History
244 lines (148 loc) · 13.6 KB

File metadata and controls

244 lines (148 loc) · 13.6 KB

Alkalmazás automatikus fordítása és feltöltése a HockeyApp-ra

Előkészületek

VisualStudio.com regisztráció

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.

HockeyApp regisztráció AppId

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:

Aláírási tanusítvány felvétele a kódtárba

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 kódtár felvétele a visual studio projektbe

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:

Kód feltöltése a Build szerverre

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:

Build definíció létrehozása

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:
    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.