React Native的版本升级插件(仅是android), react-native版本需要0.17.0及以上
npm install react-native-upgrade-android --save
npm link
link成功命令行会提示
npm info Linking react-native-upgrade-android android dependency
#####Android
// file: android/settings.gradle
...
include ':react-native-upgrade-android'
project(':react-native-upgrade-android').projectDir = new File(settingsDir, '../node_modules/react-native-upgrade-android/android')
// file: android/app/build.gradle
...
dependencies {
...
compile project(':react-native-upgrade-android')
}
android/app/src/main/java/<你的包名>/MainActivity.java
中,public class MainActivity
之前增加:
import com.lenny.modules.upgrade.UpgradeModule;
如果react-native-版本 <0.18.0
.addPackage(new MainReactPackage())
之后增加:
.addPackage(new UpgradPackage())
如果react-native-版本 >=0.18.0
在new MainReactPackage()
之后增加
,new UpgradePackage()
import Upgrade from 'react-native-upgrade-android';
// 使用前必须初始化
类似如下:
componentDidMount() {
const {
isSet,
} = this.props;
if (Platform.OS !== 'ios') {
Upgrade.init();
}
}
开始下载
// 参数信息
downloadUrl: 下载apk地址(绝对地址)String
version: 要下载的版本号 (防止重复下载)String
fileName: 保存的文件名 String
类似如下:
componentDidMount() {
const {
isSet,
} = this.props;
if (Platform.OS !== 'ios') {
Upgrade.init();
DeviceEventEmitter.addListener('progress', (e) => {
if (e.code === '0000') { // 开始下载
this.setState({
isLoading: true,
});
} else if (e.code === '0001') { // 下载中,更新进度条
this.setState({
fileSize: e.fileSize,
downSize: e.downSize,
});
} else if (e.code === '0002') { // 下载完成
this.setState({
fileSize: e.fileSize,
downSize: e.downSize,
});
}
});
}
}