Можно ли динамически указывать имя пакета во время сборки?

Я хотел бы одновременно развернуть сборки Debug и Release на своем устройстве. Я могу это сделать, если я вручную изменил имя пакета в манифесте до его сборки, например, измените

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="my.package"> 

в

 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="my.packageDEBUG"> 

Тем не менее, я бы хотел сделать это автоматически, когда создаю решение. Если я создам сборку Debug, он будет package="my.packageDEBUG" с package="my.packageDEBUG" в манифесте.

Возможно ли это, и если да, то как?

Вам необходимо создать пользовательское Pre-Build Event для вашего проекта.

Щелкните правой кнопкой мыши свой проект и выберите «Свойства» …

Затем нажмите «Build Events» и добавьте это в текстовое поле «Pre-build event»:

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

Скопируйте следующий сценарий PowerShell и сохраните его в папке решения как Update-PackageName.ps1

 param ([string] $ProjectDir, [string] $ConfigurationName) Write-Host "ProjectDir: $ProjectDir" Write-Host "ConfigurationName: $ConfigurationName" $ManifestPath = $ProjectDir + "Properties\AndroidManifest.xml" Write-Host "ManifestPath: $ManifestPath" [xml] $xdoc = Get-Content $ManifestPath $package = $xdoc.manifest.package If ($ConfigurationName -eq "Release" -and $package.EndsWith("DEBUG")) { $package = $package.Replace("DEBUG", "") } If ($ConfigurationName -eq "Debug" -and -not $package.EndsWith("DEBUG")) { $package = $package + "DEBUG" } If ($package -ne $xdoc.manifest.package) { $xdoc.manifest.package = $package $xdoc.Save($ManifestPath) Write-Host "AndroidManifest.xml package name updated to $package" } 

Удачи!