Android 31+中cordova-plugin-scanbot-sdk正式构建版本无法运行
解决方案
1. 修正权限配置方式
你的edit-config可能未正确合并到AndroidManifest.xml,建议直接在config.xml中添加独立的权限标签,而非嵌套在edit-config内:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-feature android:name="android.hardware.camera" android:required="true" /> <uses-feature android:name="android.hardware.camera.autofocus" /> <!-- 适配Android 13+ 存储权限 --> <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
配置完成后,检查platforms/android/app/src/main/AndroidManifest.xml,确认这些权限已成功写入。
2. 配置混淆豁免规则
正式构建默认开启代码混淆,可能会破坏Scanbot SDK的核心类。在platforms/android/app/proguard-rules.pro中添加以下规则:
-keep class io.scanbot.** { *; } -dontwarn io.scanbot.**
同时在config.xml中确保混淆配置正确(若开启混淆):
<preference name="AndroidEnableProguard" value="true" /> <preference name="AndroidProguardConfiguration" value="proguard-rules.pro" />
3. 手动触发动态权限请求
部分场景下正式版插件的自动权限请求逻辑可能失效,可在调用扫描功能前手动申请权限:
document.addEventListener("deviceready", function() { // 先安装cordova-plugin-android-permissions插件 cordova.plugins.permissions.requestPermissions( [cordova.plugins.permissions.CAMERA, cordova.plugins.permissions.READ_EXTERNAL_STORAGE], function(status) { if (status.hasPermission) { // 权限通过后调用扫描插件 ScanbotSDK.startScanner({ // 你的扫描参数配置 }); } else { console.error("权限被拒绝"); } }, function(error) { console.error("权限请求失败: ", error); } ); }, false);
执行以下命令安装权限插件:
cordova plugin add cordova-plugin-android-permissions
4. 检查正式版构建日志
通过 verbose 模式构建正式包,查看是否有权限合并失败、SDK初始化错误等信息:
cordova build android --release --verbose
重点关注AndroidManifest.xml合并过程、Scanbot SDK相关的警告或报错。
5. 排查签名与构建配置差异
正式版使用的签名密钥可能与调试版不同,确认是否因签名限制导致SDK功能异常。同时对比调试版与正式版的build.gradle配置,排查是否存在禁用相机或权限的设置。
调用插件时的界面截图:
内容的提问来源于stack exchange,提问作者Diego
相关产品推荐
相关产品推荐

