如何配置VS2019中Xamarin Android项目使开启链接时xamarin-fingerprint正常运行
Xamarin.Forms Android项目开启SDK链接时xamarin-fingerprint插件兼容配置方案
出现该问题的核心原因是Xamarin托管链接器在剪裁SDK程序集时,误删除了xamarin-fingerprint插件依赖的托管类型和调用入口,你之前配置的com.samsung.**过滤规则仅对ProGuard/R8生效,对托管链接器无作用,可按以下步骤配置解决:
步骤1:配置跳过链接的托管程序集
- 右键Android项目 → 选择「属性」→ 切换到「Android选项」页 → 找到「跳过链接程序集」输入框
- 输入以下程序集名称,多个程序集之间用分号分隔:
Plugin.Fingerprint;Plugin.Fingerprint.Abstractions - 保存项目配置,清理解决方案后重新编译运行。如果仍存在崩溃问题,继续执行后续步骤。
步骤2:添加链接器描述文件
部分场景下仅跳过指定程序集仍会出现依赖链剪裁问题,需要通过链接器描述文件显式指定保留所有插件相关类型:
- 在Android项目根目录新建XML文件,命名为
LinkerDescription.xml - 右键该文件 → 选择「属性」→ 将「生成操作」设置为
LinkDescription - 在文件中填入以下内容:
<?xml version="1.0" encoding="utf-8" ?> <linker> <assembly fullname="Plugin.Fingerprint"> <type fullname="*" /> </assembly> <assembly fullname="Plugin.Fingerprint.Abstractions"> <type fullname="*" /> </assembly> <assembly fullname="Mono.Android"> <type fullname="Android.Hardware.Fingerprint.*" /> <type fullname="AndroidX.Biometric.*" /> </assembly> </linker>
步骤3:补充Java层保留规则(适配高版本Android)
即使未手动开启ProGuard/R8,部分高版本Visual Studio在开启SDK链接时会默认触发基础的Java代码压缩,可补充规则避免插件的原生调用被剪裁:
- 在Android项目根目录新建
proguard.cfg文件 - 右键该文件 → 选择「属性」→ 将「生成操作」设置为
ProguardConfiguration - 在文件中填入以下内容:
-keep class com.samsung.android.sdk.pass.** { *; } -keep class androidx.biometric.** { *; } -keep class Plugin.Fingerprint.** { *; }
完成所有配置后,将链接器属性改为Sdk assemblies only,完全清理解决方案后重新编译部署到物理设备即可正常运行。
内容的提问来源于stack exchange,提问作者GordonS
相关产品推荐
相关产品推荐

