[Cordova] 在 Android 9.0 以上,HTTP 連線出現 net::ERR_CLEARTEXT_NOT_PERMITTED 錯誤?
昨天更新圖書館多重帳戶登入 App 之後,
今天就接到許多投訴,說 app 連不上了…
有點奇怪,在上線前我有先用 Genymotion 模擬器 跑過,
並沒有發生問題…
觀察了一下 Google Play Console 上的留言,
似乎出問題的都是 Android 9.0…
這可能是個線索,於是我用 Genymotion 建了一個 Android 9.0 的模擬器,
果真一跑起來 App 就出問題了,連不上網路…
發現只要是用 Ajax 連線出去的,似乎都失敗了 (紅色):
再到 Console 分頁,看到一堆 Failed to load resource:
net::ERR_CLEARTEXT_NOT_PERMITTED 的錯誤訊息:
上網查了一下,似乎 Android 9.0 預設已經不支援 HTTP 明碼連線了,
所以我用 Ajax 去連 HTTP 網站的,全都被擋了下來…
解決方法,是在 AndroidManifest.xml 裡,
加上 android:usesCleartextTraffic=”true”。
不過我是用 Cordova 寫 App 的,
所以要在 config.xml 裡加上這一段:
<platform name="android"> <edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application"> <application android:usesCleartextTraffic="true" /> </edit-config> </platform>
加好後再重新用 Cordova 編譯,HTTP 的連線就會成功囉~
(本頁面已被瀏覽過 7,947 次)