Angular Ionic Native-条形码扫描仪不';不能在生产中工作

Angular Ionic Native-条形码扫描仪不';不能在生产中工作,angular,ionic4,ionic-native,Angular,Ionic4,Ionic Native,我正在完成一个应用程序。 调试APK工作正常,而用于在存储上发布的已签名版本工作不正常,使我无法检查错误 问题与我添加到项目中的条形码扫描仪有关 $ ionic cordova plugin add phonegap-plugin-barcodescanner $ npm install @ionic-native/barcode-scanner 我不明白为什么这两个APK的行为不同 我想这可能是权限问题,但我没有找到 足够多的文档奇怪!我最近一直在使用相同的条形码扫描仪,在调试模式下,它工

我正在完成一个应用程序。 调试APK工作正常,而用于在存储上发布的已签名版本工作不正常,使我无法检查错误

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

$ ionic cordova plugin add phonegap-plugin-barcodescanner

$ npm install @ionic-native/barcode-scanner
我不明白为什么这两个APK的行为不同

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

奇怪!我最近一直在使用相同的条形码扫描仪,在调试模式下,它工作得很好

当我更改包名时,它将所有内容重置为默认值,因此我再次被要求获得权限

这次作为实验,我否认了这一点

应用程序出现错误“错误:非法访问”

你有什么办法来解决这些问题吗

这就是我所拥有的:

  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);
    }
  }
你需要根据你的情况稍微调整一下,但它显示了试捕的基本思想

My
showAutoDismissToast
没有什么特别之处,只是一个标准片段:

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

    await toast.present();
  }

希望通过这样的方式,可以消除妨碍扫描仪工作的错误。

奇怪!我最近一直在使用相同的条形码扫描仪,在调试模式下,它工作得很好

当我更改包名时,它将所有内容重置为默认值,因此我再次被要求获得权限

这次作为实验,我否认了这一点

应用程序出现错误“错误:非法访问”

你有什么办法来解决这些问题吗

这就是我所拥有的:

  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);
    }
  }
你需要根据你的情况稍微调整一下,但它显示了试捕的基本思想

My
showAutoDismissToast
没有什么特别之处,只是一个标准片段:

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

    await toast.present();
  }
希望将类似的东西放进去,可以解决妨碍扫描仪工作的错误。

我“解决”了以下问题:

// import { BarcodeScanner } from '@ionic-native/barcode-scanner/ngx';

// private barcodeScanner: BarcodeScanner,

barcodeScanner = (<any>window).cordova.plugins.barcodeScanner;
//从'@ionic native/barcode scanner/ngx'导入{barcode scanner};
//专用条形码扫描仪:条形码扫描仪,
条形码扫描仪=(窗口).cordova.plugins.barcodeScanner;
我“解决”了以下问题:

// import { BarcodeScanner } from '@ionic-native/barcode-scanner/ngx';

// private barcodeScanner: BarcodeScanner,

barcodeScanner = (<any>window).cordova.plugins.barcodeScanner;
//从'@ionic native/barcode scanner/ngx'导入{barcode scanner};
//专用条形码扫描仪:条形码扫描仪,
条形码扫描仪=(窗口).cordova.plugins.barcodeScanner;
权限

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

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

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

完成。

权限

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

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

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

完成。

“此权限”:那是哪种权限?“此权限”:那是哪种权限?