कॉर्डोवा एंड्रॉइड 8.0 में अपग्रेड करने के बाद , मैं लक्ष्यों net::ERR_CLEARTEXT_NOT_PERMITTED
को कनेक्ट करने की कोशिश करते समय त्रुटियों को देख रहा हूं http://
।
ऐसा क्यों है और मैं इसे कैसे हल कर सकता हूं?
कॉर्डोवा एंड्रॉइड 8.0 में अपग्रेड करने के बाद , मैं लक्ष्यों net::ERR_CLEARTEXT_NOT_PERMITTED
को कनेक्ट करने की कोशिश करते समय त्रुटियों को देख रहा हूं http://
।
ऐसा क्यों है और मैं इसे कैसे हल कर सकता हूं?
जवाबों:
कॉर्डोवा एंड्रॉइड प्लेटफॉर्म में डिफ़ॉल्ट एपीआई स्तर को अपग्रेड किया गया है। एंड्रॉइड 9 डिवाइस पर, स्पष्ट पाठ संचार अब डिफ़ॉल्ट रूप से अक्षम है ।
फिर से स्पष्ट पाठ संचार की अनुमति देने के लिए, android:usesCleartextTraffic
अपने application
टैग को true
निम्न पर सेट करें :
<platform name="android">
<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">
<application android:usesCleartextTraffic="true" />
</edit-config>
</platform>
जैसा कि टिप्पणियों में कहा गया है, यदि आपने android
पहले XML नामस्थान को परिभाषित नहीं किया है, तो आपको एक error: unbound prefix
निर्माण के दौरान प्राप्त होगा । यह इंगित करता है कि आपको इसे अपने widget
टैग में उसी config.xml
तरह जोड़ना होगा , जैसे:
<widget id="you-app-id" version="1.2.3"
xmlns="http://www.w3.org/ns/widgets"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:cdv="http://cordova.apache.org/ns/1.0">
AndroidManifest.xml
आपके Android प्रोजेक्ट में परिवर्तन किए गए हैं ?
Config.xml में सही करने के लिए दो चीजें हैं। इसलिए सही उत्तर xmls को जोड़ना चाहिए: android:
<widget id="com.my.awesomeapp" version="1.0.0"
xmlns="http://www.w3.org/ns/widgets"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:cdv="http://cordova.apache.org/ns/1.0">
प्लस विन्यास को अनुमति देने के लिए संपादन:
<platform name="android">
<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">
<application android:usesCleartextTraffic="true" />
</edit-config>
</platform>
यदि चरण 1 में त्रुटि से बचा गया है: अनबाउंड उपसर्ग। दिखाई देगा
यहाँ क्लीयरटेक्स्ट अनएन्क्रिप्टेड जानकारी को दर्शाता है। एंड्रॉइड 9 के बाद से, यह अनुशंसा की जाती है कि ऐप को HTTPS API को कॉल करना चाहिए ताकि यह सुनिश्चित हो सके कि कोई ईव्स ड्रॉपिंग नहीं है।
हालाँकि, अगर हमें अभी भी HTTP API को कॉल करना है, तो हम निम्नलिखित कर सकते हैं:
प्लेटफ़ॉर्म: आयनिक ४
एक फ़ाइल बनाएं जिसका नाम है: network_security_config.xml प्रोजेक्ट-रूट / संसाधन / android / xml के अंतर्गत
निम्नलिखित पंक्तियाँ जोड़ें:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain>ip-or-domain-name</domain>
</domain-config>
</network-security-config>
अब प्रोजेक्ट-रूट / config.xml में , निम्न पंक्तियों को अपडेट करें:
<platform name="android">
<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application" xmlns:android="http://schemas.android.com/apk/res/android">
<application android:usesCleartextTraffic="true" />
<application android:networkSecurityConfig="@xml/network_security_config" />
</edit-config>
... other statements...
यह अब काम करना चाहिए।
config.xml
से पहले edit-config
टैग: <resource-file src="resources/android/xml/network_security_config.xml" target="app/src/main/res/xml/network_security_config.xml" />
। धन्यवाद!
समस्या को हल करने के लिए अन्य विकल्प है। फ़ाइल संसाधनों में / android / xml / network_security_config.xml। सम्मिलित करें:
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
<domain-config cleartextTrafficPermitted="true">
<domain>localhost</domain>
<domain includeSubdomains="true">192.168.7.213:8733</domain>
</domain-config>
</network-security-config>
Im मेरा मामला है तो मैं आईपी पते का उपयोग कर रहा हूं, फिर आधार-विन्यास आवश्यक है, लेकिन यदि आपके पास एक डोमेन है। बस डोमेन जोड़ें।
मैं आज स्वयं इस समस्या में भाग गया, और वास्तव में एक निफ्टी प्लगइन पाया जो आपको अपने अपाचे कॉर्डोवा एप्लिकेशन के लिए एंड्रॉइड 9+ में क्लियरटेक्स ट्रैफ़िक को मैन्युअल रूप से अनुमति देने की कोशिश करने की परेशानी से बचाएगा। बस कॉर्डोबा-प्लगइन-क्लीयरटेक्स्ट इंस्टॉल करें, और प्लगइन को आपके लिए सभी दृश्यों के पीछे ध्यान रखना चाहिए एंड्रॉइड सामान।
$ cordova plugin add cordova-plugin-cleartext
$ cordova prepare
$ cordova run android
कुछ दिनों के संघर्ष के बाद, यह मेरे लिए काम करता है, और मुझे आशा है कि यह आपके लिए भी काम करता है।
इसे अपने कोड के ऊपर अपने CONFIG.XML में जोड़ें ।
<access origin="*" />
<allow-navigation href="*" />
और यह, मंच Android के तहत।
<edit-config file="app/src/main/AndroidManifest.xml"
mode="merge" target="/manifest/application"
xmlns:android="http://schemas.android.com/apk/res/android">
<application android:usesCleartextTraffic="true" />
<application android:networkSecurityConfig="@xml/network_security_config" />
</edit-config>
<resource-file src="resources/android/xml/network_security_config.xml"
target="app/src/main/res/xml/network_security_config.xml" />
" फ़ाइल / संसाधन / android / xml / network_security_config.xml" फ़ाइल का अनुसरण कोड जोड़ें ।
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">localhost</domain>
<domain includeSubdomains="true">YOUR DOMAIN HERE/IP</domain>
</domain-config>
</network-security-config>
trust-anchors
टैग अन्य सभी सामानों को काम करने के लिए अंतिम घटक था।
उद्घाटन के भीतर निम्नलिखित विशेषता जोड़ना <विजेट> टैग ने मेरे लिए काम किया। एंड्रॉइड 9 एमुलेटर पर सरल और लाइव रीलोड सही ढंग से। xmlns: एंड्रॉयड = "http://schemas.android.com/apk/res/android"
<widget id="com.my.awesomeapp" version="1.0.0"
xmlns="http://www.w3.org/ns/widgets"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:cdv="http://cordova.apache.org/ns/1.0">
edit-config
स्वीकार किए जाते हैं जवाब से कोड (फिक्स unbound prefix
त्रुटि)
आपको जोड़ना चाहिए
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
सेवा
संसाधन / एंड्रॉयड / xml / network_security_config.xml
इस तरह
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">localhost</domain>
</domain-config> </network-security-config>
निम्नलिखित समाधान है जो मेरे लिए काम किया है। फ़ाइलें जो मैंने अद्यतन की हैं, वे इस प्रकार हैं:
संबंधित फ़ाइलों में परिवर्तन इस प्रकार हैं:
1. config.xml
मैंने config.xml फ़ाइल में <application android:usesCleartextTraffic="true" />
टैग के भीतर <edit-config>
टैग जोड़ा है
<platform name="android">
<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application" xmlns:android="http://schemas.android.com/apk/res/android">
<application android:usesCleartextTraffic="true" />
<application android:networkSecurityConfig="@xml/network_security_config" />
</edit-config>
...
<platform name="android">
2. network_security_config.xml
इस फ़ाइल में मैंने अपनी परियोजना की आवश्यकता के अनुसार <domain>
टैग में 2 टैग <domain-config>
, मुख्य डोमेन और एक उप डोमेन जोड़ा है
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">mywebsite.in</domain>
<domain includeSubdomains="true">api.mywebsite.in</domain>
</domain-config>
</network-security-config>
धन्यवाद @Aututosh सहायता प्रदान करने के लिए।
आशा करता हूँ की ये काम करेगा।
Im का उपयोग IONIC 5.4.13, कॉर्डोवा 9.0.0 (कॉर्डोवा-lib@9.0.1)
मैं जानकारी को दोहरा सकता हूं लेकिन मेरे लिए समस्या कुछ प्लगइन जोड़ने के बाद दिखाई देने लगी (अभी तक निश्चित नहीं है)। मैंने उपरोक्त सभी संयोजनों की कोशिश की, लेकिन कुछ भी काम नहीं किया। इसे जोड़ने के बाद ही काम करना शुरू किया गया:
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
परियोजना में दर्ज करने के लिए
संसाधन / एंड्रॉयड / xml / network_security_config.xml
तो मेरा network_security_config.xml फ़ाइल अब जैसा दिखता है:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">localhost</domain>
<domain includeSubdomains="true">10.1.25.10</domain>
</domain-config>
</network-security-config>
सभी को धन्यवाद।
पुरानी आयनिक क्ली (4.2) मेरे मामले में समस्या पैदा कर रही थी, 5 समस्या को हल करने के लिए अद्यतन करें
हम cordova-custom-config
अपने एंड्रॉइड कॉन्फ़िगरेशन को प्रबंधित करने के लिए प्लगइन का उपयोग कर रहे हैं । इस मामले में समाधान custom-preference
हमारे लिए एक नया जोड़ना था config.xml
:
<platform name="android">
<preference name="orientation" value="portrait" />
<!-- ... other settings ... -->
<!-- Allow http connections (by default Android only allows https) -->
<!-- See: /programming/54752716/ -->
<custom-preference
name="android-manifest/application/@android:usesCleartextTraffic"
value="true" />
</platform>
क्या किसी को पता है कि यह केवल विकास के लिए कैसे किया जाता है? मुझे इस सेटिंग को छोड़ने के लिए रिलीज़ बिल्ड के लिए खुशी होगी false
।
(मैं इसके लिए iOS कॉन्फ़िगरेशन ऑफ़र देखता हूं buildType="debug"
, लेकिन मुझे यकीन नहीं है कि यह एंड्रॉइड कॉन्फ़िगरेशन पर लागू होता है।)
@Der Hochstapler समाधान के लिए धन्यवाद।
लेकिन Ionic 4 में परियोजना के लिए कुछ अनुकूलन config.xml मेरे लिए काम करता है
विजेट टैग में एक पंक्ति जोड़ें
<widget id="com.my.awesomeapp" version="1.0.0"
xmlns="http://www.w3.org/ns/widgets"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:cdv="http://cordova.apache.org/ns/1.0">
इस के बाद, एंड्रॉयड अनुकूलित कुछ लाइनों के नीचे की जाँच के लिए प्लेटफार्म टैग में
जोड़ने usesCleartextTraffic = सच के बाद networkSecurityConfig और संसाधन फ़ाइल टैग
<platform name="android">
<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application" xmlns:android="http://schemas.android.com/apk/res/android">
<application android:networkSecurityConfig="@xml/network_security_config" />
</edit-config>
<resource-file src="resources/android/xml/network_security_config.xml" target="app/src/main/res/xml/network_security_config.xml" />
<edit-config file="AndroidManifest.xml" mode="merge" target="/manifest/application">
<application android:usesCleartextTraffic="true" />
</edit-config>
</platform>
Ionic 4 कैपेसिटर प्रोजेक्ट में, जब मैंने परीक्षण के लिए android फोन पैक किया और तैनात किया तो मुझे यह त्रुटि मिली। संधारित्र को फिर से स्थापित करने और Android प्लेटफ़ॉर्म को अपडेट करने से हल किया गया।
npm run build --prod --release
npx cap copy
npm install --save @capacitor/core @capacitor/cli
npx cap init
npx cap update android
npx cap open android
यदि आपके पास एनपीएम और कॉर्डोवा कमांड के साथ विरासत कॉर्डोवा ढांचा है। मैं नीचे दिए गए विकल्प का सुझाव दूंगा।
फ़ाइल android / res / xml / network_security_config.xml बनाएं -
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">Your URL(ex: 127.0.0.1)</domain>
</domain-config>
</network-security-config>
AndroidManifest.xml -
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
<uses-permission android:name="android.permission.INTERNET" />
<application
...
android:networkSecurityConfig="@xml/network_security_config"
...>
...
</application>
</manifest>
निम्नलिखित समाधान ने मेरे लिए काम किया-
गोटो resources/android/xml/network_security_config.xml
इसे बदलें-
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">localhost</domain>
<domain includeSubdomains="true">api.example.com(to be adjusted)</domain>
</domain-config>
</network-security-config>
बस इस लाइन को प्लेटफार्मों / एंड्रॉइड / ऐप / src / main / AndroidManifest.xml फ़ाइल में जोड़ें
<Application android: hardwareAccelerated = "true" android: icon = "@ mipmap / ic_launcher" android: label = "@ string / app_name" android: supportRtl = "true" android: useClatetextTraffic = "true" >
error: unbound prefix.
मेरे कॉर्डोवा एप्लिकेशन को बनाने का प्रयास करते समय मुझे एक त्रुटि ( ) का सामना करना पड़ा । इसका समाधान मेरीconfig.xml
फ़ाइल में जोड़ना था , मेरे मूल<widget>
तत्व में विशेषताxmlns:android="http://schemas.android.com/apk/res/android