首頁 > 軟體

基於VSTS的Xamarin.Android持續整合步驟詳解

2022-04-02 16:00:04

這些天做了一個,這裡分享下

Build Agent 環境需求

DotNetFramework

msbuild 

visualstudio

AndroidSDK 

JDK

Xamarin.Android

Build的部分分為以下步驟

1. 還原NuGet包

a. 這步之所以存在,原因為我使用了Xamarin.Android進行編譯,而沒有直接對解決方案使用MSBUILD進行編譯,所以需要單獨還原一下NuGet包

b. 解決方案路徑填寫 ***.sln 即可

2. 替換版本號

a. Xamarin.Android的版本號與AndroidManifest.xml中的versionName與versionCode有關,我在這裡使用Powershell將版本號替換成了新的

b. 此指令碼傳遞引數為當前原始碼路徑,$(Build.SourcesDirectory)

c. 指令碼程式碼:

param(
        [string]$path
    )
    if([String]::IsNullOrEmpty($path)){
        $path= $($MyInvocation.MyCommand.Definition.Replace("buildchangeVersion.ps1" ,""))
    }
    write $path
    $pattern='android:versionName="[^"]+"'
    $version=[String]::Format('android:versionName="{0}.{1}"',[DateTime]::Now.Year-2013,[DateTime]::Now.ToString("M.d.H"))
    $filePath = [System.IO.Path]::Combine($path,"sourceAndroidAppProjectProperties")
    write $filePath
    ls $filePath *.xml | %{sc -Path $_.FullName -Value $($(gc $_.FullName) -replace $pattern,$version) }

3. 編譯Android程式

a. 使用TSTS自帶的Xamarin.Android進行編譯

b. 輸出目錄我設定在了$(Agent.BuildDirectory)bin$(BuildConfiguration)

c. 設定使用使用者入隊時的設定$(BuildConfiguration)

4. 獲取編譯Andorid的AndroidManifest資料

例如 packagename/label/versionName等

a. 這個是我自己寫的一個VSTS擴充套件,用於獲取一些應用的基本資訊,並儲存在對應的變數中,以備後續步驟使用(生成ReleaseNote時)

b. https://github.com/chsword/zou-vsts-tasks

5. 對編譯好的Android apk進行簽名

a. 使用 VSTS自帶的Android簽名 功能進行簽名

b. 需要勾選 為APK簽名,並填入Keystore密碼、Keystore別名,金鑰密碼

c. Jarsigner 引數: -verbose -sigalg MD5withRSA -digestalg SHA1

d. 勾選Zipalign

6. 刪除多餘的檔案

a. 因為編譯時 DLL 也會被複制過來,所以需要刪除下多餘的檔案,只留APK

7. 生成 ReleaseNotes

a. 使用的是 rfennell 的生成ReleaseNote的VSTS擴充套件

 https://github.com/rfennell/vNextBuild/tree/master/Extensions/GenerateReleaseNotes

b. 我這裡將 ReleaseNotes,生成了一個 MarkDown :ReleaseNotes.md,以備釋出時使用

8. 生成預釋出指令碼

a. 我提前寫了一個預釋出Powershell指令碼用於將APK釋出到Bugly,主要是呼叫 CURL,這裡就不詳述了

這樣,就可以進行 手動或自動整合的操作

小技巧:

關於敏感資料,一些敏感資料,比如簽名時的密碼、其實可以在 生成定義 的 變數 中進行定義,並設定為加密變數 ,這樣在傳輸或編輯時,都將無法檢視此變數

參照:

Vsts build 中可以使用的變數:

https://www.visualstudio.com/zh-cn/docs/build/define/variables

Bugly api檔案

https://bugly.qq.com/docs/user-guide/api-beta/?v=20160824161206

獲取 Xamarin.Android AndroidManifest 資訊

https://github.com/chsword/zou-vsts-tasks

以上就是基於VSTS的Xamarin.Android持續整合步驟詳解的詳細內容,更多關於VSTS的Xamarin.Android持續整合的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com