如何在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
相关产品推荐
相关产品推荐

