1.项目中使用了babel-preset-react-app库直接使用以下命令打包js资源
react-native bundle --platform android --dev false --entry-file src/index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res/
会报:
Using babel-preset-react-app
requires that you specify NODE_ENV
or BABEL_ENV
异常
处理方法:
1.在项目根目录创建.babelrc文件,代码如下:
{
"presets": ["module:metro-react-native-babel-preset"],
"env": {
"production": {
}
},
"plugins": [
["@babel/plugin-proposal-decorators", { "legacy": true }]
]
}
2.导入cross-env,不导入此库,BABEL_ENV命令无法找到
npm i cross-env
通过以下命令打包:
cross-env BABEL_ENV=production react-native bundle --platform android --dev false --entry-file src/index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res/
BABEL_ENV有三种方式选择:1.test, 2:development, 3:production
2.assembleRelease打包失败Duplicate file
旧版本的打包方式是把资源放在了\ android \ app \ src \ main \ res下,新版的打包方式是在编译的\android\app\build\intermediates\res\merged$(buildType)下,所以会造成重复文件的问题,导致导致任务“processReleaseResources”失败
解决方法是把\android\app\src\main\res文件夹下的带有drawable-xxxx的文件夹删掉就可以了