离子原生 - 条形码扫描仪在生产中不起作用 apk



我正在完成一个应用程序。调试APK工作正常,而用于在商店中发布的签名版本无法正常工作,从而阻止我检查错误。

该问题与我添加到项目中的条形码扫描仪有关

$ ionic cordova plugin add phonegap-plugin-barcodescanner
$ npm install @ionic-native/barcode-scanner

我不明白为什么两个apk的行为不同。

我想这可能是权限问题,但我没有找到足够的文档

我用这个"解决"了这个问题:

// import { BarcodeScanner } from '@ionic-native/barcode-scanner/ngx';
// private barcodeScanner: BarcodeScanner,
barcodeScanner = (<any>window).cordova.plugins.barcodeScanner;

权限

<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="android.permission.CAMERA" />

我通过在/platform/app/src/main/AndroidManifest 添加此权限来解决此问题.xml

重新编译您的应用程序,然后它将询问用户访问相机的权限。

做。

奇怪!我最近一直在使用同一个条形码扫描仪,在调试模式下,它工作正常。

当我更改包名称时,它会将所有内容重置为默认值,因此再次要求我授予权限。

这次作为实验,我否认了。

该应用程序给出了错误"错误:非法访问"。

你有什么东西可以解决这类问题吗?

这是我所拥有的:

  async scanCode() {
    try {
      let barcodeData: BarcodeScanResult = await this.barcodeScanner.scan(this.barcodeScannerOptions);
      if (barcodeData.cancelled) {
        await this.msg.showAutoDismissToast("QR code scan cancelled");
        this.analytics.trackEvent("QR code scan cancelled");
        return;
      }
      this.addScannedDataToList(barcodeData);
      const scanResultModal = await this.modalController.create({
        component: ScanResultModalPage
      });
      await scanResultModal.present();
      await this.msg.showAutoDismissToast("QR code scanned");
    } catch (err) {
      await this.msg.showAutoDismissToast("Error: " + err);
    }
  }

您需要根据您的情况对其进行一些调整,但它显示了尝试捕获的基本思想。

我的showAutoDismissToast没有什么花哨的,只是一个标准的片段:

  async showAutoDismissToast(message) {
    let toast = await this.toastController.create({
      message,
      duration: 2000,
      position: 'bottom'
    });
    await toast.present();
  }

希望放入这样的东西会发现阻止扫描仪工作的错误。

最新更新