android - 是否可以在构建期间动态指定包名称?

标签 android xamarin xamarin.android

我想同时将调试和发布版本部署到我的设备。如果我在构建之前手动更改 list 中的包名称,我可以这样做,例如改变

<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">

但是,我想在构建解决方案时自动执行此操作。如果我进行调试构建,它将在 list 中使用 package="my.packageDEBUG" 进行构建。

这是否可能,如果可能,如何实现?

最佳答案

您需要为您的项目创建自定义预构建事件。

右键单击您的项目并选择属性...

然后单击构建事件并将其添加到预构建事件文本框中:

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"
}

祝你好运!

关于android - 是否可以在构建期间动态指定包名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27798862/

相关文章:

android - 具有 DatePicker 回调的 fragment 中的非默认构造函数

在 Android 上使用 ClipData 时出现 JavaSecurityException

c# - AvPlayer 正在下载 mp3 而不是流式传输

iOS 7 - 长时间运行的后台任务

android - Android 中的嵌套形状

android - Xamarin Android Google 登录 OnConnected 回调从未抛出

android - 在 Jetpack Compose 的无状态 Compose 中管理条件逻辑

Android嵌入条码阅读器

android - Xamarin AndroidManifest.xml 与 Visual Studio 中的不同

c# - Xamarin - 在 WebView 中请求相机权限