Xamarin.Android VSTS 持续集成

简介: 这些天做了一个基于 VSTS 的 Xamarin.Android的持续集成,这里分享下 Build Agent 环境需求 DotNetFramework         msbuild         visualstudio         AndroidSDK         JDK Xamarin.

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

Build Agent 环境需求

DotNetFramework        

msbuild        

visualstudio        

AndroidSDK        

JDK

Xamarin.Android

Build的部分分为以下步骤:

clip_image002

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,这里就不详述了

这样,就可以进行 手动或自动集成的操作

clip_image004

小技巧:

关于敏感数据,一些敏感数据,比如签名时的密码、其实可以在 生成定义 的 变量 中进行定义,并设置为加密变量 ,这样在传输或编辑时,都将无法查看此变量

clip_image006

引用:

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

目录
相关文章
|
2月前
|
移动开发 监控 安全
mPaaS常见问题之Android集成dexPatch热修复运行时候无法正常进行热更新如何解决
mPaaS(移动平台即服务,Mobile Platform as a Service)是阿里巴巴集团提供的一套移动开发解决方案,它包含了一系列移动开发、测试、监控和运营的工具和服务。以下是mPaaS常见问题的汇总,旨在帮助开发者和企业用户解决在使用mPaaS产品过程中遇到的各种挑战
|
10月前
|
Java TensorFlow 算法框架/工具
Android 中集成 TensorFlow Lite图片识别
Android 中集成 TensorFlow Lite图片识别
89 0
|
10月前
|
存储 网络协议 物联网
Android集成MQTT教程:实现高效通信和实时消息传输
Android集成MQTT教程:实现高效通信和实时消息传输
1118 0
|
2月前
|
Java 开发工具 Android开发
Android mk 集成app
Android mk 集成app
32 5
|
1月前
|
文字识别 Android开发 C++
Tesseract OCR集成Android Studio实现OCR识别
Tesseract OCR集成Android Studio实现OCR识别
74 0
|
2月前
|
安全 物联网 Android开发
构建未来:Android与IoT设备的无缝集成
【5月更文挑战第10天】 在数字化时代的浪潮中,智能设备与互联网的结合日益紧密。本文深入探讨了Android系统如何通过其开放性和灵活性成为连接物联网(IoT)设备的关键枢纽。我们将分析Android平台与IoT设备集成的技术途径,探索它们如何共同塑造智能家居、可穿戴技术以及工业自动化等领域的未来。文中不仅阐述了当前的发展状况,还展望了未来的发展趋势,特别是安全性和隐私保护方面的挑战及对策。
28 1
|
2月前
|
安全 Android开发 iOS开发
构建未来:安卓与iOS的无缝集成技术探索
【5月更文挑战第20天】随着智能设备的普及和技术的不断进步,安卓和iOS两大操作系统之间的界限正在逐渐模糊。本文将深入探讨如何通过最新的API、框架和工具实现安卓与iOS应用的无缝集成,以及这一趋势对开发者和用户的潜在影响。我们将从技术可行性、安全性挑战、用户体验优化等角度出发,分析当前的发展状况,并展望未来可能的技术融合路径。
|
2月前
|
存储 监控 安全
打造高效移动办公环境:Android与iOS平台的集成策略
【5月更文挑战第15天】 在数字化时代,移动办公不再是一种奢望,而是日常工作的必需。随着智能手机和平板电脑的性能提升,Android与iOS设备已成为职场人士的重要工具。本文深入探讨了如何通过技术整合,提高两大移动平台在企业环境中的协同工作能力,重点分析了各自平台上的系统集成策略、安全性考虑以及跨平台协作工具的应用。通过对现有技术的剖析与案例研究,旨在为读者提供一套实用的移动办公解决方案。
|
2月前
|
机器学习/深度学习 人工智能 TensorFlow
安卓中的人工智能:集成机器学习功能
【4月更文挑战第14天】在数字化时代,人工智能与机器学习正驱动安卓平台的技术革新。谷歌的ML Kit和TensorFlow Lite为开发者提供了便捷的集成工具,使得应用能实现图像识别、文本转换等功能,提升用户体验。尽管面临数据隐私和安全性的挑战,但随着技术进步,更强大的AI功能将预示着移动端的未来,为开发者创造更多创新机遇。
|
2月前
|
Android开发
Android 高通平台集成无源码apk示例
Android 高通平台集成无源码apk示例
41 0