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-31 16:54:24

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

Jenkins构建Android项目持续集成之findbugs的使用

题外话 这篇本来和之前的系列要一起出的,但是因为中间公司要发布一个版本,给耽搁了,今天工作做完了,又闲了下来.所以就又来继续jenkins构建Android项目持续集成系列的findbugs篇. Findbugs简介 关于findbugs的介绍,可以自行百度下,这里贴下百度百科的介绍.findbugs是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题.这组缺陷模式是可配置的,通过配置,可以过滤掉一些我们不想或不需要检测的问题. findbugs在gra

使用jenkins进行Android的持续集成

关于持续集成的定义和意义可以参考它的 百度百科 主要意义有以下几点: 减少风险 减少重复过程 任何时间.任何地点生成可部署的软件 增强项目的可见性 建立团队对开发产品的信心 持续集成的实施 持续集成的工具有多个,本人实施的时候采用了Jenkins,它的前身是Hudson. 关于Jenkins的介绍可自行搜索,其主要特点是支持多种插件. 下面说说如何针对Android搭建一个可用的持续集成的系统. 用到的工具: 1.Android 完整的开发环境 : Android  SDK AndroidStu

【52ABP实战教程】0.1-- Devops如何用VSTS持续集成到Github仓库!

工欲善其事,必先利其器.在开始正式的教程之前我们先来聊聊准备工作. 管理工具会VSTS. 代码管理会用GITHUB. 服务器会用Azure. 所有的东西都是利用现有服务.不会说自己从虚拟机开始玩.我们就专注于写代码. 什么是VSTS? VSTS的全称是Visual Studio Team Services. 介绍VSTS之前先说下TFS(Team Foundation Server).TFS是微软推出的一款ALM(Application Lifecycle Management)软件生命周期管理

CI实践_Android持续集成

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

Android studio 下的robotium自动化测试和持续集成

一.前言 Android Studio是一个Android开发环境,基于IntelliJ IDEA.类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于开发和调试.作为官方主推的开发环境和停止对其他开发IDE的支持,Android Studio将成为今后唯一的android开发环境.本文主要介绍在Android Studio环境下的Robotium测试框架使用方法和持续集成. 二.在Android Studio中使用Robotium 2.1基础环

jenkins+svn+android studio自动化构建(持续集成)

先到Jenkins官网的Meet Jekins中看一下Installation部分,原文如下 You have several options for downloading and installing Jenkins: *Use one of the platform-specific package/installer links on the Jenkins site to install Jenkins on your system. *You can download jenkins

使用 Jenkins 搭建 iOS/Android 持续集成打包平台【转】

背景描述 根据项目需求,现要在团队内部搭建一个统一的打包平台,实现对iOS和Android项目的打包.而且为了方便团队内部的测试包分发,希望在打包完成后能生成一个二维码,体验用户(产品.运营.测试等人员)通过手机扫描二维码后就能直接安装测试包. 该需求具有一定的普遍性,基本上所有开发APP的团队都可能会用到,因此我将整个需求实现的过程整理后形成此文,并且真正地做到了零基础上手,到手即飞.开箱即用,希望能对大家有所帮助. 首先,先给大家展示下平台建设完成后的整体效果: 该平台主要实现的功能有3点:

基于Jenkins+git+gradle的android持续集成,jenkinsgradle

转载:http://www.android100.org/html/201506/22/156680.html 基于Jenkins+git+gradle的android持续集成,jenkinsgradle 本文参考了: http://my.oschina.net/uboluo/blog/157483 http://java.dzone.com/articles/automating-continuous 以前都是通过IDE(eclipse or Android Studio)手动生成apk通过Q

基于Jenkins+git+gradle的android持续集成

本文参考了: http://my.oschina.net/uboluo/blog/157483 http://java.dzone.com/articles/automating-continuous 以前都是通过IDE(eclipse or Android Studio)手动生成apk通过QQ或者邮件发送给测试人员进行测试,现在的司要求对项目进行持续集成,也就是说通过某种方式定时(比如每晚凌晨三点)自动将git库中最新的代码pull下来编译打包,测试人员每天早上上班都能拿到最新的代码打包的Ap