基于VSTS的Xamarin.Android持續(xù)集成步驟詳解
這些天做了一個(gè),這里分享下
Build Agent 環(huán)境需求
DotNetFramework
msbuild
visualstudio
AndroidSDK
JDK
Xamarin.Android
Build的部分分為以下步驟
1. 還原NuGet包
a. 這步之所以存在,原因?yàn)槲沂褂昧薠amarin.Android進(jìn)行編譯,而沒有直接對解決方案使用MSBUILD進(jìn)行編譯,所以需要單獨(dú)還原一下NuGet包
b. 解決方案路徑填寫 **\*.sln 即可
2. 替換版本號
a. Xamarin.Android的版本號與AndroidManifest.xml中的versionName與versionCode有關(guān),我在這里使用Powershell將版本號替換成了新的
b. 此腳本傳遞參數(shù)為當(dāng)前源代碼路徑,$(Build.SourcesDirectory)
c. 腳本代碼:
param( [string]$path ) if([String]::IsNullOrEmpty($path)){ $path= $($MyInvocation.MyCommand.Definition.Replace("build\changeVersion.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,"source\AndroidAppProject\Properties") write $filePath ls $filePath *.xml | %{sc -Path $_.FullName -Value $($(gc $_.FullName) -replace $pattern,$version) }
3. 編譯Android程序
a. 使用TSTS自帶的Xamarin.Android進(jìn)行編譯
b. 輸出目錄我設(shè)定在了$(Agent.BuildDirectory)\bin$(BuildConfiguration)
c. 配置使用用戶入隊(duì)時(shí)的配置$(BuildConfiguration)
4. 獲取編譯Andorid的AndroidManifest數(shù)據(jù)
例如 packagename/label/versionName等
a. 這個(gè)是我自己寫的一個(gè)VSTS擴(kuò)展,用于獲取一些應(yīng)用的基本信息,并存儲在對應(yīng)的變量中,以備后續(xù)步驟使用(生成ReleaseNote時(shí))
b. https://github.com/chsword/zou-vsts-tasks
5. 對編譯好的Android apk進(jìn)行簽名
a. 使用 VSTS自帶的Android簽名 功能進(jìn)行簽名
b. 需要勾選 為APK簽名,并填入Keystore密碼、Keystore別名,密鑰密碼
c. Jarsigner 參數(shù): -verbose -sigalg MD5withRSA -digestalg SHA1
d. 勾選Zipalign
6. 刪除多余的文件
a. 因?yàn)榫幾g時(shí) DLL 也會(huì)被復(fù)制過來,所以需要?jiǎng)h除下多余的文件,只留APK
7. 生成 ReleaseNotes
a. 使用的是 rfennell 的生成ReleaseNote的VSTS擴(kuò)展
https://github.com/rfennell/vNextBuild/tree/master/Extensions/GenerateReleaseNotes
b. 我這里將 ReleaseNotes,生成了一個(gè) MarkDown :ReleaseNotes.md,以備發(fā)布時(shí)使用
8. 生成預(yù)發(fā)布腳本
a. 我提前寫了一個(gè)預(yù)發(fā)布Powershell腳本用于將APK發(fā)布到Bugly,主要是調(diào)用 CURL,這里就不詳述了
這樣,就可以進(jìn)行 手動(dòng)或自動(dòng)集成的操作
小技巧:
關(guān)于敏感數(shù)據(jù),一些敏感數(shù)據(jù),比如簽名時(shí)的密碼、其實(shí)可以在 生成定義 的 變量 中進(jìn)行定義,并設(shè)置為加密變量 ,這樣在傳輸或編輯時(shí),都將無法查看此變量
引用:
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持續(xù)集成步驟詳解的詳細(xì)內(nèi)容,更多關(guān)于VSTS的Xamarin.Android持續(xù)集成的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Android開發(fā)微信APP支付功能的要點(diǎn)小結(jié)
微信支付現(xiàn)在在日常生活中隨處可見,而關(guān)于Android開發(fā)微信支付的文章網(wǎng)上也很多,所以這篇文章主要介紹的是在Android開發(fā)微信APP支付功能的要注意的要點(diǎn),有需要的可以參考借鑒。2016-08-08Android實(shí)現(xiàn)對圖片放大、平移和旋轉(zhuǎn)的功能
現(xiàn)在很多App在查看一張圖片的原圖時(shí),都會(huì)支持圖片的手勢縮放,手勢平移以及圖片旋轉(zhuǎn)的操作。那么今天小編就來教大家去簡單的實(shí)現(xiàn)圖片的放大、平移、旋轉(zhuǎn)的操作,有需要的可以參考借鑒。2016-08-08Android常用控件ImageSwitcher使用方法詳解
這篇文章主要為大家詳細(xì)介紹了Android常用控件ImageSwitcher的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08Android中的腦殘?jiān)O(shè)計(jì)總結(jié)
本篇文章是對Android中的腦殘?jiān)O(shè)計(jì)進(jìn)行了分析與介紹,需要的朋友參考下2013-05-05Android短信驗(yàn)證碼自動(dòng)填寫實(shí)現(xiàn)代碼
這篇文章主要為大家詳細(xì)介紹了Android短信驗(yàn)證碼自動(dòng)填寫實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05Android入門之TabHost與TabWidget實(shí)例解析
這篇文章主要介紹了Android入門之TabHost與TabWidget,對于Android初學(xué)者有一定的學(xué)習(xí)借鑒價(jià)值,需要的朋友可以參考下2014-08-08Android 支付寶支付、微信支付、銀聯(lián)支付 整合第三方支付接入方法(后臺訂單支付API設(shè)計(jì))
這篇文章主要介紹了Android 支付寶支付、微信支付、銀聯(lián)支付 整合第三方支付接入方法(后臺訂單支付API設(shè)計(jì))的相關(guān)資料,需要的朋友可以參考下2016-11-11Android筆記之:App模塊化及工程擴(kuò)展的應(yīng)用
這篇文章是android開發(fā)人員的必備知識,是我特別為大家整理和總結(jié)的,不求完美,但是有用2013-04-04