精华内容
下载资源
问答
  • Node快速切换版本、版本回退(降级)、版本更新(升级) 场景 最近遇到一些node的坑,比如6.3.0版的node用不了公司最新的工作流,升级到10.x版的node后,又用不了另一套工作流。 问题 怎么实现node版本降级、升级?是否...

    Node快速切换版本、版本回退(降级)、版本更新(升级)

    场景

    最近遇到一些node的坑,比如6.3.0版的node跑不了一些新项目,升级到10.x版的node后,又跑不了旧项目

    问题

    怎么实现node版本降级、升级?是否可以安装多个版本按需要进行切换?

    解决方案一(n)

    (1)安装node版本管理模块n
    	sudo npm install n -g
    

    下边步骤请根据自己需要选择

    (2)安装稳定版
    	sudo n stable
    
    (3)安装最新版
    	sudo n latest
    
    (4) 版本降级/升级
    	sudo n 版本号
    

    比如需要8.4.0版:
    在这里插入图片描述

    (5)检测目前安装了哪些版本的node
    n
    

    如图,本人安装了四个版本,目前处于8.4.0:
    在这里插入图片描述

    (6)切换版本(不会删除已经安装的其他版本)
    n 版本号
    

    比如切换到11.4.0版:n 11.4.0,运行后查看版本号 ,可见当前已经处于11.4.0:
    在这里插入图片描述

    (7)删除版本
    sudo n rm 版本号
    

    比如删除本人电脑存在的6.9.1版可使用sudo n rm 6.9.1
    在这里插入图片描述
    输入密码,回车即可删除指定版本,如图,6.9.1已移除:
    在这里插入图片描述

    提示:

    演示系统:macOS High Sierra 10.13.2;sudo是mac下输入密码验证身份的命令,因此windows用户应该是以管理员身份运行命令行工具,然后删除sudo即可。
    举个例子:删除版本mac下是sudo n rm 版本号,windows下应该是n rm 版本号

    解决方案二(nvm)

    1)启动终端,cd ~,随后输入

    curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.6/install.sh | bash
    
    

    2)创建.bash_profile:输入“touch .bash_profile”

    3)编辑.bash_profile文件:输入“open .bash_profile”

    4)在弹出的.bash_profile文件内增加

      export NVM_DIR="$HOME/.nvm"
    [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
    

    5)终端键入"command -v nvm",回车,如果输出了 “nvm”。代表已经安装成功。
    6)命令

    nvm install stable   //安装最新版 node
    
    nvm install [node版本号]   //安装指定版本的node
    
    nvm ls // 查看已安装版本
    
    nvm use [node版本号]   //切换到指定版本的node
    
    nvm alias default [node版本号] //设置默认版本
    

    nvm使用详情可参考:https://github.com/creationix/nvm

    内推:

    有想换工作的小伙伴吗?

    对网易感兴趣的话欢迎添加本人微信:urus35

    各种方向的岗位都有噢~(坐标:广州北京上海杭州)

    展开全文
  • android版本更新 demo

    热门讨论 2018-02-02 14:40:52
    android版本更新 demo 版本更新 系统更新 自动升级
  • node版本更新和npm版本更新

    万次阅读 2018-03-09 23:12:43
    node版本更新 查看node版本 node -v 查看node的安装路径 where node 在github查找gnvm并下载,把下载后对应系统位数的exe执行文件拷贝到node的安装目录中 打开cmd控制台,gnvm update latest 安装最新版本node ...

    node版本更新

    查看node版本 node -v

    查看node的安装路径 where node

    在github查找gnvm并下载,把下载后对应系统位数的exe执行文件拷贝到node的安装目录中

    打开cmd控制台,gnvm update latest 安装最新版本node

    把node的exe文件拷贝到node的安装目录中

    npm版本更新

    npm install -g npm

    大功告成 yeah!

    展开全文
  • 安卓版本更新完整版

    千次下载 热门讨论 2016-09-28 16:50:31
    这是一个安卓app升级版本更新的项目,里面包含了通知栏更新以及app内部更新,更新的情况分为强制更新,推荐更新和无需更新3种,里面使用了downloaderManager和httpurlconnection的2种下载方式,使用可以去看我的blog...
  • Android APP版本更新源码

    千次下载 热门讨论 2015-06-04 07:57:10
    Android APP版本更新源码,利用进度条实时显示下载进度。
  • Anroid app版本更新

    千次阅读 2018-06-03 10:40:17
    1.前言 Android app更新是app必须拥有的功能,上线之后,可以强制用户更新也可以提示用户有新版,之所以写这篇文章,是为了介绍app版本更新的思路,内容还是比较简单的。 有人可能会说,现在比较了流行Hotfix也...
    1.前言

       Android app更新是app必须拥有的功能,上线之后,可以强制用户更新也可以提示用户有新版,之所以写这篇文章,是为了介绍app版本更新的思路,内容还是比较简单的。

      有人可能会说,现在比较了流行Hotfix也就是热更新技术,无论是阿里的Sophix、还是微信的Tinker,热更新主要通过推送补丁的方式,为已经上线的app推送补丁,用户不需要重新安装,可以自动拉取补丁,解决线上的一些bug,但是目前热修复技术都不支持新增四大组件,我们只能在应用内微调,基本无法满足版本的更新,如果哪一天热修复技术支持新增四大组件了,那估计web app的优势又少了一个。

    2. app 版本更新思路

       app版本检测更新,可以让用户点击版本更新检测,也可以启动app时自动检测更新,视应用需求而定。

       启动app时,获取当前app版本名称和版本号,与数据库中的版本名称对比,如果数据库中的版本号大于当前应用的版本号,则说明当前版本待更新,也就是说,当我们发布一个新的版本之后,需要在数据库中录入最新版本的版本号以及下载地址。

    3.数据库设计

      建立一张数据库版本信息表(顺便吐槽一下,自从正式进入公司做了Android开发,几乎接触不到后台的东西,所以建议之前前后台独立开发的小伙伴继续坚持下去,否则路会越走越窄)


    version是版本号,url是最新app下载地址,content是更新内容

    4.获取当前应用版本号

     

     请求服务端数据,判断当前是否为最新版本,这里给出简易服务端代码,网络请求框架大家选个自己喜欢的。


    获取最新的一条版本记录,客户端接收与当前版本对比,如果不一致则通过最新url下载最新的(最好有个对话框弹出提示)相信这部分代码对大家而言都很简单了,现在才发现自己的这部分代码当初是用的volley网络请求和kotlin语言实现的,就只贴图了:



    5.下载最新apk并自动安装

    showUpdateDialog()方法是显示一个对话框提示用户有新版本更新,用户点击确定后,下载apk然后自动安装,这里具体说下载和自动安装:

    这里下载使用的是xutils下载


    然后最主要的自动安装apk文件


       

    至此版本更新就完成了,这部分代码使用的是kotlin,对于习惯java开发的可能不是特别友好,这里主要提供一种思路,如有不足之处,请多多指教。


    展开全文
  • Android 版本更新

    千次阅读 2019-01-25 21:00:28
    版本更新这一块涉及的知识点比较少,但也花了一天时间,仅做记录用,为了方便大家理解,我画了一张流程图。需求比较简单,以后可以根据产品需求适当更改。 以下版本更新工具类 /** * Created by minmin.shen ...

    摘要

    版本更新这一块涉及的知识点比较少,但也花了一天时间,仅做记录用,为了方便大家理解,我画了一张流程图。需求比较简单,以后可以根据产品需求适当更改。

    版本
    以下版本更新工具类

    /**
     * Created by minmin.shen
     * on 2019/1/23
     * 检查更新版本工具类
     */
    public class UpdateManager {
        private String downLoadPath = "";
        private String url = "";//apk下载地址
        private boolean isforce = false;
        private String oldApkName = "";
        private String newApkName = "";
        private Context context;
    
        private BaseDialog updataDialog;
        private BaseDialog installDialog;
        private ProgressDialog progressDialog;
        private FragmentManager fm;
        public static UpdateManager updateManager;
    
        public static UpdateManager getInstance() {
            if (updateManager == null) {
                updateManager = new UpdateManager();
            }
            return updateManager;
        }
    
        public void start(){
            if(checkIsHaveNewAPK()){
                showInstallDialog("发现新版本,是否安装?");
            }else{
                showUpdataDialog();
            }
        }
    
        /**
         * 版本更新提示框
         */
        public void showUpdataDialog() {
            updataDialog = BaseDialog.getInstance().setTitle("提示").setContent("发现新版本,是否更新?")
                    .setPositionText("取消", new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            updataDialog.dismiss();
                            if (isforce) {
                                System.exit(0);
                            }
                        }
                    })
                    .setNegativeText("更新", new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            updataDialog.dismiss();
                            createProgress(context);
                            new Thread(new Runnable() {
                                @Override
                                public void run() {
                                    downloadApk();
                                }
                            }).start();
    
                        }
                    });
            updataDialog.show(fm, "dialog for update");
        }
    
        /**
         * 弹出安装Dialog
         */
        private void showInstallDialog(String content){
            installDialog = BaseDialog.getInstance().setTitle("提示").setContent(content)
                    .setPositionText("取消", new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            installDialog.dismiss();
                            if (isforce) {
                                System.exit(0);
                            }
                        }
                    })
                    .setNegativeText("安装", new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            installDialog.dismiss();
                            File fileAPK = new File(downLoadPath, newApkName);
                            installApk(context, fileAPK);
                        }
                    });
            installDialog.show(fm, "dialog for install");
        }
    
        /**
         * 检查有没有最新的APK
         */
        private boolean checkIsHaveNewAPK(){
            File file = new File(downLoadPath);
            if (!file.exists()) {
                file.mkdirs();
            }
            File fileAPK = new File(downLoadPath, newApkName);
            if(fileAPK.exists()){
                return true;
            }
            return false;
        }
    
        /**
         * 删除旧的apk
         */
        private void delOldApk(){
            File fileAPK = new File(downLoadPath, oldApkName);
            if(fileAPK.exists()){
                fileAPK.delete();
            }
        }
    
        /**
         * 下载APK
         */
        private void downloadApk() {
            try {
                final long startTime = System.currentTimeMillis();
                Log.i("DOWNLOAD", "startTime=" + startTime);
                //获取文件名
                URL myURL = new URL(url);
                URLConnection conn = myURL.openConnection();
                conn.connect();
                InputStream is = conn.getInputStream();
                int fileSize = conn.getContentLength();//根据响应获取文件大小
                Log.i("DOWNLOAD", "总大小="+fileSize);
                if (fileSize <= 0) throw new RuntimeException("无法获知文件大小 ");
                if (is == null) throw new RuntimeException("stream is null");
                File file1 = new File(downLoadPath);
                if (!file1.exists()) {
                    file1.mkdirs();
                }
                //把数据存入路径+文件名
                FileOutputStream fos = new FileOutputStream(downLoadPath + "/" + newApkName);
                byte buf[] = new byte[1024];
                int downLoadFileSize = 0;
                do {
                    //循环读取
                    int numread = is.read(buf);
                    if (numread == -1) {
                        break;
                    }
                    fos.write(buf, 0, numread);
                    downLoadFileSize += numread;
                    Log.i("DOWNLOAD", "downLoadFileSize="+downLoadFileSize);
                    Log.i("DOWNLOAD", "fileSize="+fileSize);
                    Log.i("DOWNLOAD", "download downLoadFileSize="+(int)((float)downLoadFileSize*100/fileSize));
                    progressDialog.setProgress((int)((float)downLoadFileSize*100/fileSize));
                    //更新进度条
                } while (true);
                delOldApk();
                progressDialog.dismiss();
                showInstallDialog("下载完成,是否安装?");
                Log.i("DOWNLOAD", "download success");
                Log.i("DOWNLOAD", "totalTime=" + (System.currentTimeMillis() - startTime));
                is.close();
            } catch (Exception ex) {
                Log.e("DOWNLOAD", "error: " + ex.getMessage(), ex);
            }
        }
    
        /**
         * 强制更新时显示在屏幕的进度条
         */
        private void createProgress(Context context) {
            progressDialog = new ProgressDialog(context);
            progressDialog.setMax(100);
            progressDialog.setCancelable(false);
            progressDialog.setMessage("正在下载...");
            progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
            progressDialog.show();
        }
    
        /**
         * 安装apk
         */
        private void installApk(Context context, File file) {
            Intent intent = new Intent(Intent.ACTION_VIEW);
            //判断是否是AndroidN以及更高的版本
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                Uri contentUri = FileProvider.getUriForFile(context, "com.baozun.book.fileProvider", file);
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                intent.setDataAndType(contentUri, "application/vnd.android.package-archive");
            } else {
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
            }
            context.startActivity(intent);
        }
    
        /**
         * apk网络地址
         */
        public UpdateManager setContext(Context context) {
            this.context = context;
            return this;
        }
    
        /**
         * apk网络地址
         */
        public UpdateManager setUrl(String url) {
            this.url = url;
            return this;
        }
    
        /**
         * 新版本文件名
         */
        public UpdateManager setNewFileName(String fileName) {
            this.newApkName = fileName;
            return this;
        }
    
        /**
         * 旧版本文件名
         */
        public UpdateManager setOldFileName(String fileName) {
            this.oldApkName = fileName;
            return this;
        }
    
        /**
         * Fragment管理器
         */
        public UpdateManager setFragmentManager(FragmentManager fm) {
            this.fm = fm;
            return this;
        }
    
        /**
         * 下载路径
         */
        public UpdateManager setDownloadPath(String downLoadPath) {
            this.downLoadPath = downLoadPath;
            return this;
        }
    
        /**
         * 是否强制更新
         */
        public UpdateManager setIsforce(boolean isforce) {
            this.isforce = isforce;
            return this;
        }
    
    }
    

    下面是发起调用

    public static void checkUpdate(Context context, android.support.v4.app.FragmentManager fm, float versionCode, String url, boolean isForced) {
       if (versionCode > Float.parseFloat(Util.getCurrentVersionName(context))) {
          String downLoadPath = context.getExternalFilesDir(null).toString() + "/download/";
               String newFileName = "U_Reading"+versionCode+".apk";
          String oldFileName = "U_Reading"+Float.parseFloat(Util.getCurrentVersionName(context))+".apk";
    
          //设置参数
          UpdateManager.getInstance()
                .setContext(context)
                .setFragmentManager(fm)
                .setDownloadPath(downLoadPath)
                .setNewFileName(newFileName)
                .setOldFileName(oldFileName)
                .setUrl(url)
                .setIsforce(isForced)
                .start();
       }
    }
    

    其中安装apk需要注意下,在manifest文件中加入代码

    <provider
        android:name="android.support.v4.content.FileProvider"
        android:authorities="com.baozun.book.fileProvider"
        android:grantUriPermissions="true"
        android:exported="false">
                 
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/file_paths"/>
    </provider>
    

    在这里插入图片描述
    在资源文件中加入

    <?xml version="1.0" encoding="utf-8"?>
    <paths>
        <external-path
            name="files_root"
            path="Android/data/com.baozun.book/" />
                     
        <external-path
            name="external_storage_root"
            path="." />
    </paths>
    

    先简单写一下,待详细整理

    ---------------------------------------------------------------2019/4/16号更新----------------------------------------------------------------

    近期发现代码安装APK的时候,在华为手机上不会弹出安装界面

    需要在清单文件中配置权限

    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
    
    展开全文
  • 请使用升级版XVersionUpdateVersionUpdate是一个版本更新框架,帮助我们轻松实现版本更新功能。效果图 集成步骤1. bulid.gradle添加依赖库 compile 'com.androidkun:version_update:1.1.0'2. 调用下载方法并设置...
  • app版本更新的四种实现方式

    万次阅读 2015-11-06 10:04:07
    版本更新大致分为四大类: 1.app负责单版本检测测与更新(自己实现版本更新); 2.通过苹果商店的自动更新机制进行自动更新(相当与自己不更新,靠苹果商店自己的自动更新机制更新,这个是苹果提倡的升级机制,但是app...
  • jupyter lab版本更新问题

    千次阅读 2021-01-20 13:59:58
    文章目录jupyter lab版本更新问题背景介绍版本升级 jupyter lab版本更新问题 背景介绍 安装anaconda之后,会有jupyter lab和jupyter notebook之分。通常大家都比较喜欢jupyter lab,但是碍于一些插件问题,安装...
  • nacos 1.3.1版本更新

    千次阅读 2020-07-11 07:25:44
    Nacos版本更新 阿里巴巴nacos 于2020年7月10日更新至1.3.1版本 1.3.1版本更新内容 该版本主要修复了一些错误并优化了代码质量。 [ #2089 ]修复配置列表返回页面错误。 [ #2237 ]增强HttpClient的用法。 [ #2800 ]...
  • 游戏大版本更新和热更新

    千次阅读 2018-07-19 11:42:04
    游戏上线后,遇见bug或者需要更新内容(包括资源,玩法...一般来说,不能通过小版本更新解决的问题,才会用到大版本更新,例如,不可热更的游戏代码。而热更新是建立在每次大版本更新的基础上进行的更新,因此,这2...
  • Android 使用 DownloadManager 进行版本更新的完整方案

    万次阅读 多人点赞 2016-05-21 21:58:26
    在Android App都会有版本更新的功能,以前我们公司是用友盟SDK更新功能,自己服务器没有这样的功能。版本检测、Apk下载都是使用友盟。最近看到友盟的版本更新SDK文档:十月份更新功能将会停止服务器,建议开发者迁移...
  • Android实现app内部自动检测版本更新、自动安装及数据库更新升级1、apk更新流程2、获取本地app内部版本工具类3、请求服务器获取版本数据及新旧版本比对4、下载最新版本apk5、监听下载是否完成并自动安装6、在...
  • android APP检测版本更新以及后台服务更新
  • Flutter 版本更新内容查看

    千次阅读 2019-04-10 14:15:49
    分支 对比 rss 订阅 ...dev: 发布第二快的分支, 每次的版本更新会优先发布到这个频道来, 主要给 flutter 尝鲜开发者使用 beta: 测试分支, 这个分支更新相对缓慢 stable: 可以在生产环境使用的, ...
  • Android APK版本更新下载

    千次阅读 2017-05-17 20:48:18
    今天做了下APK版本更新的功能。其实关于APK版本更新相关的文章网上挺多的,功能实现上也并不难。基本思路就是讲当前APK的版本号和服务器上保存的最新APK包的版本号进行对比,如果当前版本小于最新版本,则进行下载...
  • Go安装版本更新

    千次阅读 2018-08-19 10:53:34
    1、首先有种方法,使用apt-get 安装,教程如下:go的版本更新 2、或者用源码包的方法,教程如下:go安装教程
  • FreeRTOS历史版本更新记录

    万次阅读 多人点赞 2016-05-28 16:57:41
    另一方面,会慢慢补上V8.0之后的版本更新内容。 说明:我上传FreeRTOS源码是为了为网友提供方便,为了增加上传权限才每个资源设置1个积分,想着等阵子权限足够了就把积分设置成0。但是现在CSDN官方强制自动设置每个...
  • Android 超级轻量的版本更新库AppUpdate

    千次阅读 2019-07-09 02:17:35
    一款超级轻量的版本更新库。 支持版本更新常见功能,支持接口返回文件二进制流的形式更新,支持断点下载等。
  • IDEA 2018.3 版本更新总结

    千次阅读 2018-12-13 13:51:39
    文章目录IDEA 2018.3 版本更新总结1、关于Java 的更新1、支持Java 122、重复检查功能增强3、Java Stream API的改进4、冗余检测功能加强2、关于编辑器的更新1、支持多行TODO注释2、缩进的选择更加多样化3、关于版本...
  • android 使用应用市场进行版本更新

    万次阅读 2018-06-06 08:59:57
    之前,app都是使用应用市场提示用户更新的,但是这次希望app在打开时可以自动检测新的版本,然后进行版本更新。在网上查找了很多版本更新的资料,写出了设计文档。但是我的设计是让app在内部直接下载服务器的最新...
  • Android版本更新升级

    千次阅读 2017-01-22 16:37:43
    本文我将简要介绍一下Android版本更新的相关知识。 一、知识预热 1.versionCode:版本号,Int类型,版本升级主要是根据versionCode的大小比较进行更新操作,如服务器的版本大于当前APP版本,即可进行更新操作,...
  • Android 版本更新框架——XVersionUpdate

    万次阅读 热门讨论 2017-05-23 16:35:45
    XVersionUpdate是VersionUpdate的升级版,全面优化代码,提高兼容性和稳定性,增强用户体验,帮助我们快速实现版本更新功能。 效果图 —————————— 最近更新内容 1.修复重复下载和进度条显示异常...
  • 目录 一、jdk 的安装 二、官网下载 jmeter 安装 zip 包,直接解压...七、新版本更新 一、jdk 的安装 首先,需要先安装好jdk8(推荐)或jdk10,点击前往查看我的另一博文:【jdk】window10:jdk 8下载和安装步骤...
  • Nodejs版本更新

    万次阅读 2019-08-15 17:11:15
    查看当前node的版本号 ...更新到最新稳定版 n stable n 常用的命令有: n 会列出所有安装的版本供你切换 n latest 安装最新版本 n stable 安装最新稳定版 n lts 安装最新长期支持版本 n rm [版...
  • 史上最好用的Android全量版本更新库XUpdate使用指南

    千次阅读 热门讨论 2020-11-01 00:21:14
    在没有XUpdate之前的版本更新,Android版本更新基本都是靠写各种版本更新工具类来实现版本更新,更可怕的是有时在不同项目组或者平台之间,它们的版本更新完全是不一样的,这样的结果就是会写无数的版本更新工具类,...
  • google app版本更新

    千次阅读 热门讨论 2016-07-20 21:26:12
    简介我们做app开发时,大部分都是要上传到第三方的市场的,那么在上传到像google这种比较特殊的市场的时候,我们在程序内怎么做版本更新判断呢?假如你的app有自己的后台服务,那还可以用后台服务器做版本判断,那...
  • node和npm版本更新

    万次阅读 2017-11-11 11:21:19
    今天在安装ionic和cordova的时候,呃,没有成功安装,因为我的node版本和npm版本太低了,是去年安装的,于是我要更新它俩的版本。 // 首先查看其版本 node -v npm -v 然后更新至最新版本。 不知道为什么我的...
  • vscode 版本更新,界面模糊

    千次阅读 2019-11-08 10:14:27
    版本更新 今天vscode从 1.39更新到1.40后,整个IDE界面变暗以及变得模糊了。 这不是字体平滑/锯齿问题,解决办法就是版本回滚。 版本回滚,去这里下载上一个版本.Visual Studio代码更新 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,732,631
精华内容 693,052
关键字:

版本更新