【问题标题】:Changing default APK output to include version in the name using MSBuild使用 MSBuild 更改默认 APK 输出以在名称中包含版本
【发布时间】:2019-10-18 02:36:03
【问题描述】:

在使用 MSBuild 构建 APK 时,我想更改输出 apk 名称以包含版本号

所以

android:versionName="3.1.5"

最终会是这样的:

MyAndroidApp-3.1.5.apk

我尝试执行构建后步骤,尝试将 apk 复制到其他名称,但构建后步骤中没有任何宏具有版本(我可以看到)

打电话时

MSBuild .\trunk\TaxiTabletUniversal.Droid.MyAndroidProject /t:SignAndroidPackage  /p:Configuration=Release 

输出 apk 以名称结尾:

company_name.mypackage_name-Signed.apk

在 Android 包签名设置中,我只能指定密钥库和密码,但不能指定输出名称。

我希望输出名称获取

中的 versionName

AndroidManifest.xml

文件

【问题讨论】:

    标签: xamarin msbuild apk visual-studio-2019


    【解决方案1】:

    更改默认 APK 输出以在名称中包含版本 微软构建

    很抱歉,答案可能是否定的,因为我知道 MSBuild 本身无法从 AndroidManifest.xml 读取诸如版本号之类的数据。换句话说,它不受 msbuild 的支持。

    MSBuild 可以访问在项目文件或导入的目标文件中定义的任何property,但它不能访问AndroidManifest.xml 文件。并且没有官方的msbuild task 可以为我们提供此功能,因此如果您确实需要此行为,我们必须自己编写代码以从该 xml 文件中读取版本信息。关于这个的话题:onetwothree...(网上的话题太多了,这里就不多说了,如果你遇到关于编码的问题,请告诉我: - ))

    编码后有两种可能的方法:

    1.使用代码创建.exe文件以执行重命名作业,并在构建后事件中调用.exe

    2.编写一个名为CustomTask的custom task,并将此脚本添加到项目文件中,以便在buildSignAndroidPackage目标之后调用此任务。

      <UsingTask TaskName="CustomTask.CustomTask"
            AssemblyFile="path\CustomTask.dll"/>
    
      <!--Maybe it should be AfterTargets="SignAndroidPackage"-->
      <Target Name="CustomTarget" AfterTargets="Build">
        <CustomTask/>
      </Target>
    

    愿它有所帮助。

    【讨论】:

      猜你喜欢
      • 2020-02-13
      • 1970-01-01
      • 1970-01-01
      • 2015-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-09
      相关资源
      最近更新 更多