记录下react native 爬的坑
《一》base-64 编码转换
使用第三方模块base-64
git地址:https://github.com/mathiasbynens/base64
1 | $npm install base-64 |
引入
1 | var base64 = require('base-64'); |
《二》安卓打包
主流程见react native官网:http://reactnative.cn/docs/0.48/signed-apk-android.html#content
以下步骤需注意:
a.当前文件的操作权限是否可用,最好在android studio的命令行里敲打包命令。
b.npm start的服务要是开启状态
步骤:
1.进入java/jdk/bin生成key
1 | $ keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000 |
2.把my-release-key.keystore文件放到你工程中的android/app文件夹下。
3.编辑你项目目录下的android/app/build.gradle,添加如下的签名配置:
1 | signingConfigs { |
4.建议用android studio打包,也可以按下面的步骤来。
4.修改混淆文件:proguard-rules.pro
最后加上(启动混淆后需清空缓存 Android Studio Build > Clean Project, 否则可能会报错。):
1 | -keep class android.text {* ;} |
5.打包
1 | $./gradlew assembleRelease |
《三》Error:Could not expand ZIP *.aar
出现这种情况一般是权限问题,删除报错的build文件夹。
1 | cd android && gradlew clean && cd .. && react-native run-android |
《四》项目启动后,APP空白
检查依赖包是否安装正确,这里要注意cnpm安装的不一定对,最好使用最新的npm装。
升级npm
1 | npm i -g npm@latest |
设置npm代理地址,命令如下:
1 | npm config set registry http://registry.cnpmjs.org |
《五》react native中settimeout在调试模式下无效
这个是一个小坑,代码里有请求超时的设置,但是在chrome调试时咋都不起作用,最终定位问题是因为我设备的时间和调试PC的时间不一致。RN调取的时间差不对。
《六》Android键盘把tabbar顶起&&禁止横屏
修改安卓的xml配置:
1 | <activity |