問題描述
App 掃碼 mPaas 小程式彈出 Toast 資訊:“應用程式更新錯誤(50002)”。
常見原因
通過掃碼進行真機調試的正常流程如下:
在小程式 IDE 產生二維碼,以供手機用戶端掃描,同時會將小程式包上傳至 mPaaS 控制台的小程式發布中。
手機用戶端掃描此二維碼後,會主動通過 RPC 請求去拉取控制台中的 AMR 檔案。
當調用 MDS 小程式更新介面後,若沒有擷取對應的小程式資訊,就會提示“應用程式更新錯誤(50002)”。
這類問題可能的原因包括:
服務端尚未發布。
控制台未發布上傳的小程式。
小程式剛發布,但服務端尚未收到剛發布的小程式。
用戶端版本不在範圍內。
請求資訊和服務端發布的規則不匹配。
問題排查步驟
過濾日誌。 在 Android Studio 控制台的日誌資訊中過濾關鍵字 DynamicRelease。查看 UnionResourceInfo 中是否有 Item 資訊。
正常情況下,會含有 item 資訊,樣本如下:
UnionResourceResult{success=true, message=成功, info=[UnionResourceInfo{bizType=NEBULA, success=true, rollback=false, item=[UnionResourceItem{resId=2021011520210115, resVersion=1.0.5.1, fileMD5=9a31d39d20301b74c93317e75f36dd58, fileUrl=https://mcube-prod.oss-cn-hangzhou.aliyuncs.com/ONEX4CFD5B3081617-default/2021011520210115/1.0.5.1_all/nebula/2021011520210115_1.0.5.1.amr, downloadType=CDN, storeType=MEM, resStatus=1, resExtraData=[UnionExtraData{key=app_type, value=1}, UnionExtraData{key=resType, value=4}, UnionExtraData{key=autoinstall, value=1}, UnionExtraData{key=fallbackbaseurl, value=https://mcube-prod.oss-cn-hangzhou.aliyuncs.com/ONEX4CFD5B3081617-default/2021011520210115/1.0.5.1_all/nebula/fallback/}, UnionExtraData{key=scene, value=DEBUG}...,若未包含 item 資訊,則為異常,樣本如下:
[URGENT_DISP_12] mpaas_url = https://cn-hangzhou-component-gw.cloud.alipay.com/mgw.htm DynamicRelease: [NetworkThread#1] DynamicReleaseLauncher rpc time: 1611736340256 DynamicRelease: [URGENT_DISP_12] rpc result: UnionResourceResult{success=true, message=成功, info=[UnionResourceInfo{bizType=NEBULA, success=true, rollback=false, quickRollback=0}]}
檢查接入真機預覽和調試功能。 按照 Android 小程式接入真機預覽與調試中的步驟檢查接入真機預覽和調試是否正確。
檢查用戶端版本範圍。 版本號碼對應 Android 專案 versionName 值。只有當最低版本號碼 < 當前 App 版本號碼 < 最高版本號碼時,才能正常的拉取小程式。若不在這個範圍,App 啟動小程式時就會拉取失敗,報 “應用程式更新錯誤”。 所以 推薦 在最低版本輸入 0.0.0.0,最高版本不填寫(表示無限大)。
說明由於在小程式 IDE 上傳、預覽、真機調試會自動將小程式上傳至控制台,無需使用者在控制台修改配置資訊,所以在建立小程式時,不推薦 從小程式發布中添加小程式包,防止出現主路徑不一致。如要修改小程式,可以在小程式 IDE 中修改。
檢查主入口路徑。 查看 mPaaS 控制台中填寫的小程式主入口路徑是否與小程式 IDE 中的主入口路徑一致。 mPaaS控制台預設主路徑格式為:
/index.html#xxx/xxx/xxx/xxx,其中#後方的xxx/xxx/xxx/xxx是小程式的app.json中的pages中的第一個值。
如果依然不能解決問題,請準備好相關問題的複現 Demo 工程,加入DingTalk答疑群 145930007362 諮詢。