Xamarin.Android android:versionCode android:versionName - 来自 Jenkins 构建服务器
·
问题:Xamarin.Android android:versionCode android:versionName - 来自 Jenkins 构建服务器
我们有一个独特的情况,我们正在将 Xamarin.Android 应用程序部署到中国的 33 个应用程序商店。因此,我们的解决方案有 33 个应用程序项目,我们设置 Jenkins(在 Windows 上运行)来打包和签署我们所有的 apk(否则构建会很疯狂)。
我们还需要使用 Jenkins 中的${SVN_REVISION}
值修改清单文件中的android:versionCode
和android:versionName
。有没有办法将这些值命令行传递给 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="<Namespace Prefix='android' Uri='http://schemas.android.com/apk/res/android' />" Query="manifest/@android:versionCode" Value="$(SVN_REVISION)" />
<XmlPoke XmlInputPath="Properties\AndroidManifest.xml" Namespaces="<Namespace Prefix='android' Uri='http://schemas.android.com/apk/res/android' />" Query="manifest/@android:versionName" Value="2.0.$(SVN_REVISION)" />
</Target>
我已将 Jenkins 配置为通过 JENKINSu003d1 和 SVN_REVISION。当它去构建时,它会在构建之前修改AndroidManifest.xml
。
我不知道这是否适用于 Mac 上的 xbuild,取决于是否实现了XmlPoke
。我应该为此写一篇博文。
更多推荐
所有评论(0)