uniapp 證書 打包上線GooglePlay app自動升級


uniapp Android證書 打包上線GooglePlay app自動升級 

1.Android證書申請

要安裝jdk並配置環境變量。

keytool -genkey -alias android -keyalg RSA -validity 36500 -keystore android.keystore

android:證書別名

android.keystore:證書名稱

36500:時間,單位天

證書密鑰很重要一定要記住。

到這里已經創建好了,新建的證書時間100年,上Googleplay證書時間不能低於25年。

查看證書信息,在 jieshenmode.keystore 文件的文件夾下輸入命令行:

keytool -list -v -keystore jieshenmode.keystore
C:\Users\admin>keytool -list -v -keystore jieshenmode.keystore
輸入密鑰庫口令:
密鑰庫類型: jks
密鑰庫提供方: SUN

您的密鑰庫包含 2 個條目

別名: jieshenmode
創建日期: 2020-11-18
條目類型: PrivateKeyEntry
證書鏈長度: 1
證書[1]:
所有者: CN=sandaoliu, OU=****, O=****, L=****, ST=**, C=**
發布者: CN=sandaoliu, OU=****, O=****, L=****, ST=**, C=**
序列號: a79c913
有效期為 Wed Nov 18 11:25:09 CST 2020 至 Fri Oct 25 11:25:09 CST 2120
證書指紋:
         MD5:  ********************************
         SHA1: **************************************
         SHA256: *************************************************88
簽名算法名稱: SHA256withRSA
主體公共密鑰算法: 2048 位 RSA 密鑰
版本: 3

 2.上線Googleplay

上線Googleplay會遇到一下問題,

1.您上傳的 APK 或 Android App Bundle 所使用的簽名證書不久就會過期,請使用有效期更長的證書為 APK 或 Android App Bundle 簽名。詳細了解簽名。

2.您的應用目前的目標 API 級別為 26,但其目標 API 級別必須最低為 29,這樣才能確保應用基於最新 API 而構建,讓安全性和性能達到最佳狀態。請將應用的目標 API 級別至少更改為 29

3.此版本不符合 Google Play 關於提供 64 位版本應用的要求。以下 APK 或 App Bundle 面向 64 位設備,但只有 32 位原生代碼:請向應用中添加 64 位和 32 位原生代碼。使用 Android App Bundle 發布格式可自動確保每種設備架構僅收到所需的原生代碼。這樣可避免增加應用的總大小。

如下圖所示:

 

解決方法:

1.生成證書的時候年限弄到100年

2.uniapp項目的manifest.json里面的App常用其他配置里面修改支持cpu類型和targetSdkVersion的級別。

/* 模塊配置 */
  "distribute" : {
  /* 應用發布信息 */
      "android" : { 
         "abiFilters" : [ "armeabi-v7a", "arm64-v8a" ],
         "targetSdkVersion" : "29"
      },
  }

配置好以后如下圖:

 3.在打包的時候,在渠道包勾選GooglePlay,打出的包就可以正常上應用了:

3.uniapp自動升級 

打包的時候會有一個版本號,每一次重新打開app的時候判斷存儲的版本號,如果不一致,則下載后台返回的新app地址,下載后自動安裝。這個版本沒有提示直接下載的。

 // #ifdef APP-PLUS
          var server = baseUrl + "/tiny-shop/v1/site/app-update"; //檢查更新地址
          uni.request({
            url: server,
            data: {appCurrentVer:plus.runtime.versionCode},
            method:'POST',
            success: res => {
              console.log(res)
              if (res.statusCode == 200 && res.data.code == 200) {
                let data = res.data.data;
                if (plus.runtime.versionCode == data.current) {
                } else {
                  var dtask = plus.downloader.createDownload(data.download, {}, function(d, status) {
                    // 下載完成
                    if (status == 200) {
                      plus.runtime.install(plus.io.convertLocalFileSystemURL(d.filename), {}, {}, function(error) {
                        uni.showToast({
                          title: '安裝失敗',
                          mask: false,
                          duration: 1500
                        });
                      })
                    } else {
                      uni.showToast({
                        title: '更新失敗',
                        mask: false,
                        duration: 1500
                      });
                    }
                  });
                  dtask.start();
                  var prg = 0;
                  var showLoading = plus.nativeUI.showWaiting("正在下載");  //創建一個showWaiting對象
                  dtask.addEventListener('statechanged', function(task,status){
                        // 給下載任務設置一個監聽 並根據狀態  做操作
                    switch (task.state) {
                      case 1:
                        showLoading.setTitle("正在下載");
                        break;
                      case 2:
                        showLoading.setTitle("已連接到服務器");
                        break;
                      case 3:
                        prg = parseInt((parseFloat(task.downloadedSize) /parseFloat(task.totalSize)) *100);
                        showLoading.setTitle("正在更新下載" + prg + "%  ");
                        break;
                      case 4:
                        plus.nativeUI.closeWaiting();
                          //下載完成
                      break;
                    }
                  });
                }

              }
            }
          })
          // #endif

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM