網站首頁 編程語言 正文
這些天做了一個,這里分享下
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("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進行編譯
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
原文鏈接:https://www.cnblogs.com/chsword/p/xamarin_android_ci.html
相關推薦
- 2022-08-10 Oracle數據庫如何使用exp和imp方式導數據_oracle
- 2023-01-13 基于C#實現屏幕取色器_C#教程
- 2022-09-07 python?sklearn?畫出決策樹并保存為PDF的實現過程_python
- 2022-05-19 yolov5返回坐標的方法實例_python
- 2022-08-26 Input標簽自動校驗功能去除實現_React
- 2022-08-20 python3?最常用的三種裝飾器語法匯總_python
- 2022-12-01 Django中ModelForm組件的簡單配置與使用教程_python
- 2022-04-26 Python?Socket?編程知識點詳細介紹_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支