অ্যান্ড্রয়েড (9) পাইতে সমস্ত নেটওয়ার্ক সংযোগ প্রকারের HTTP এবং HTTPS কে কীভাবে অনুমতি দেওয়া যায়?


144

অ্যান্ড্রয়েড 9 পাই থেকে এখন, এনক্রিপশন ছাড়াই অনুরোধগুলি কখনই কাজ করবে না। এবং ডিফল্টরূপে, সিস্টেমটি আপনাকে ডিফল্টরূপে টিএলএস ব্যবহার করার প্রত্যাশা করবে। আপনি এখানে এই বৈশিষ্ট্যটি পড়তে পারেন তাই আপনি যদি কেবল এইচটিটিপিএসের মাধ্যমে অনুরোধ করেন তবে আপনি নিরাপদ। তবে অ্যাপ্লিকেশনগুলি কীভাবে বিভিন্ন সাইটগুলির মাধ্যমে অনুরোধ করে, উদাহরণস্বরূপ, ব্রাউজারের মতো অ্যাপ্লিকেশনগুলি।

অ্যান্ড্রয়েড 9 পাইতে আমি কীভাবে সমস্ত ধরণের সংযোগের HTTP এবং HTTPS তে অনুরোধগুলি সক্ষম করতে পারি?

উত্তর:


250

এটি কার্যকর করার সহজ উপায় হ'ল এই বৈশিষ্ট্যটি আপনার AndroidManifest.xmlএখানে ব্যবহার করা যেখানে আপনি httpসমস্ত অনুরোধের জন্য সকলকে অনুমতি দিন :

<application android:usesCleartextTraffic="true">
</application>

তবে আপনি উদাহরণস্বরূপ বিভিন্ন লিঙ্কগুলির জন্য আরও কিছু কনফিগারেশন চান , httpকিছু ডোমেনের জন্য অনুমতি দিচ্ছে তবে অন্য ডোমেনগুলি আপনাকে res/xml/networkSecurityConfig.xmlফাইল সরবরাহ করতে হবে না ।

অ্যান্ড্রয়েড 9 পাইয়ে এটি করার জন্য আপনাকে networkSecurityConfigআপনার ম্যানিফেস্ট applicationট্যাগটিতে এটি সেট করতে হবে :

<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
    <application android:networkSecurityConfig="@xml/network_security_config">




    </application>
</manifest>

তারপরে আপনার xmlফোল্ডারে আপনাকে এখন network_security_configম্যানিফেস্টে যেমন নামকরণ করেছেন ঠিক তেমন একটি ফাইল তৈরি করতে হবে এবং সেখান থেকে এনক্রিপশন ছাড়াই সমস্ত অনুরোধ সক্ষম করতে আপনার ফাইলের সামগ্রীটি এমন হওয়া উচিত:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>
</network-security-config>

সেখান থেকে আপনি যেতে ভাল। এখন আপনার অ্যাপ্লিকেশন সব ধরণের সংযোগের জন্য অনুরোধ করবে। এই বিষয়ে অতিরিক্ত তথ্যের জন্য এখানে পড়ুন


1
@ জেনোলিয়ন আমি এই পরিবর্তনগুলি করার পরে (একটি প্রতিক্রিয়া নেটিভ অ্যাপ্লিকেশন সহ) এটি আর তৈরি করে না। "ম্যানিফেস্ট মার্জারটি সফল নয়"। "অ্যাট্রিবিউট আবেদন @ Andro আইডি থেকে networkSecurityConfig মান = (@ XML / react_native_config): 7: 7: 7-67 এছাড়াও Andro আইডি উপস্থিত হয় 7-67 মান = (@ XML / network_security_config) কোন ধারনা।?
ওয়াইয়াট

@ ওয়াইট আইএম আপনার মতোই সমস্যা রয়েছে, আপনি কি কোনও সমাধান খুঁজে পেয়েছেন?
দান্তে সার্ভেন্টেস

1
উপরে ড্যান্টে সার্ভেটিস আমার উত্তরটি দেখুন।
হর্ষিত অগ্রবাল

3
দেশীয় প্রকল্পের প্রতিক্রিয়াতে আমি এক্সএমএল ফোল্ডারটি কোথায় পেতে পারি
CraZyDroiD

2
এটি নির্ধারণের জন্য প্রচুর সময় নষ্ট করা আসলে এটি এইচটিটিপি সমস্যা। সাধারণত এটি HTTP প্রতিক্রিয়াতে ERROR দেখায়
মিহির ভট্ট

30

উভয় বা এই সমস্যার মুখোমুখি হওয়া ব্যবহারকারীদের জন্য সম্পূর্ণ ওয়ার্কিং সলিউশন কেবল এ জাতীয় AndroidManLive.xML ফাইলে এটি যুক্ত করুন :AndroidReact-nativeandroid:usesCleartextTraffic="true"

android:usesCleartextTraffic="true"
tools:ignore="GoogleAppIndexingWarning">
<uses-library
    android:name="org.apache.http.legacy"
    android:required="false" />

এর মধ্যে <application>.. </application>এই মত ট্যাগ:

<application
      android:name=".MainApplication"
      android:label="@string/app_name"
      android:icon="@mipmap/ic_launcher"
      android:allowBackup="false"
      android:theme="@style/AppTheme"
        android:usesCleartextTraffic="true"
        tools:ignore="GoogleAppIndexingWarning">
        <uses-library
            android:name="org.apache.http.legacy"
            android:required="false" />
      <activity
        android:name=".MainActivity"
        android:label="@string/app_name"/>
 </application>

2
বাহ আমার অ্যাপ্লিকেশনটিতে এটি ঠিকঠাক কাজ করার জন্য ধন্যবাদ, এটির আই / ও ব্যর্থতার সমস্যার সমাধান করার আগে
ভেঙ্কটেশ

1
যদি আপনি পেতে tools:ignoreত্রুটি, যোগ করতে ভুলবেন না xmlns:tools="http://schemas.android.com/tools"আপনার ভিতরে application। ভালো লেগেছে<application xmlns:tools="http://schemas.android.com/tools" ...
Ziyo

2
আমি জানি এটি একটি অ্যান্ড্রয়েড প্রশ্ন তবে এটি দেশীয় বিকাশকারীদের প্রতিক্রিয়া জানাতে সহায়তা করতে পারে, NSAppTransportSecurityআইওএস সলিউশনটি তথ্য.পুলিস্টে যুক্ত করা। stackoverflow.com/questions/38418998/…
আব্দুল সাদিক ইয়ালসিন

16

একটি সহজ উপায় আপনার উপর সেট করা android:usesCleartextTraffic="true"হয়AndroidManifest.xml

android:usesCleartextTraffic="true"

আপনার AndroidManifest.xmlচেহারা মত

<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.dww.drmanar">
   <application
       android:icon="@mipmap/ic_launcher"
       android:label="@string/app_name"
       android:usesCleartextTraffic="true"
       android:theme="@style/AppTheme"
       tools:targetApi="m">
       <activity
            android:name=".activity.SplashActivity"
            android:theme="@style/FullscreenTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
       </activity>
    </application>
</manifest>

আমি আশা করি এটা তোমাকে সাহায্য করবে।


10

সহজ পথ

যোগ usesCleartextTrafficকরার জন্য Andro আইডি

<application
...
android:usesCleartextTraffic="true"
...>

অ্যাপ্লিকেশন ক্লিয়ারটেক্সট এইচটিটিপি-র মতো ক্লিয়ারটেক্সট নেটওয়ার্ক ট্র্যাফিক ব্যবহার করতে চায় কিনা তা নির্দেশ করে। অ্যাপ্লিকেশনগুলির জন্য ডিফল্ট মান যা এপিআই স্তরের 27 বা ততোধিক লক্ষ্যকে লক্ষ্য করে "সত্য"। যে অ্যাপ্লিকেশনগুলি এপিআই স্তর 28 বা ততোধিক ডিফল্টকে "মিথ্যা" হিসাবে লক্ষ্য করে।


8

কেবলমাত্র ফাইলের usesCleartextTrafficঅ্যাপ্লিকেশন ট্যাগে পতাকা সেট AndroidManifest.xmlকরুন। অ্যান্ড্রয়েডের জন্য কনফিগার ফাইল তৈরি করার দরকার নেই।

 <application
   android:usesCleartextTraffic="true"
   .
   .
   .>

7

React Nativeডিবাগ চলাকালীন অ্যাপ্লিকেশনগুলির জন্য xml block@ Xenolion দ্বারা উল্লিখিতটিতে react_native_config.xmlঅবস্থিত করুন<project>/android/app/src/debug/res/xml

নিম্নলিখিত স্নিপেটের মতো:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="false">localhost</domain>
        <domain includeSubdomains="false">10.0.2.2</domain>
        <domain includeSubdomains="false">10.0.3.2</domain>
    </domain-config>
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>
</network-security-config>

1

আমি একই সমস্যা পেয়েছি এবং আমি লক্ষ্য করেছি যে আমার সুরক্ষা কনফিগারেশনে @ স্যানোলিয়ন উত্তর বলে মত আলাদা আলাদা ট্যাগ রয়েছে S

<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">localhost</domain>
    </domain-config>
</network-security-config>

সুতরাং আমি "বেস-কনফিগারেশন" এর জন্য TAGS "ডোমেন-কনফিগারেশন" পরিবর্তন করি এবং এর মতো কাজ করি:

<network-security-config>
    <base-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">localhost</domain>
    </base-config>
</network-security-config>

আপনি এই উত্তর দিতে দয়া করে করতে পারেন stackoverflow.com/questions/59116787/...
প্রতীক jaiswal

0

আপনি HTTP ফিক্সের মাধ্যমে ক্লিয়ারটেক্সট প্রেরণ করছেন কিনা তা পরীক্ষা করতে পারেন: https://medium.com/@son.rommer/fix-cleartext-traffic-error-in-android-9-pie-2f4e9e2235e6
বা
অ্যাপাচি HTTP ক্লায়েন্টের ক্ষেত্রে অবচয় (গুগল থেকে): অ্যান্ড্রয়েড .0.০ সহ আমরা অ্যাপাচি এইচটিটিপি ক্লায়েন্টের জন্য সমর্থন সরিয়েছি। অ্যান্ড্রয়েড 9 দিয়ে শুরু করে, সেই লাইব্রেরিটি বুটক্লাসপথ থেকে সরানো হয় এবং ডিফল্টরূপে অ্যাপ্লিকেশনে উপলভ্য হয় না। অ্যাপাচি এইচটিটিপি ক্লায়েন্ট ব্যবহার চালিয়ে যেতে, অ্যান্ড্রয়েড 9 এবং তদূর্ধ্বকে লক্ষ্যযুক্ত অ্যাপ্লিকেশনগুলি তাদের অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএলে নিম্নলিখিতগুলি যুক্ত করতে পারে:

উত্স https://developer.android.com/about/versions/pie/android-9.0-changes-28

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.