1

我正在运行一个 powershell 脚本来自动化我为一个 android 项目构建我的 apk。我可以传入一个应用程序版本代码和名称,我的构建脚本将使用它来替换 AndroidManifest.xml 文件中的这些参数。

我有两条线需要更换。xml文件中的原始行如下:

android:versionCode="1"
android:versionName="Version 1"

然后我运行两个不同的命令来替换每一行的文本,它们如下:

(Get-Content "$fullOutputPath\$projectFileName\AndroidManifest.xml") | ForEach-Object {$_ -replace "(android:versionCode=`")1(`")", "`$1$versionCode`$2"} | Set-Content "$fullOutputPath\$projectFileName\AndroidManifest.xml";
(Get-Content "$fullOutputPath\$projectFileName\AndroidManifest.xml") | ForEach-Object {$_ -replace "(android:versionName=`")1\.0(`")", "`$1$versionName`$2"} | Set-Content "$fullOutputPath\$projectFileName\AndroidManifest.xml";

为了测试我传入的参数,versionCode 为“2”,版本名称为“Version 1”。生成的 xml 文件如下所示:

$12"
android:versionName="Version 1"

所以你可以看到第二个正则表达式替换工作得很好,第一个没有。我似乎无法理解为什么或如何解决它。

谢谢你的帮助!

4

1 回答 1

0

将替换表达式更改为:

"`${1}$versionCode`$2"

PowerShell$versionCode在将其移交给正则表达式之前替换了第一个。正则表达式看到 12 美元,但没有第 12 个捕获组。

于 2013-10-23T18:19:44.000 回答