盡管幾個月沒有在生產環境中更新,但我們的應用程式在進行 API 呼叫時已經開始掛起。我們可以使用應用程式的 Play 商店版本或通過android:debuggable="false"在 AndroidManfiest.xml 中進行設定來復制問題。但是,如果我們再設定android:usesCleartextTraffic="true"問題就消失了。如果我們執行一個呼叫 API 的操作,然后讓應用程式離開幾分鐘,我們會看到“應用程式沒有回應”訊息。
我們最近還更新了 API 呼叫將要訪問的服務器的證書。
有什么方法可以解決此問題或查看導致應用程式無回應的原因?我試過查看網路/除錯選項卡,但如果 debuggable 為 false,這似乎是不可能的。
AndroidManifest.xml:
<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="12345" android:versionName="3.32" package="foo.bar.foo.com.bar.preview" xmlns:android="http://schemas.android.com/apk/res/android">
<supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
<uses-permission android:name="android.permission.INTERNET" />
<application android:hardwareAccelerated="true" android:icon="@mipmap/icon" android:label="@string/app_name" android:supportsRtl="true">
<activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:screenOrientation="portrait" android:theme="@android:style/Theme.DeviceDefault.NoActionBar" android:windowSoftInputMode="adjustResize">
<intent-filter android:label="@string/launcher_name">
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<provider android:authorities="${applicationId}.provider" android:exported="false" android:grantUriPermissions="true" android:name="de.appplant.cordova.plugin.notification.util.AssetProvider">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/localnotification_provider_paths" />
</provider>
<receiver android:exported="false" android:name="de.appplant.cordova.plugin.localnotification.TriggerReceiver" />
<receiver android:exported="false" android:name="de.appplant.cordova.plugin.localnotification.ClearReceiver" />
<activity android:exported="false" android:launchMode="singleInstance" android:name="de.appplant.cordova.plugin.localnotification.ClickReceiver" android:theme="@android:style/Theme.Translucent" />
</application>
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="28" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
</manifest>
</manifest>
uj5u.com熱心網友回復:
在 app/src/main/res/xml/ 中創建一個 xml 檔案
network_security_config.xml
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>
并將其添加到 AndroidManifest.xml
<application
....
android:usesCleartextTraffic="true"
android:networkSecurityConfig="@xml/network_security_config"
>
uj5u.com熱心網友回復:
我們找到了解決方案。從不同的源服務器頒發證書就可以了。據我所知,證書、根證書和中間證書都是有效的。無論出于何種原因,Android 應用程式都不接受證書有效。據我所知,這可能是由于中間證書過期或 Cordova 使用舊版本的 BoringSSL 造成的。
如果有人在生產/發布版本中遇到此問題,請進入 Android Manifest 檔案并將 Debuggable 設定為 true。這個問題應該消失。然后,使用 debuggable false 重新運行生產/發布版本,問題應該會再次出現。將生產/發布版本保持在可除錯的 false 上,并將 android:usesCleartextTraffic 設定為 true。這個問題應該會再次消失。如果您有相同的結果,您可能會遇到類似的問題,即應用程式不接受證書(或者您使用的是 HTTP 而不是 HTTPS),而新證書可能會解決問題。
<application android:debuggable="true"android:usesCleartextTraffic="true">
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/460129.html
上一篇:如何獲取text()小部件的字串內容并在顫動中顯示下圖的樣式
下一篇:IOSGoogleMapsJavaScriptAPI上的ionic錯誤:RefererNotAllowedMapError
