কর্ডোভা অ্যান্ড্রয়েড 8.0 এ আপগ্রেড করার পরে , লক্ষ্যগুলিতে net::ERR_CLEARTEXT_NOT_PERMITTED
সংযোগ দেওয়ার চেষ্টা করার সময় আমি ত্রুটিগুলি দেখতে পাচ্ছি http://
।
এটি কেন এবং আমি কীভাবে এটি সমাধান করতে পারি?
কর্ডোভা অ্যান্ড্রয়েড 8.0 এ আপগ্রেড করার পরে , লক্ষ্যগুলিতে net::ERR_CLEARTEXT_NOT_PERMITTED
সংযোগ দেওয়ার চেষ্টা করার সময় আমি ত্রুটিগুলি দেখতে পাচ্ছি http://
।
এটি কেন এবং আমি কীভাবে এটি সমাধান করতে পারি?
উত্তর:
কর্ডোভা অ্যান্ড্রয়েড প্ল্যাটফর্মের ডিফল্ট এপিআই স্তরটি আপগ্রেড করা হয়েছে। একটি Android 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
আপনার অ্যান্ড্রয়েড প্রকল্পে পরিবর্তনগুলি করা হয়েছে ?
কনফিগ.এক্সএমএলে দুটি জিনিস সংশোধন করতে হবে তাই সঠিক উত্তরটি এক্সএমএলস যুক্ত করা উচিত: অ্যান্ড্রয়েড:
<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 এর পর থেকে, প্রস্তাবিত হয় যে কোনও ধরণের vesদ্ধি নেমে আসেনি তা নিশ্চিত করার জন্য অ্যাপ্লিকেশনগুলিকে HTTPS API গুলি কল করা উচিত।
তবে, আমাদের যদি এখনও এইচটিটিপি এপিআই কল করতে হয় তবে আমরা নিম্নলিখিতটি করতে পারি:
প্ল্যাটফর্ম: অয়নিক 4
নামের একটি ফাইল তৈরি করুন: 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>
এখন প্রোজেক্ট-রুট / কনফিগারেশন.এক্সএমএল , নিম্নলিখিত লাইনগুলি আপডেট করুন:
<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" />
। ধন্যবাদ!
সমস্যা সমাধানের জন্য আরও কিছু বিকল্প রয়েছে। ফাইল সংস্থানগুলিতে / অ্যান্ড্রয়েড / এক্সএমএল / নেটওয়ার্ক_সিকিউরিটি_কনফিগ.এক্সএমএল। ঢোকান:
<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>
আমি যদি আমার আইপি আইপি ঠিকানা ব্যবহার করি তবে বেস-কনফিগার করা প্রয়োজন, তবে আপনার যদি কোনও ডোমেন থাকে। শুধু ডোমেন যুক্ত করুন।
আমি আজ নিজেই এই সমস্যায় পড়েছি এবং একটি সত্যিই নিফটি প্লাগইন পেয়েছি যা আপনাকে আপনার অ্যাপাচি কর্ডোভা অ্যাপ্লিকেশনের জন্য অ্যান্ড্রয়েড 9+ এ ম্যানুয়ালি ক্লিয়ারটেক্সট ট্র্যাফিকের অনুমতি দেওয়ার চেষ্টা করার ঝামেলা বাঁচাবে। কেবল কর্ডোভা-প্লাগইন-ক্লিয়ারটেক্সট ইনস্টল করুন, এবং প্লাগইনটি আপনার জন্য পর্দার অন্তর্ভুক্ত অ্যান্ড্রয়েড স্টাফের সমস্ত যত্ন নেবে।
$ cordova plugin add cordova-plugin-cleartext
$ cordova prepare
$ cordova run android
কয়েক দিনের লড়াইয়ের পরে, এটি আমার পক্ষে কাজ করে এবং আমি আশা করি এটিও আপনার পক্ষে কাজ করে।
আপনার কোডের শীর্ষে এটি আপনার CONFIG.XML এ যুক্ত করুন ।
<access origin="*" />
<allow-navigation href="*" />
এবং এটি, প্ল্যাটফর্মের অধীনে অ্যান্ড্রয়েড।
<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" />
এই ফাইলটি "রিসোর্স / অ্যান্ড্রয়েড / এক্সএমএল / নেটওয়ার্ক_সিকিউরিটি_কনফিগ.এক্সএমএল" এ ফলো কোড যুক্ত করুন ।
<?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
হয়েছিল যে সমস্ত অন্যান্য জিনিস কাজ করার জন্য ট্যাগগুলি চূড়ান্ত উপাদান component
উদ্বোধনী <উইজেট> ট্যাগের মধ্যে নিম্নলিখিত বৈশিষ্ট্যগুলি যুক্ত করা আমার পক্ষে কাজ করেছিল। অ্যান্ড্রয়েড 9 এমুলেটরটিতে সঠিক এবং লাইভ পুনরায় লোড হয়। xmlns: Android = "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>
প্রতি
সম্পদ / 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 includeSubdomains="true">localhost</domain>
</domain-config> </network-security-config>
সমাধানটি আমার পক্ষে কাজ করেছে যা নিম্নলিখিত। আমি যে ফাইলগুলি আপডেট করেছি সেগুলি নিম্নরূপ:
সম্পর্কিত ফাইলগুলির পরিবর্তনগুলি নিম্নরূপ:
1. 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. নেটওয়ার্ক_সিকিউরিটি_কনফিগ.এক্সএমএল
এই ফাইলটিতে আমি <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>
সহায়তার জন্য @ আশুতোষকে ধন্যবাদ।
আশা করি এটা সাহায্য করবে.
আমি আইওনিক 5.4.13 ব্যবহার করছি, কর্ডোভা 9.0.0 (কর্ডোভা-লিব@9.0.1)
আমি তথ্য পুনরাবৃত্তি হতে পারে তবে আমার জন্য কিছু প্লাগইন যুক্ত করার পরে সমস্যা উপস্থিত হতে শুরু করেছে (এখনও নিশ্চিত নয়)। আমি উপরের সমস্ত সমন্বয় চেষ্টা করেছি, কিন্তু কিছুই কার্যকর হয়নি। এটি কেবল যুক্ত করার পরে কাজ শুরু করে:
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
প্রকল্পে ফাইল করতে
সম্পদ / 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">10.1.25.10</domain>
</domain-config>
</network-security-config>
সবাইকে ধন্যবাদ.
ওল্ড আয়নিক ক্লিপ (৪.২) আমার ক্ষেত্রে সমস্যা সৃষ্টি করছে, 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
।
(আমি এটির জন্য আইওএস কনফিগারেশন অফার দেখছি buildType="debug"
, তবে এটি অ্যান্ড্রয়েড কনফিগারেশনের ক্ষেত্রে প্রযোজ্য কিনা তা আমি নিশ্চিত নই))
@ ডিয়ার হচস্টাপলার সমাধানের জন্য ধন্যবাদ।
তবে আইওনিক 4 এ প্রজেক্ট কনফিগারেশনের কিছু কাস্টমাইজেশন আমার জন্য কাজ করে x
উইজেট ট্যাগে একটি লাইন যুক্ত করুন
<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" 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>
আয়নিক 4 ক্যাপাসিটার প্রকল্পে, যখন আমি পরীক্ষার জন্য অ্যান্ড্রয়েড ফোনে প্যাকেজ করি এবং স্থাপন করি তখন আমি এই ত্রুটি পেয়েছি। ক্যাপাসিটারটি পুনরায় ইনস্টল করে এবং অ্যান্ড্রয়েড প্ল্যাটফর্ম আপডেট করে সমাধান করা হয়েছে।
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
যদি আপনার লিপিসি কর্ডোভা ফ্রেমওয়ার্ক থাকে তবে এনপিএম এবং কর্ডোভা কমান্ড নিয়ে সমস্যা রয়েছে। আমি নীচের বিকল্পটি পরামর্শ করব।
অ্যান্ড্রয়েড / রেস / এক্সএমএল / নেটওয়ার্ক_সিকিউরিটি_কনফিগ.এক্সএমএল ফাইল তৈরি করুন -
<?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>
AndroidManLive.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>
এই লাইনটি কেবল প্ল্যাটফর্ম / অ্যান্ড্রয়েড / অ্যাপ / এসসিআর / প্রধান / অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল ফাইলটিতে যুক্ত করুন
<অ্যাপ্লিকেশন অ্যান্ড্রয়েড: হার্ডওয়্যারঅ্যাক্সিলারেটেড = "সত্য" অ্যান্ড্রয়েড: আইকন = "@ মিপম্যাপ / আইসি_লাঞ্চার" অ্যান্ড্রয়েড: লেবেল = "@ স্ট্রিং / অ্যাপ্লিকেশন_নাম" অ্যান্ড্রয়েড: সমর্থনআরটিএল = "ট্রু" অ্যান্ড্রয়েড: ইউজারস ক্লিরিটেক্সটট্রাফিটি = "সত্য" >
error: unbound prefix.
আমার কর্ডোভা অ্যাপ্লিকেশনটি তৈরি করার চেষ্টা করার সময় আমি একটি ত্রুটির মুখোমুখি হয়েছি ( )। সমাধানটি ছিল আমারconfig.xml
ফাইলে যুক্ত করা, আমার মূল<widget>
উপাদানটিতে বৈশিষ্ট্যটিxmlns:android="http://schemas.android.com/apk/res/android