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

ZXing 3.1.0-beta2在Visual Studio 2022的Xamarin.Android发布模式下启动扫码时应用崩溃

ZXing 3.1.0-beta2在Visual Studio 2022的Xamarin.Android发布模式下启动扫码时应用崩溃

看起来你碰到了Xamarin.Android发布模式下ZXing扫码崩溃的棘手问题,我来帮你拆解下错误原因并给出实际的解决思路:

错误核心分析

从你提供的崩溃日志来看,问题根源是android.view.InflateException——在加载support_simple_spinner_dropdown_item布局时,无法解析某个主题属性。这大概率和发布模式下的代码混淆/资源压缩或者主题配置不兼容有关,毕竟Debug模式一切正常,说明逻辑本身是通的,只是Release模式的优化操作破坏了ZXing依赖的资源或代码。

具体解决步骤

1. 调整发布模式的混淆与资源压缩设置

Xamarin.Android在Release模式默认会开启R8/ProGuard混淆和资源压缩,很可能误删了ZXing扫码页面需要的类或资源:

  • 新建或修改项目中的ProGuard.cfg文件,添加以下规则来保留ZXing相关的类:
    -keep class crc6480997b3ef81bf9b2.** { *; }
    -keep class com.google.zxing.** { *; }
    -keep class zxing.** { *; }
    -keep class crc64** { *; }
    
  • 暂时关闭资源压缩功能:右键项目→属性→Android选项→发布→高级,取消勾选“Enable Resource Shrinking”,先测试是否解决问题,之后再按需配置资源保留规则。

2. 修复主题配置问题

错误日志提到主题属性解析失败,说明ZXing的扫码Activity没有使用正确的主题:

  • 在AndroidManifest.xml中给ZXing的Activity指定明确的兼容主题,比如:
    <activity 
        android:name="crc6480997b3ef81bf9b2.ZxingActivity" 
        android:theme="@style/Theme.Material.Light.DarkActionBar" />
    
  • 确保你的应用全局主题继承自完整的Material或AppCompat主题,在Resources/values/styles.xml中:
    <style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
        <!-- 保留必要的主题属性,比如textColorPrimary等 -->
    </style>
    

3. 升级ZXing包到稳定版

你当前使用的是3.1.0-beta2测试版,本身就可能存在未修复的兼容性bug。建议直接升级到最新的稳定版ZXing.Mobile NuGet包(目前最新稳定版是4.x系列),稳定版通常会针对发布模式的混淆、资源问题做专门优化。

4. 优化相机权限的处理逻辑

你的权限请求代码存在小瑕疵,请求权限后没有更新状态,可能导致后续逻辑判断错误:

private async Task<string> GetScan(EditText Target, EditText NextEdit) 
{
    ZXing.Result result = null;
    var cameraStatus = await Permissions.CheckStatusAsync<Permissions.Camera>();
    
    if (cameraStatus != PermissionStatus.Granted) 
    {
        cameraStatus = await Permissions.RequestAsync<Permissions.Camera>();
        if (cameraStatus != PermissionStatus.Granted) 
        {
            ShowAlert("Permission", "No Permission", "Continue");
            return "";
        }
    }
    
    try 
    {
        var scanner = new ZXing.Mobile.MobileBarcodeScanner();
        result = await scanner.Scan();
        if (result != null && !string.IsNullOrEmpty(result.Text)) 
        {
            scanner.Cancel();
        }
    } 
    catch (Exception e) 
    {
        ShowAlert("Title", e.Message, "Button");
    }
    
    if (result == null) return "";
    
    KingsScanOrdersBiz.PlayTone(Tone.PropAck, 80, 110);
    return result.Text;
}

排查顺序建议

先尝试升级ZXing包,这是最省心的解决方案;如果不行再调整混淆规则;最后检查主题配置。大部分情况下,beta版的bug或混淆误删资源是这类问题的元凶。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 07:28:09