Xamarin项目构建失败:R8编译SpassFingerprint.class报错
解决方案:Xamarin归档APK时R8编译数组越界错误(pass-v1.2.0.jar)
这个错误源于新版R8代码收缩器与旧版Samsung PASS SDK(v1.2.0)的字节码结构不兼容,以下是可行的解决方法:
- 升级Samsung PASS SDK:把项目里的
pass-v1.2.0.jar替换为官方最新稳定版本,新版SDK会修复字节码适配问题,兼容Visual Studio 2022使用的现代Android编译工具链。 - 临时禁用R8代码收缩:打开Android项目属性,进入
Android Options->Packaging,取消勾选Enable R8 code shrinker选项。此方法会增大APK体积,但能快速绕过编译错误。 - 添加R8规则排除Samsung PASS类:如果必须保留旧版SDK和R8,在项目中创建
proguard.cfg文件,添加以下规则:
然后在Android项目属性的-keep class com.samsung.android.sdk.pass.** { *; } -dontwarn com.samsung.android.sdk.pass.**Packaging页面,将该文件指定为ProGuard/R8配置文件,让R8跳过对Samsung PASS类的字节码处理。 - 清理重建项目:手动删除项目的
obj和bin目录,重启Visual Studio后重新构建归档,清除缓存的中间编译文件可能解决异常。
内容的提问来源于stack exchange,提问作者dbuzin
相关产品推荐
相关产品推荐

