android - Xamarin.Android 安卓 :versionCode android:versionName - From Jenkins Build Server

标签 android jenkins msbuild xamarin.android xamarin

我们有一个独特的情况,我们正在将 Xamarin.Android 应用部署到中国的 33 个应用商店。因此,我们的解决方案有 33 个应用程序项目,我们设置 Jenkins(在 Windows 上运行)来打包和签署我们所有的 apk(否则进行构建会很疯狂)。

我们还需要修改 list 文件中的 android:versionCodeandroid:versionName,使用 ${SVN_REVISION} 值 Jenkins 。有没有办法将这些值命令行传递给 MSBuild?

通常我们会手动编辑这个值,但由于应用项目太多,这是不可能的。

我们的构建参数现在在 Jenkins 中看起来像这样:

/p:Configuration=Release;AndroidKeyStore=True;AndroidSigningKeyStore=ourkeystore.keystore;AndroidSigningStorePass=ourpassword;AndroidSigningKeyAlias=ouralias;AndroidSigningKeyPass=ourpassword /t:SignAndroidPackage 

最佳答案

将此添加到 *.csproj 文件的末尾,在结尾 </Project> 之前标签:

  <Target Name="BeforeBuild" Condition=" '$(JENKINS)' == '1' ">
    <XmlPoke XmlInputPath="Properties\AndroidManifest.xml" Namespaces="&lt;Namespace Prefix='android' Uri='http://schemas.android.com/apk/res/android' /&gt;" Query="manifest/@android:versionCode" Value="$(SVN_REVISION)" />
    <XmlPoke XmlInputPath="Properties\AndroidManifest.xml" Namespaces="&lt;Namespace Prefix='android' Uri='http://schemas.android.com/apk/res/android' /&gt;" Query="manifest/@android:versionName" Value="2.0.$(SVN_REVISION)" />
  </Target>

我已将 Jenkins 配置为传递 JENKINS=1 和 SVN_REVISION。在构建时,它会修改 AndroidManifest.xml构建之前。

我不知道这是否适用于 Mac 上的 xbuild,取决于是否 XmlPoke实现。我应该就此写一篇博文。

关于android - Xamarin.Android 安卓 :versionCode android:versionName - From Jenkins Build Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21001327/

相关文章:

msbuild - Visual Studio Online 测试运行程序无法加载 SpecFlow dll

tfs - 如何自定义 TFS2010 构建以在日志中打印消息

java - 从左向右滑动从 ListView 中删除项目

android - ImageView 上的 drawCircle 坐标错误

jenkins - 如何在Jenkins Pipeline中区分构建触发器

c# - 自定义 MSBuild 任务 : how to flush logging in VS2012 output window while task is still running?

java - Android 加密/解密 sqlite 数据库 100% 安全

android - requestLocationUpdates 花费的时间太长

tomcat - jenkins在哪里存储作业和节点配置

perl - 远程触发构建后如何获取Jenkins "Console Output"?