You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Xamarin Android预构建脚本中获取Android API Level实现文件替换

Xamarin Android 预构建版本校验与文件替换Batch实现方案

可以通过batch脚本实现该需求,具体实现逻辑和配置方法如下:

1. 核心实现步骤

  • 解析项目根目录下的AndroidManifest.xml文件,提取android:targetSdkVersion属性对应的目标版本号
  • 根据提取到的版本号匹配对应版本的待替换源文件
  • 校验文件存在性后执行覆盖替换操作

2. 可用Batch脚本示例

@echo off
setlocal enabledelayedexpansion

:: --------------- 此处修改为你的项目实际路径 ---------------
:: AndroidManifest.xml路径
set "MANIFEST_PATH=Properties\AndroidManifest.xml"
:: 不同版本对应文件的存放根目录
set "VERSION_FILE_ROOT=.\CustomVersionFiles"
:: 需要被替换的目标文件完整路径
set "TARGET_FILE=.\Resources\raw\config.json"
:: --------------------------------------------------------

:: 提取目标SDK版本号
for /f "tokens=* delims=" %%l in ('findstr /r "android:targetSdkVersion=\"[0-9]*\"" "%MANIFEST_PATH%"') do (
    set "line_content=%%l"
    :: 提取属性值中的纯数字版本号
    for /f "tokens=2 delims==" %%v in ("!line_content:*android:targetSdkVersion=!") do (
        set "target_version=%%v"
        set "target_version=!target_version:"=!"
    )
)

:: 版本提取校验
if not defined target_version (
    echo [预构建错误] 无法从AndroidManifest.xml提取targetSdkVersion
    exit /b 1
)

:: 匹配对应版本的源文件,可根据你的文件命名规则调整
set "SOURCE_FILE=%VERSION_FILE_ROOT%\config_v%target_version%.json"
if not exist "%SOURCE_FILE%" (
    echo [预构建错误] 未找到Android %target_version% 对应的配置文件:%SOURCE_FILE%
    exit /b 1
)

:: 执行替换
copy /y "%SOURCE_FILE%" "%TARGET_FILE%" > nul
echo [预构建提示] 已成功替换Android %target_version% 对应的配置文件

endlocal

3. 预构建事件配置方法

  • 右键Xamarin Android项目 → 选择「属性」
  • 切换到「生成事件」选项卡
  • 在「预生成事件命令行」输入框中填写脚本调用命令:call 你的脚本完整存储路径\replace_version_file.bat
  • 保存项目配置即可,后续每次构建前都会自动执行版本校验和文件替换操作

注意事项

  • 若你的AndroidManifest.xml中uses-sdk标签格式特殊(如属性换行、自定义空格规则),需要调整脚本中提取版本号的解析逻辑适配你的文件格式
  • 脚本中的文件路径、命名规则可根据你的实际业务需求修改,无需完全匹配示例规则
  • 若构建时报权限错误,给脚本、源文件目录、目标文件目录添加当前用户的读写权限即可

内容的提问来源于stack exchange,提问作者Nilufar Makhmudova

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 08:27:02