我必须构建一个具有扫描条形码功能的移动应用程序 . 此应用程序需要能够使用激光扫描仪或相机扫描条形码,具体取决于设备 .

带摄像头的第二种情况非常简单,因为我使用了Expo框架,它提供了一个非常方便使用的库

https://docs.expo.io/versions/latest/sdk/bar-code-scanner.html

在第一种情况下,我需要使用带有android 4.0 Kitkat的Zebra设备来使用激光扫描仪扫描条形码,并且实现更复杂 . 我需要使用react-native-datawedge-intents库:

https://www.npmjs.com/package/react-native-datawedge-intents

在这种情况下,我不能使用世博会,我不得不做弹出,以便能够链接库 . 要在TC75 / Zebra设备上运行应用程序,您必须首先构建可以独立部署的捆绑包 . 请注意,您将无法访问React Native中的实时重新加载功能

react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res/

然后在设备上上传应用程序(我正在使用纱线)

yarn run android

对于带有摄像头的设备,Zebra设备的部署需要花费更多的时间(世博会更强大)在这两种情况下,应用程序看起来都是一样的 . 唯一的区别将是您扫描条形码的方式 . 我的第一个想法是创建项目结构如下:

  • 移动开发

  • 斑马设备

  • 相机设备

  • 分享

在共享项目中,我会存储常见的组件,如LoginScreen,PasswordResetScreen,样式等,但我在这种解决方案中看到了一些缺点 . 第一个问题是共享文件夹和node_modules中的模块之间的依赖关系 . 我试图从相机设备项目中的共享文件夹链接一些Sample组件,只是为了检查它是否有效并出现错误:

无法解决../shared/Sample " from "./D:\react-native\lynx-mobile\camera-device•App.js:无法找到模块../shared/Sample“

直到现在我正在开展两个独立的项目 . 由于两个项目中90%的代码几乎相同,因此存在大量冗余 . 两次执行一件事很烦人 . 想问你们,上述案例的正确方法是什么?干杯