作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我们有一个独特的情况,我们正在将 Xamarin.Android 应用部署到中国的 33 个应用商店。因此,我们的解决方案有 33 个应用程序项目,我们设置 Jenkins(在 Windows 上运行)来打包和签署我们所有的 apk(否则进行构建会很疯狂)。
我们还需要修改 list 文件中的 android:versionCode
和 android: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="<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 配置为传递 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/
我是一名优秀的程序员,十分优秀!