React-native 打包程序配置 - 如何将 .zip 文件包含在包中?
React-native packager configuration - How to include .zip file in bundle?
我的问题:
- 我有一个 zip 文件,其中包含我公司设备的固件更新
- 我希望能够通过以下代码使用 react-native-fs 访问它
.
export function readAssetFile(name) {
if(Platform.OS === 'ios') {
return RNFS.readFile(`${RNFS.MainBundlePath}/assets/data/${name}`);
} else {
return RNFS.readFileAssets(`raw/${name}`, 'base64');
}
}
我的项目结构如下:
ProjectDir
android
data
image1.png
image2.png
firmwarefile.zip
ios
android 分支有效,因为我在我的 .gradle 中添加了构建步骤以将 firmwarefile.zip 复制到 ProjectDir/android/app/src/main/assets/raw。所以我可以调用 readAssetFile('firmwarefile.zip'),它 returns 数据。
在 iOS,所有图像文件(Image1.png、Image2.png)都包含在 MyProject 中。app/assets/data/ 我无需执行任何操作,但 zip他们旁边的文件不是。
查看实际的打包程序代码(来自 metro 项目),似乎(基于 metro/src/defaults.js)打包程序默认不包含 zip 文件,但是packager 可以配置为包含其他文件类型。但是我找不到 任何 文档来说明我将如何进行配置。
很抱歉这个问题看起来很简单,但我已经尝试将此 zip 包含在我的包中大约 4 个小时了。我正在诉诸手动输入 console.logs 和错误抛出来跟踪 metro 内的东西,试图找到我应该在我的配置中发送的位置。
版本:
反应本机:0.55.3
地铁:0.30.2
这是一个 hack,但它完成了:
- 将您的 zip 二进制文件转换为 base64 字符串
- 把它放在 .js 文件中,la
module.exports = "<your base64 data goes here>"
- 在您需要 zip 文件的文件中,使用
import myZipFileAsBase64 from './hacky-base64-file.js';
这是一个快速创建 base64 文件的脚本:
var fs = require('fs');
function prepareZip(file, outJs) {
const b64 = fs.readFileSync(file, 'base64');
fs.writeFileSync(outJs, `module.exports = ${JSON.stringify(b64)};`);
}
prepareZip('./data/myFirmware.zip', './hacky-base64-file.js');
我的问题:
- 我有一个 zip 文件,其中包含我公司设备的固件更新
- 我希望能够通过以下代码使用 react-native-fs 访问它
.
export function readAssetFile(name) {
if(Platform.OS === 'ios') {
return RNFS.readFile(`${RNFS.MainBundlePath}/assets/data/${name}`);
} else {
return RNFS.readFileAssets(`raw/${name}`, 'base64');
}
}
我的项目结构如下:
ProjectDir
android
data
image1.png
image2.png
firmwarefile.zip
ios
android 分支有效,因为我在我的 .gradle 中添加了构建步骤以将 firmwarefile.zip 复制到 ProjectDir/android/app/src/main/assets/raw。所以我可以调用 readAssetFile('firmwarefile.zip'),它 returns 数据。
在 iOS,所有图像文件(Image1.png、Image2.png)都包含在 MyProject 中。app/assets/data/ 我无需执行任何操作,但 zip他们旁边的文件不是。
查看实际的打包程序代码(来自 metro 项目),似乎(基于 metro/src/defaults.js)打包程序默认不包含 zip 文件,但是packager 可以配置为包含其他文件类型。但是我找不到 任何 文档来说明我将如何进行配置。
很抱歉这个问题看起来很简单,但我已经尝试将此 zip 包含在我的包中大约 4 个小时了。我正在诉诸手动输入 console.logs 和错误抛出来跟踪 metro 内的东西,试图找到我应该在我的配置中发送的位置。
版本: 反应本机:0.55.3 地铁:0.30.2
这是一个 hack,但它完成了:
- 将您的 zip 二进制文件转换为 base64 字符串
- 把它放在 .js 文件中,la
module.exports = "<your base64 data goes here>"
- 在您需要 zip 文件的文件中,使用
import myZipFileAsBase64 from './hacky-base64-file.js';
这是一个快速创建 base64 文件的脚本:
var fs = require('fs');
function prepareZip(file, outJs) {
const b64 = fs.readFileSync(file, 'base64');
fs.writeFileSync(outJs, `module.exports = ${JSON.stringify(b64)};`);
}
prepareZip('./data/myFirmware.zip', './hacky-base64-file.js');