react-native-pack

1.2.2 • Public • Published

描述

rnpack是一个rn项目的打包构建工具,支持ios和android渠道提交,支持自建服务的增量更新

v1.2.2

新增支持android

v1.2.1

新增支持新版的xocdebuild

设计功能

命令工具安装

npm install rnpack-cli -g

rnpack工具使用

  • 打包android

    • 编译项目
    • rnpack buildApk --buildType {alpha|beta|release} --apkName {项目名称}
    • 上传
    • rnpack uploadApk --buildType {alpha|beta|release} --file {文件路径}
    • 发布到fir.im
    • rnpack firApk --token {fir.im的token} --apkName {项目名称} --buildType {alpha|beta|release} --file {文件路径}
    • 上传和发布到fir.im
    • rnpack publishApkFile --token {fir.im的token} --apkName {项目名称} --buildType {alpha|beta|release} --file {文件路径}
    • 总和以上的操作:编译 上传 发布
    • rnpack publishApk --token {fir.im的token} --buildType {alpha|beta|release} --apkName {项目名称}
  • 打包ios

    • 打包项目
    • rnpack archiveIpa --configuration {Alpha|Beta|Release} --scheme {项目名称} --provisioningProfile {证书配置}
    • 上传和发布到fir.im
    • rnpack publishIpaFile --token {fir.im的token} --configuration {Alpha|Beta|Release} --scheme {项目名称} --file {文件路径}
    • 总和以上的操作:编译 上传 发布
    • rnpack publishIpa --token {fir.im的token} --configuration {Alpha|Beta|Release} --scheme {项目名称} --provisioningProfile {证书配置}
  • 用户命令

    • 登陆(登陆成功后,会生成.rnpack_token的文件)
    • rnpack login
    • 登出
    • rnpack logout
    • 登陆用户信息
    • rnpack me
  • 项目命令

    • 创建
    • createApp
    • 删除
    • deleteApp
    • 列出
    • apps
    • 选择(会生成rnpack_app.json的文件,保存选择的项目key)
    • selectApp
    • 设置服务地址(会生成rnpack_app.json的文件,保存设置的服务器)
    • setHost
  • 打包热更新命令

    • 发布热更新版本
    • bundle
    • 比对差异
    • diff
    • 与apk文件的bundle比对差异
    • diffFromApk
    • 与ipa文件的bundle比对差异
    • diffFromIpa
  • 热更新与大版本的关联管理

    • 用文件发布热更新
    • publish
    • 列出所有热更新
    • versions
    • 更新关联
    • update
  • 1024图片直接替换ios和andorid项目图标,android图片支持圆角转换

    • 尚未完成

客户端使用

npm install react-native-pack --save

工具客户端库:

  • api

    • Env {alpha|beta|release} 打包环境变量
    • packageVersion 大版本号
    • currentBundle 热更新版本号
    • currentVersion 热更新hash值
    • isFirstTime 是否是热更新后的首次打开
    • isRolledBack 是否是热更新失败后的首次打开
    • getHost 热更新服务地址
    • checkUpdate 检查更新
    • downloadApk 下载android更新包
    • downloadUpdate 热更新
    • switchVersion 切换版本,立即执行
    • switchVersionLater 切换版本,下次执行
    • markSuccess 更新成功标记
  • 示例代码

import {Platform, Alert, Linking} from "react-native";
import {checkUpdate, packageVersion, currentVersion, downloadUpdate, switchVersion, Env, downloadApk} from "react-native-pack";
import _updateConfig from "../../rnpack_app.json";
const {appKey} = _updateConfig[Platform.OS];

const doUpdate = info => {
    console.log("doUpdate info:", info);
    downloadUpdate(info).then(hash => {
        console.log("doUpdate 应用更新");
        //不再提示,默认下次启动应用更新
        // Alert.alert('提示', '检查到新的版本'+info.name+',是否重启应用?', [
        //     {text: '立即重启', onPress: ()=>{switchVersion(hash);}},
        //     {text: '下次启动时应用更新', onPress: ()=>{switchVersionLater(hash);}},
        // ]);
        switchVersion(info.hash, info.name).then((data)=>{
            console.log("switchVersion hash:", info.hash);
            console.log("switchVersion name:", info.name);
        }).catch((err)=>{
            console.log("switchVersion err:", err);
        });
    }).catch(err => {
        Alert.alert('提示', '更新失败.');
        console.log("doUpdate 更新失败:", err);
    });
};


export const checkVersionUpdate = (isLaunch) => {
    console.log("checkVersionUpdate");
    checkUpdate(appKey, Env).then(info => {
        console.log("check info:", info);
        if (info.type == "Package") {
            if(Platform.OS == "ios"){
                let url = info.opt.url || "https://itunes.apple.com/cn/app/wan-wu-she/id1156373629?l=en&mt=8";
                Alert.alert('提示', '您的应用版本已更新,请前往应用商店下载新的版本',
                    [{
                        text: '确定',
                        onPress: ()=>{
                            Linking.openURL(url);
                        }
                    }],
                    {cancelable:false}
                );
            }else{
                Alert.alert('提示', '您的应用版本已更新,是否更新?',
                    [
                        {
                            text: '取消', onPress: () => {}
                        },
                        {
                            text: '确定', onPress: () => {
                                downloadApk(info.data.url, info.data.hash).then((res)=>{
                                    console.log("downloadApk res:", res);
                                }).catch((err)=>{
                                    console.log("downloadApk err:", err);
                                })
                            }
                        }
                    ],
                    {
                        cancelable: false
                    }
                );
            }

        } else if (info.type == "Bundle") {
            doUpdate(info.updateInfo);
        } else {
            // Alert.alert('提示', '您的应用版本已是最新.');
            console.log("您的应用版本已是最新:", currentVersion + " packageVersion:" + packageVersion);
            if(!isLaunch){
                utils.toast("已经是最新版本");
            }
        }
    }).catch(err => {
        //Alert.alert('提示', '检测更新失败.');
        console.log("checkVersionUpdate 检测更新失败 err:", err);
    });
};

工具服务端:

  • 存储android和ios的各类版本{alpha|beta|release}
  • 各个版本的增量更新包
  • 支持diff更新包
  • 支持阿里oss

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 1.2.2
    0
    • latest

Version History

Package Sidebar

Install

npm i react-native-pack

Weekly Downloads

4

Version

1.2.2

License

MIT

Unpacked Size

980 kB

Total Files

104

Last publish

Collaborators

  • lijinchao2007