iT邦幫忙

0

Android APP 可以發佈 Google Play 及安裝到手機,但是手機執行卻出現 "應用程式未安裝"

  • 分享至 

  • xImage

您好,我將問題說明如下 :
(1) 這個 Android APP 是用 PhoneGap 把一個網站包裝起來成為一個 Android APP。
但是因為知其站做的同事離職很久,只能找包裝 APP用的 網頁檔案;
再加上目前 PhoneGap 已經無法再使用了,我只能選擇用目前最新版的 Cordova 來包裝這些網頁檔案成為 APP。

我用的 Cordova 版本是 11.0.0

(2) 目前執行 cordova run android 指令可以在 Android 的 ADV 裡顯示出正常的畫面,看起來產生的 APK 檔可以正常運作。

(3) 我看了一下 Google Play 目前的規範,已經不接受 .apk 的檔案了,只能接受 .aab 格式的檔案,所以我再把 cordova 產生的 .apk (app-debug.apk)透過 以下指令

java -jar apktool.jar d app-debug.apk -s -o decode_apk_dir 

做解壓縮後,再透過以下指令 產生要轉換成有關聯資源的 .apk 檔案 :

D:\AndroidSDK\build-tools\30.0.3\aapt2.exe link --proto-format -o base.apk -I D:\AndroidSDK\platforms\android-30\android.jar --min-sdk-version 14 --target-sdk-version 30 --version-code 102 --version-name 1.0.2 --manifest decode_apk_dir\AndroidManifest.xml -R compiled_resources.zip --auto-add-overlay

再透過以下指令 產生 .aab 檔:

java -jar bundletool-all.jar build-bundle --modules=D:\MobileDev\Cordova\MyAndroid\APK_To_AAB\base.zip --output=D:\MobileDev\Cordova\MyAndroid\APK_To_AAB\aab\base.aab

產生 .aab 檔。

(4) 因為上傳到 Google Play 的時候,畫面顯示需要做簽名,所以再透過以下指令產生證書

keytool -genkey -keyalg RSA -keystore ABC_KeyStore -validity 7000 -storepass H4f8S1k3 -keypass I7n9P5z2 -alias ABC_Android

然後再使用以下指令 對 .aab 檔進行簽名

jarsigner -digestalg SHA1 -sigalg SHA1withRSA -keystore D:\_My\Signature\Android\ABC_KeyStore -storepass H4f8S1k3 -keypass I7n9P5z2 D:\MobileDev\Cordova\MyAndroid\APK_To_AAB\aab\base.aab ABC_Android

經過以上步驟之後,可以通過上傳到 Google Play 的檢查,也可以用 內部測試的方式做發佈,通知 APP 安裝網址給指定的電子郵件信箱。

收到測試 APP 網址 的人員點及該網址後雖然可以安裝這一個 APP , 安裝過程中也沒出現任何錯誤訊息,安裝完成後也有出現 APP 安裝完成的訊息。

但是在手機上點擊 這一個APP 的時候卻出現如下圖的畫面,顯示 "應用程式未安裝"
https://ithelp.ithome.com.tw/upload/images/20220213/20035296AfR0ObKGRe.jpg

我查了 Google Play 的說明以及一些其他的網路文章,大致上有可能是 :

(1) aab 檔的簽名出問題或是沒有在 Google Play 上調整好 簽名的金鑰
這個部分我一直沒看懂 Google Play 上的說明,也找不到哪邊可以讓我設定我在前面步驟四所產生的證書檔 ABC_KeyStore;
再加上 我上傳 aab 檔的時候,也沒有出現簽名的錯誤訊息。

(2) SDK 版本不對
在前面的步驟三 執行 D:\AndroidSDK\build-tools\30.0.3\aapt2.exe 這一個指令指定的 --min-sdk-version 和 --target-sdk-version 這兩個參數錯誤。
我用來測試的手機的 Android 版本是 7.0 的,對應的 SDK 號碼是 24,但是如果把 target-sdk-version 改成 24 會無法上傳到 Google Play ,
Google Play 強制要求 target-sdk-version 必須至少是 30。

再請大家幫我看看可能是哪邊出問題或是有解決方式,感謝您。

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
EvanKuo
iT邦新手 5 級 ‧ 2022-02-13 21:21:56

手動打包不行 想辦法用android studio打包如何
project struct可能要移動一下檔案
或是 進去修正一些 舊版才有/新版沒有的功能

謝謝您

0
MumiRabbit
iT邦新手 4 級 ‧ 2022-04-13 14:09:11

現在才看到不知道來不來的及
由於google政策改變 在manifest.xml activity內需加入

 android:exported="true"

代表可被外部應用程式打開
如果是false 會出現你上述的情況

謝謝您

我要發表回答

立即登入回答