Xamarin.Android android:versionCode android:versionName - 来自Jenkins Build Server

 sweeteenring 发布于 2023-02-05 10:13

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

我们还需要修改android:versionCode,并android:versionName在清单文件中,通过使用${SVN_REVISION}从詹金斯值.有没有办法将这些值命令行传递给MSBuild?

通常我们会手动编辑这个值,但由于有这么多应用程序项目,所以不可能.

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

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

jonathanpepp.. 8

将其添加到*.csproj文件的末尾,在结束标记之前:

  
    
    
  

我让Jenkins配置为传递JENKINS = 1和SVN_REVISION.当它进行构建时,它会AndroidManifest.xml在构建之前进行修改.

我不知道这是否适用于Mac上的xbuild,取决于是否XmlPoke实现.我应该做一篇关于此的博客文章.

1 个回答
  • 将其添加到*.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实现.我应该做一篇关于此的博客文章.

    2023-02-05 10:16 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有