Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React native React Native:如何打开本地绑定的二进制文件_React Native_React Native Fs - Fatal编程技术网

React native React Native:如何打开本地绑定的二进制文件

React native React Native:如何打开本地绑定的二进制文件,react-native,react-native-fs,React Native,React Native Fs,我正在编写一个react本机应用程序,我希望它使用包含设备固件更新的zip文件进行部署 在让用户发送更新之前,我需要我的代码打开zip并对其内容进行一些验证 我发现了很多处理NPM包的zip,所以我所需要做的就是加载文件内容,这样我就可以将它提供给其中一个 需要('./固件/fw.zip') 部分解决方案: 修改android/app/build.gradle,并添加 task copyData(type: Copy) { from '../../firmware/fw.zip'

我正在编写一个react本机应用程序,我希望它使用包含设备固件更新的zip文件进行部署

在让用户发送更新之前,我需要我的代码打开zip并对其内容进行一些验证

我发现了很多处理NPM包的zip,所以我所需要做的就是加载文件内容,这样我就可以将它提供给其中一个

  • 需要('./固件/fw.zip') 部分解决方案:

    修改android/app/build.gradle,并添加

    task copyData(type: Copy) {
        from '../../firmware/fw.zip'
        into 'src/main/assets/raw/firmware'
    }
    preBuild.dependsOn copyData
    
    这至少可以确保文件在每次生成时都会被复制,然后可以通过
    ReactNativeFs.readFileAssets('raw/firmware/fw.zip','base64')
    使用。我并不完全激动,因为我在加载文件时仍然需要依赖于iOS/android的代码,但至少现在正在加载


    提示:注意gradle中的语法
    进入src/main/assets/myFirmware.zip
    将创建一个名为myFirmware.zip的目录,并将zip文件放在它下面。然后readFileAssets仍然会失败,因为它在您的路径上找到的是一个目录,而不是一个文件。

    几个月后,我又遇到了这个问题(显然,我是唯一需要在react native中打包.zips的人),而上面的答案在iOS中不起作用。因此我将.zip编码为base64,将它们放入.js文件中,然后使用
    import
    从这些.js文件中获取数据。这实际上似乎是一个有点老套但也很灵活的长期解决方案,而不必处理依赖于平台的文件位置

    请看我的新问题的完整答案: