本文主要是介绍无服务器实现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外网在线升级功能的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!