无服务器实现APP外网在线升级功能

2024-08-31 13:32

本文主要是介绍无服务器实现APP外网在线升级功能,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

利用“码云”、“github”实现APP在线升级

    • 一、基本的Git操作能力
    • 二、码云库操作方法一(复杂)
      • 1、在“码云”创建Git仓库
      • 2、克隆仓库到本地
      • 3、在本地仓库下新建“Update.json”文件,并推送到码云
      • 4、将升级APK,放在本地仓库下,并推送到码云
      • 5、在码云Git仓库中,更改Update.json文件中的Url链接
      • 6、获取Update.json 文件的链接
    • 三、码云库操作方法二(简单)
      • 1、建库
      • 2、添加相关文件
      • 3、在码云Git仓库中,更改Update.json文件中的Url链接
      • 4、获取Update.json 文件的链接
    • 四、Android升级代码简单实现

功能描述:在APP开发过程中,你如果需要频繁的发布测试版APP,而你又不熟悉后端接口,或者不好意思频繁麻烦后端同学,本文给你提供一种简单地解决方案,因国内网速体验 “码云” 优于 “Github” ,所以用“码云”演示。

一、基本的Git操作能力

默认你已经具有基本的Git操作能力,默认你的PC正确安装了Git。

  • 熟悉“Github” 或者 “码云”。
  • 熟悉基本的 Git 操作。

二、码云库操作方法一(复杂)

1、在“码云”创建Git仓库

在这里插入图片描述

2、克隆仓库到本地

复制仓库地址
在这里插入图片描述
将远程仓库克隆到本地
在这里插入图片描述

3、在本地仓库下新建“Update.json”文件,并推送到码云

新建"Update.json”文件
在这里插入图片描述

//Update.json 文件内容
{"versionCode":2,"versionName": v2.0,"updateInf":["修复BUG","优化功能","增加新的功能"],"url": "www.baidu.com"
}

推送的远程码云仓库
在这里插入图片描述

4、将升级APK,放在本地仓库下,并推送到码云

apk放在指定目录下
在这里插入图片描述
APK推送到码云
在这里插入图片描述

5、在码云Git仓库中,更改Update.json文件中的Url链接

获取上传的Apk链接
在这里插入图片描述
更改远程仓库中的Json文件
在这里插入图片描述

6、获取Update.json 文件的链接

在这里插入图片描述
在这里插入图片描述

获取到升级文件的Url之后,服务端的工作我们就完成了。

三、码云库操作方法二(简单)

码云在B端有文件直接上传功能,我们可以省去本地GIt相关操作

1、建库

在这里插入图片描述

2、添加相关文件

在这里插入图片描述

3、在码云Git仓库中,更改Update.json文件中的Url链接

获取上传的Apk链接
在这里插入图片描述
更改远程仓库中的Json文件
在这里插入图片描述

4、获取Update.json 文件的链接

在这里插入图片描述
在这里插入图片描述

四、Android升级代码简单实现

本文主要提供一种无服务器下APP在线升级的解决方案,Android端具体的升级代码实现简略叙述。

Android端升级使用第三方库:

//库源码在github
implementation 'com.allenliu.versionchecklib:library:2.1.9'

升级代码

import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;
import android.widget.Toast;import com.allenliu.versionchecklib.v2.AllenVersionChecker;
import com.allenliu.versionchecklib.v2.builder.UIData;
import com.allenliu.versionchecklib.v2.callback.RequestVersionListener;
import com.google.gson.Gson;public class MainActivity extends AppCompatActivity {private int versionCode;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);FloatingActionButton fab = findViewById(R.id.fab);TextView tvInf = findViewById(R.id.tv_show);try {PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(), 0);//获得版本号versionCode = packageInfo.versionCode;String versionName = packageInfo.versionName;//获得版本名称tvInf.setText("软件版名称:" + versionName + "\n软件版本号:" + versionCode);} catch (PackageManager.NameNotFoundException e) {e.printStackTrace();}fab.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {updateApk();}});}private void updateApk() {AllenVersionChecker.getInstance().requestVersion().setRequestUrl("https://gitee.com/csdn_note/AppUpdate/raw/master/APP_0/update.json").request(new RequestVersionListener() {@Nullable@Overridepublic UIData onRequestVersionSuccess(String result) {//拿到服务器返回的数据,解析,拿到downloadUrl和一些其他的UI数据//如果是最新版本直接return nullif (result!=null){UpdateBean updateBean = new Gson().fromJson(result,UpdateBean.class);if (versionCode >= updateBean.getVersionCode()){//不需要升级Toast.makeText(MainActivity.this, "不需要升级", Toast.LENGTH_SHORT).show();return null;}UIData uiData = UIData.create().setDownloadUrl(updateBean.getUrl());String content = "";for (int i = 0; i < updateBean.getUpdateInf().size(); i++) {content += (i + 1 +"、" + updateBean.getUpdateInf().get(i) +"。\n" );}uiData.setContent(content);uiData.setTitle("有新的升级");return uiData;}return null;}@Overridepublic void onRequestVersionFailure(String message) {}}).executeMission(MainActivity.this);}
}

在这里插入图片描述

这篇关于无服务器实现APP外网在线升级功能的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1124039

相关文章

利用Python实现Excel文件智能合并工具

《利用Python实现Excel文件智能合并工具》有时候,我们需要将多个Excel文件按照特定顺序合并成一个文件,这样可以更方便地进行后续的数据处理和分析,下面我们看看如何使用Python实现Exce... 目录运行结果为什么需要这个工具技术实现工具的核心功能代码解析使用示例工具优化与扩展有时候,我们需要将

使用Nginx配置文件服务器方式

《使用Nginx配置文件服务器方式》:本文主要介绍使用Nginx配置文件服务器方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 为什么选择 Nginx 作为文件服务器?2. 环境准备3. 配置 Nginx 文件服务器4. 将文件放入服务器目录5. 启动 N

Python+PyQt5实现文件夹结构映射工具

《Python+PyQt5实现文件夹结构映射工具》在日常工作中,我们经常需要对文件夹结构进行复制和备份,本文将带来一款基于PyQt5开发的文件夹结构映射工具,感兴趣的小伙伴可以跟随小编一起学习一下... 目录概述功能亮点展示效果软件使用步骤代码解析1. 主窗口设计(FolderCopyApp)2. 拖拽路径

Spring AI 实现 STDIO和SSE MCP Server的过程详解

《SpringAI实现STDIO和SSEMCPServer的过程详解》STDIO方式是基于进程间通信,MCPClient和MCPServer运行在同一主机,主要用于本地集成、命令行工具等场景... 目录Spring AI 实现 STDIO和SSE MCP Server1.新建Spring Boot项目2.a

Spring Boot拦截器Interceptor与过滤器Filter深度解析(区别、实现与实战指南)

《SpringBoot拦截器Interceptor与过滤器Filter深度解析(区别、实现与实战指南)》:本文主要介绍SpringBoot拦截器Interceptor与过滤器Filter深度解析... 目录Spring Boot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现与实

C#实现访问远程硬盘的图文教程

《C#实现访问远程硬盘的图文教程》在现实场景中,我们经常用到远程桌面功能,而在某些场景下,我们需要使用类似的远程硬盘功能,这样能非常方便地操作对方电脑磁盘的目录、以及传送文件,这次我们将给出一个完整的... 目录引言一. 远程硬盘功能展示二. 远程硬盘代码实现1. 底层业务通信实现2. UI 实现三. De

SpringBoot后端实现小程序微信登录功能实现

《SpringBoot后端实现小程序微信登录功能实现》微信小程序登录是开发者通过微信提供的身份验证机制,获取用户唯一标识(openid)和会话密钥(session_key)的过程,这篇文章给大家介绍S... 目录SpringBoot实现微信小程序登录简介SpringBoot后端实现微信登录SpringBoo

使用Vue-ECharts实现数据可视化图表功能

《使用Vue-ECharts实现数据可视化图表功能》在前端开发中,经常会遇到需要展示数据可视化的需求,比如柱状图、折线图、饼图等,这类需求不仅要求我们准确地将数据呈现出来,还需要兼顾美观与交互体验,所... 目录前言为什么选择 vue-ECharts?1. 基于 ECharts,功能强大2. 更符合 Vue

使用WPF实现窗口抖动动画效果

《使用WPF实现窗口抖动动画效果》在用户界面设计中,适当的动画反馈可以提升用户体验,尤其是在错误提示、操作失败等场景下,窗口抖动作为一种常见且直观的视觉反馈方式,常用于提醒用户注意当前状态,本文将详细... 目录前言实现思路概述核心代码实现1、 获取目标窗口2、初始化基础位置值3、创建抖动动画4、动画完成后

uniapp小程序中实现无缝衔接滚动效果代码示例

《uniapp小程序中实现无缝衔接滚动效果代码示例》:本文主要介绍uniapp小程序中实现无缝衔接滚动效果的相关资料,该方法可以实现滚动内容中字的不同的颜色更改,并且可以根据需要进行艺术化更改和自... 组件滚动通知只能实现简单的滚动效果,不能实现滚动内容中的字进行不同颜色的更改,下面实现一个无缝衔接的滚动