Xamarin Android - 如何使用powershell脚本在单个设备上部署不同版本的相同应用程序来更改清单文件中的包?

时间:2017-06-18 11:44:11

标签: android visual-studio powershell xamarin

我正在开发一个在Visual Studio 2015上开发的Xamarin应用程序(Xamarin.Forms,但该应用程序仅在Android中可用)

我的porpouse将部署到我的测试平板电脑2个版本的相同App,一个是测试版本,一个是生产版本。

我正在尝试在平板电脑连接的Visual Studio上启动调试。

我明白如果我更改清单文件中的包属性,目标就会实现。

我手动尝试了,一切似乎都按预期工作,每次我更改它,我都会在平板电脑上收到不同版本的应用程序。

现在我想手动制作它。

我创建了2个新的build(build - >配置管理器)配置,每个版本的我要部署的应用程序

我在powershell中编写了一个脚本来更改清单文件中的属性。 使用脚本我甚至更改“应用程序android:label”,因此我可以在部署的应用程序上检查新名称。在powershell命令提示符上启动它可以很好地工作。

我在visual studio的项目属性的prebuild event命令中调用了这个脚本。

PowerShell -ExecutionPolicy Unrestricted -File "$(SolutionDir)Update-PackageName.ps1" $(ProjectDir) $(ConfigurationName)

脚本接收配置名称,因此包名称将根据配置而改变。

这样的事情:



    param ([string] $ProjectDir, [string] $ConfigurationName)

    $ManifestPath = $ProjectDir + "Properties\AndroidManifest.xml"

    [xml] $xdoc = Get-Content $ManifestPath

    $package = $xdoc.manifest.package
    $appname = $xdoc.manifest.application.label

    $package = $package.Replace("TESTING_APP", "")
    $package = $package.Replace("RELEASE_APP", "")
    $appname = "SOME_NAME"

    If ($ConfigurationName -eq "TESTING_APP")
    { 
        $package = $package + "TESTING_APP" 
        $appname = "SOME_NAME_TESTING"
    }
    If ($ConfigurationName -eq "RELEASE_APP")
    { 
        $package = $package + "RELEASE_APP" 
        $appname = "SOME_NAME_RELEASE"
    }
    If ($package -ne $xdoc.manifest.package) 
    {
        $xdoc.manifest.package = $package
        $xdoc.manifest.application.label = $appname
        $xdoc.Save($ManifestPath)
    }

脚本被调用没有问题,当我启动调试器时,我看到清单正在按需要更改,新应用程序按预期部署。

手动更改清单文件的区别在于,如果使用prebuild event命令中调用的powershell脚本执行作业,我会看到平板电脑上的旧应用程序消失。

是否已删除? 它被改写了吗? 我缺少什么?

0 个答案:

没有答案