如果本文對你有幫助糠悯,請動下小手點個贊(●'?'●)洋满,寫的不好的地方也請指出???
思路:
我們現(xiàn)在的需求就是當(dāng)我們修改了項目代碼之后孝赫,用戶的設(shè)備一打開App,就會提示軟件有更新几迄,自動開啟下載安裝最新的版本蔚龙,由于只需要在打開App的時候檢查有沒有版本更新,所以我們把邏輯代碼寫在
App.vue
文件的onLaunch
生命周期里面映胁。獲取當(dāng)前已經(jīng)安裝的App的版本號木羹,同時請求我們新建的json文件獲得最新的版本號,通過兩者的對比解孙,來判斷App是否需要更新坑填。
實現(xiàn):
第一步:新建一個json文件弛姜,用來管理App的版本號:
// version.json
{
"code": 0,
"version": 100,
"url": 'http://xxxxxx/xx/yy/xxxx.apk' // 你的apk放在服務(wù)器的地址
}
第二步:編寫邏輯代碼
// App.vue
export default {
data() {
return {
version: 100
}
},
onLaunch: function() {
plus.runtime.getProperty(plus.runtime.appid, (wgtinfo) => {
this.version = wgtinfo.versionCode;
})
this.androidCheckUpdate(); // 檢測版本更新
},
methods: {
androidCheckUpdate() {
var that = this;
uni.request({
url: 'http://xxxxxxx/version.json',
data: {},
header: {},
method: 'GET',
success: (res) => {
if (res.data.code === 0) {
if (res.data.version > this.version) { // 如果最新版本大于現(xiàn)在已經(jīng)安裝的App的版本
// 新建下載任務(wù)
var dtask = plus.downloader.createDownload(res.data.url, {force: true}, function(d, status) {
// 下載完成
if (status == 200) {
uni.showModal({
title: '下載完成娱据,即將安裝',
showCancel: false,
success: () => {
// 由于install只能安裝本地的地址蚪黑,所以先把下載的地址在本地找到,再調(diào)用install
plus.runtime.install(plus.io.convertLocalFilesSystemURL(d.filename), {}, function() {
console.log('success');
plus.runtime.restart(); // 安裝成功后重啟
}, function(error) {
console.log(error.message);
uni.showToast({
title: "安裝失敗",
duration: 1500
})
})
}
})
} else {
uni.showToast({
title: '更新失敗',
duration: 1500
})
}
})
dtask.start();
} else {
uni.showModal({
title: '當(dāng)前已是最新版本',
showCancel: false
})
}
}
}
})
}
}
}
ok中剩,接下來就是修改代碼...
修改完代碼之后:
-
修改manifest.json文件的應(yīng)用版本名稱和應(yīng)用版本號(手動加1):
-
修改version.json文件结啼,version 手動加 1:
重新生成打包資源:發(fā)行 --> 原生App本地打包 --> 生成本地打包App資源掠剑,生成一個以Id命名的文件。用于拷貝到AS中郊愧,打包會用到
將生成的資源文件夾復(fù)制到AS中項目的assets / apps 目錄下朴译,覆蓋原有的資源属铁。
-
打開AS中項目build.gradle文件,修改版本號焦蘑,修改完保存,sync now狡逢。ok拼卵,繼續(xù)...
-
用AS打包出一個apk奢浑,如圖
- 然后把生成的apk和剛剛修改的version.json文件給到后端同事放到服務(wù)器上。完成仍律。