Xamarin.Android VSTS 持续集成

这些天做了一个基于 VSTS 的 Xamarin.Android的持续集成,这里分享下

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

时间: 2024-10-17 06:20:04

Xamarin.Android VSTS 持续集成的相关文章

Android项目持续集成实践之Gitlab CI

简介 持续集成(Continuous integration)是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成.每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误. 入门 下面我们来简单介绍,如果通过Gitlab CI来对Android项目持续集成. 一言不合,先甩给你一个项目链接:https://gitlab.com/snowdream/Citest 项目很简单,就是一个默认创建的Andro

Android项目持续集成实践之Gitlab CI(Docker版本)

接上一篇 Android项目持续集成实践之Gitlab CI. 在我看来,.gitlab-ci.yml 配置还是有些复杂,写的脚本还是有点多,有没有办法更精简一点呢? 有,那就是Android环境Docker化.(注:对Docker感兴趣的同学,请参考这本书<Docker -- 从入门到实践>). 我在这本书的指导下封装了一个包含Android开发环境的Docker镜像. 1. https://github.com/snowdream/docker-android 1. https://hub

初创公司应该如何做好持续集成和部署?

作者介绍 裴双才,Geekwolf,现MAKA运维负责人,博客: http://www.simlinux.com.<FastDFS分布式存储实战>作者,<Ansible中文手册>译者.RHCA/RHCVA,混迹各种开源社区,专注高效运维.DevOps.性能优化.Docker.MySQL等方向,热衷技术分享,欢迎一起讨论技术,互相学习,共同进步. 前言 持续集成和部署是每一个互联网开发团队都必须要面对的问题,特别是在初创公司,由于业务和技术团队快速增长,技术积累较弱,所以一个高效的,

CI实践_Android持续集成

之前已经实现了Android的持续集成,并在项目中应用了一段时间.恰逢现在有几分钟时间,把之前的一些零散的点滴记录和整理一下,供有需要的朋友参考,或后续复用. 需要的准备知识:gitlab.Jenkins.各种plugins.shell等: 另外,推荐一个seafiles,相当于云存储网盘,大家可以把构建的apk包,发送至,供团队内部使用: 当然,你也可以采用ftp为team共享也可以.   一.总体的全局配置: 配置相关plugin,如果需要进行代码检测的话,也需要安装Sonar,部分配置如下

大叔也说Xamarin~Android篇~支付宝SDK的集成

原文:大叔也说Xamarin~Android篇~支付宝SDK的集成 首先做为支付宝SDK它提供了多种平台,网页版,wap版,IOS版,android版等等,今天主要说一下在xamarin里使用android平台的sdk的方法,在网上介绍这块的文章不多,大叔本着贡献的精神继续撰写程序人生!希望各位继续支持大叔! 一 首先下面支付宝android的sdk,也就是手机端的sdk,一般也叫快捷支付 https://doc.open.alipay.com/doc2/detail?treeId=54&art

【狂云歌之unity_vr】unity项目持续集成dailybuild以及多平台打包管理

[狂云歌之unity_vr]unity项目持续集成dailybuild以及多平台打包管理 前言  持续集成的意义就不多说了.unity通常打包一般就直接build&run,但是在实际项目中,往往直接在服务器build包,所以命令行打包必不可少,这里一方面分享unity打包做持续集成,一方面分享使用unity管理多平台打包,例如一个vrapp需要支持gear版本,支持小米版本,支持cardboard版本等等~懂的人就知道这里具有一定的管理维护成本.  我们做vr相关的app,需要支持gear.ca

以持续集成工具实现DevOps之禅

作为DevOps流程中的一个重要组成部分,持续集成(CI)的目标是对开发团队的代码进行集成,包括代码的构建.单元测试与集成测试的执行,以及生成执行结果的报表等等.CI使开发团队无需将时间浪费在处理代码冲突的问题上,因此很多人将其视为敏捷软件开发的奠基石. CI与持续部署(CD)过程通常是紧密联系在一起的.CD过程通过在管道中定义的步骤将由CI过程所生成的结果部署至集成.预发布乃至生产环境中.由于整个CD过程是"持续的",因此一旦有代码签入源代码控制系统,后续过程就会自动进行测试.对代码

项目管理大法归档 - 思维导图、原型工具、接口测试、设计模式、版本管理、单元测试、持续集成、代码审查、Bug 跟踪

项目管理大法归档 - 思维导图.原型工具.接口测试.设计模式.版本管理.单元测试.持续集成.代码审查.Bug 跟踪 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 项目管理大法归档: 1.思维导

《移动App测试的22条军规》——第23章,第22节实现微信App的持续集成和持续部署

23.22 实现微信App的持续集成和持续部署由于我们并没有微信App的代码,所以我们不能部署微信App的持续集成环境,但是我们可以部分实现微信App的持续部署. 为了实现Android版本微信App生成安装文件并部署到设备上的过程,我们可以首先把微信App的安装文件复制到电脑上的Dropxbox文件夹下(如图23.64所示). 通过以微信App的测试为例,我们实际演练了如何使用移动App测试的22军规来指导测试.虽然笔者演示的内容相对基础,但是相信大家在了解到如何使用这22条军规之后,可以结合