文章目录
1. code-push 官网申请账号
2. react-native 中安装 react-native-code-push
npm install --save react-native-code-push
or
yarn add react-native-code-push
3. ios 配置
1, 在项目根目录下命令行运行 cd ios && pod install && cd … 进行 ios pod 安装
2, 在AppDelegate.m文件,添加一个CodePush头的导入语句
#import <CodePush/CodePush.h>
3, 在AppDelegate.m文件找到
return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
替换为
return [CodePush bundleURL];
4, 配置 Deployment key (注:此处教程将会和官方有出入,此步骤提前进行根据运行环境进行动态配置,方便后续进行开发。若有疑问可先安排官网进行配置测试功能)
注: 可能存在的问题,进行Release运行时可正常更新,但是Staging版本时,会出现报错,无法正常build成功。
1,尝试重新进行pod install操作
2, xcode → product → clean build folder
tips: 若还是无法build成功,尝试重新运行几次。
注:需要生成release/releaseStaging apk 进行测试,切勿直接运行 android studio
4. android 配置
1, 在 android/settings.gradle 中新增如下语句
include ':app', ':react-native-code-push'
project(':react-native-code-push').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-code-push/android/app')
2, 在 android/app/build.gradle 中找到
apply from: “…/…/node_modules/react-native/react.gradle”
新增如下语句
apply from: "../../node_modules/react-native-code-push/android/codepush.gradle"
3, 更新 MainApplication.java 文件
找到 new ReactNativeHost 中重写 getJSBundleFile 方法
// 1. Import the plugin class.
import com.microsoft.codepush.react.CodePush;
public class MainApplication extends Application implements ReactApplication {
private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
...
// 2. Override the getJSBundleFile method in order to let
// the CodePush runtime determine where to get the JS
// bundle location from on each app start
@Override
protected String getJSBundleFile() {
return CodePush.getJSBundleFile();
}
};
}
4, 配置 Deployment key (注:此处教程将会和官方有出入,此步骤提前进行根据运行环境进行动态配置,方便后续进行开发。若有疑问可先安排官网进行配置测试功能)
注:需要生成release/releaseStaging apk 进行测试,切勿直接运行 android studio
5. React-Native 使用插件
在组件中进行注册
import codePush from "react-native-code-push";
class MyApp extends Component {
}
MyApp = codePush(MyApp);
在方法中进行注册
import codePush from "react-native-code-push";
let MyApp: () => React$Node = () => {
}
MyApp = codePush(MyApp);
6,code-push 基本命令
生成Staging包
code-push release-react MyApp-Android android --t 1.0.0 --des “更新日志内容”
生成Production包
code-push release-react MyApp-Android android --t 1.0.0 --dev false --d Production --des “更新日志内容” --m true
Staging 最新的codepush代码到 Production(你申请的Android/ios的名字)
appcenter codepush promote -a /MyApp-Android -s Staging -d Production
删除 android/ios 生产环境下的部署包 MyApp-Android/MyApp-IOS (你申请的Android/ios的名字)
code-push deployment clear MyApp-Android/MyApp-IOS Production
code-push deployment clear MyApp-Android/MyApp-IOS Staging
例如: code-push deployment clear MyApp-Android Productio