मुझे नेट :: ERR_CLEARTEXT_NOT_PERMITTED त्रुटियाँ कॉर्डोवा Android 8 में अपग्रेड करने के बाद क्यों दिखाई दे रही हैं?


120

कॉर्डोवा एंड्रॉइड 8.0 में अपग्रेड करने के बाद , मैं लक्ष्यों net::ERR_CLEARTEXT_NOT_PERMITTEDको कनेक्ट करने की कोशिश करते समय त्रुटियों को देख रहा हूं http://

ऐसा क्यों है और मैं इसे कैसे हल कर सकता हूं?

जवाबों:


205

कॉर्डोवा एंड्रॉइड प्लेटफॉर्म में डिफ़ॉल्ट एपीआई स्तर को अपग्रेड किया गया है। एंड्रॉइड 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">

36
error: unbound prefix.मेरे कॉर्डोवा एप्लिकेशन को बनाने का प्रयास करते समय मुझे एक त्रुटि ( ) का सामना करना पड़ा । इसका समाधान मेरी config.xmlफ़ाइल में जोड़ना था , मेरे मूल <widget>तत्व में विशेषताxmlns:android="http://schemas.android.com/apk/res/android
एपीगेट

@Der Hochstapler क्या आप अपने जवाब में Apiagets टिप्पणी जोड़ सकते हैं?
माइकल बी

@MichaelB हर कोई उत्तर संपादित कर सकता है और ऐसा करने के लिए स्वागत है। लेकिन, यकीन है, मैं यह करूँगा।
डेर होकस्टापलर

1
@SteevJames क्या आपने अपने कॉर्डोवा प्रोजेक्ट का पुनर्निर्माण किया ताकि बदलाव वास्तव में एंड्रॉइड प्रोजेक्ट संरचना में बने रहें? क्या आपने सत्यापित किया है कि AndroidManifest.xmlआपके Android प्रोजेक्ट में परिवर्तन किए गए हैं ?
डेर होकस्टाप्लर

यह काम है, लेकिन मेरे मामले में मुझे प्लेटफ़ॉर्म एंड्रॉइड को निकालना है और उसके बाद काम करना है।
कुणाल शकटावत

41

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 में त्रुटि से बचा गया है: अनबाउंड उपसर्ग। दिखाई देगा


35

यहाँ क्लीयरटेक्स्ट अनएन्क्रिप्टेड जानकारी को दर्शाता है। एंड्रॉइड 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...

यह अब काम करना चाहिए।


धन्यवाद भाई, इसने मेरे लिए Ionic 4 के लिए काम किया। मैंने डोमेन नाम <domain> example.com </ domain> निर्दिष्ट किया और यह काम कर गया। इसके अलावा इस "से मदद मिल developer.android.com/training/articles/security-config "
जकी मोहम्मद

हर बार जब मैं एप्लिकेशन चलाता हूं तो "<edit-config .." क्यों होता है?
जिल्ले

3
यह काम करता है, लेकिन मैं में इस लाइन को जोड़ने की आवश्यकता config.xmlसे पहले edit-configटैग: <resource-file src="resources/android/xml/network_security_config.xml" target="app/src/main/res/xml/network_security_config.xml" />। धन्यवाद!
tyn

@ZakiMohammed कृपया अपना कोड साझा करें मैं भी एक ही समस्या मदद का सामना कर रहा हूँ!
जॉस

@ जोज मेरे जवाब पर एक नज़र है
जकी मोहम्मद 19

26

समस्या को हल करने के लिए अन्य विकल्प है। फ़ाइल संसाधनों में / 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 मेरा मामला है तो मैं आईपी पते का उपयोग कर रहा हूं, फिर आधार-विन्यास आवश्यक है, लेकिन यदि आपके पास एक डोमेन है। बस डोमेन जोड़ें।


जबकि सभी स्वीकृत समाधान भी आवश्यक थे, यह उत्तर उस समस्या के लिए महत्वपूर्ण था जो मैं सामना कर रहा था।
पीटर मैडले

मेरे लिए काम किया। धन्यवाद
सुहैल मुश्ताक

धन्यवाद! मैं भी एक डोमेन नाम के बजाय एक आईपी का उपयोग कर रहा हूं और आपका जवाब पूरी तरह से फिट है!
जल्दी

22

मैं आज स्वयं इस समस्या में भाग गया, और वास्तव में एक निफ्टी प्लगइन पाया जो आपको अपने अपाचे कॉर्डोवा एप्लिकेशन के लिए एंड्रॉइड 9+ में क्लियरटेक्स ट्रैफ़िक को मैन्युअल रूप से अनुमति देने की कोशिश करने की परेशानी से बचाएगा। बस कॉर्डोबा-प्लगइन-क्लीयरटेक्स्ट इंस्टॉल करें, और प्लगइन को आपके लिए सभी दृश्यों के पीछे ध्यान रखना चाहिए एंड्रॉइड सामान।

$ cordova plugin add cordova-plugin-cleartext
$ cordova prepare
$ cordova run android

जवाब की तलाश में दूसरों के लिए। कॉन्फिगरेशन फिक्स करते समय मैं अन्य त्रुटियों की चपेट में आता रहा, लेकिन इसने सीधे काम किया। धन्यवाद Topher
इवानस्टे

मेरे लिये कार्य करता है। धन्यवाद!
इवांशुका

मेरे लिए काम नहीं किया।
Eskim0

15

कुछ दिनों के संघर्ष के बाद, यह मेरे लिए काम करता है, और मुझे आशा है कि यह आपके लिए भी काम करता है।

इसे अपने कोड के ऊपर अपने 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>

यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें


क्या आप इसका उत्तर दे सकते हैं? stackoverflow.com/questions/59116787/…
pratik jaiswal 12

1
आप समाधान के लिए धन्यवाद, यह केवल एक ही है जो मेरे लिए काम करता है।
लुड ओसोरियो

धन्यवाद, इसका एकमात्र समाधान जो मेरे लिए काम करता है।
गेरार्डो सालाजार सैंचेज़

यही वह समाधान था जो मेरे लिए काम करता था। विशेष रूप से ऐसा लगता है कि trust-anchorsटैग अन्य सभी सामानों को काम करने के लिए अंतिम घटक था।
रोमलिंगर

यदि आप phonegab बिल्ड का उपयोग कर रहे हैं, तो network_security_config को रूट फ़ोल्डर में रखें और संसाधन-फ़ाइल src = "network_security_config.xml" के रूप में पथ दें
mujaffars

12

उद्घाटन के भीतर निम्नलिखित विशेषता जोड़ना <विजेट> टैग ने मेरे लिए काम किया। एंड्रॉइड 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">

2
जब मैं इस सवाल का जवाब देखा मुझे नहीं पता था, लेकिन यह है के अलावाedit-config स्वीकार किए जाते हैं जवाब से कोड (फिक्स unbound prefixत्रुटि)
RishiG

@ ऋषिजी अब यह एक ऐसा उत्तर है जो पूर्ण सही उत्तर बताता है
जार्डिलियोर

@zardilior हां, एक एडिट पर जवाब को हाईजैक करने के लिए उन्हें बधाई ... lol
मार्क मैककॉरल

5

आपको जोड़ना चाहिए

<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>

यह महत्वपूर्ण क्यों है?
टॉमा वैंकूइली

5

निम्नलिखित समाधान है जो मेरे लिए काम किया है। फ़ाइलें जो मैंने अद्यतन की हैं, वे इस प्रकार हैं:

  1. config.xml (पूर्ण पथ: /config.xml)
  2. network_security_config.xml (पूर्ण पथ: /resource/android/xml/network_security_config.xml)

संबंधित फ़ाइलों में परिवर्तन इस प्रकार हैं:

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 सहायता प्रदान करने के लिए।

आशा करता हूँ की ये काम करेगा।


बहुत बहुत धन्यवाद आपने मेरा दिन बचाया।
कर्णन मुथुकुमार

5

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>

सभी को धन्यवाद।


यह मौजूदा आयोनिक समाधान (ओं) से कैसे अलग है?
डेर होकस्टाप्लर

स्थिति अलग है। याद रखें लोग Google खोज से यहां आते हैं। इस स्थिति में वे अलग-अलग स्थिति और सेटिंग्स हो सकते हैं। मेरे मामले में मेरी परियोजना ठीक काम कर रही थी और इसने यह त्रुटि देनी शुरू कर दी, यहाँ तक कि मैंने कोई प्लेटफ़ॉर्म अपडेट या डिवाइस अपडेट नहीं किया।
राजेंद्र

1
धन्यवाद शैंपू, इसने मेरे लिए काम किया :) - काम के समाधान के लिए संस्करण अद्यतनों की पुष्टि करना अच्छा है, क्योंकि समय बीत जाता है और पुराने समाधान अब काम नहीं करते हैं, खासकर एक अस्थिर कभी-बदलते ढांचे में।
अनुदान

2
धन्यवाद दोस्त, कहना चाहता था कि मेरे लिए यह एकमात्र काम करने वाला समाधान था
Anakin001

2
धन्यवाद। इससे मेरी समस्या हल हो गई। मैंने कई अन्य सुझावों की कोशिश की, लेकिन काम नहीं कर रहा था।
मास्टर जेडी

3

पुरानी आयनिक क्ली (4.2) मेरे मामले में समस्या पैदा कर रही थी, 5 समस्या को हल करने के लिए अद्यतन करें


धन्यवाद। मेरे लिए यही समाधान था। मेरे पास ऐप सेंटर पर एक अलग बिल्ड प्रक्रिया चल रही थी जो आयनिक क्ली कमांड चलाने के लिए आयनिक स्थापित कर रही थी। उन्होंने "@ आयनिक / क्ली" के पक्ष में "आयनिक" को चित्रित किया है।
MarkHoward02

0

हम 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", लेकिन मुझे यकीन नहीं है कि यह एंड्रॉइड कॉन्फ़िगरेशन पर लागू होता है।)


0

@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>

यह मौजूदा आयोनिक समाधान (ओं) से कैसे अलग है?
डेर होकस्टाप्लर

मुझे "android: useCleartextTraffic =" true "के साथ" android: networkSecurityConfig = "@ xml / network_security_config" एकल <edit-config> टैग के अंदर जोड़ा गया था, ताकि मेरे लिए काम नहीं कर रहा था और जब मैंने नया जोड़ा तो <edit-config> टैग के लिए "android: useCleartextTraffic =" true "" और इसके बाद भी पेस्ट करें "android: networkSecurityConfig" <edit-config> tag तो यह मेरे लिए काम कर रहा है
yash

0

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

0

यदि आपके पास एनपीएम और कॉर्डोवा कमांड के साथ विरासत कॉर्डोवा ढांचा है। मैं नीचे दिए गए विकल्प का सुझाव दूंगा।

फ़ाइल 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>

यह मौजूदा आयोनिक समाधान (ओं) से कैसे अलग है?
डेर होकस्टाप्लर

कुछ विरासत परियोजनाएँ एनपीएम और कॉर्डोवा आदेशों का पालन नहीं करती हैं जिन्हें मैन्युअल रूप से अद्यतन करना होता है।
प्रदीप्त

0

निम्नलिखित समाधान ने मेरे लिए काम किया-

गोटो 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>

0

बस इस लाइन को प्लेटफार्मों / एंड्रॉइड / ऐप / src / main / AndroidManifest.xml फ़ाइल में जोड़ें

<Application android: hardwareAccelerated = "true" android: icon = "@ mipmap / ic_launcher" android: label = "@ string / app_name" android: supportRtl = "true" android: useClatetextTraffic = "true" >

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.