మీరు కొత్త బిల్డ్ విడుదల చేసి, VPN కి మారారు, అదే స్క్రీన్ లోడ్ కావడం ఆగిపోయింది. Android 9 మరియు తర్వాత ఎక్కువ సాధారణ వివరణ మరింత నీరసంగా ఉంటుంది: API 28 లేదా అంతకంటే ఎక్కువ లక్ష్యంగా పెట్టుకున్న యాప్లకు ప్లాట్ఫారమ్ సాధారణ HTTP ను తిరస్కరిస్తుంది, VPN దాన్ని బయటపెట్టడానికి సరిపడా సందర్భాన్ని మాత్రమే మార్చింది. మీరు చూసే లోపం HTTP క్లయింట్పై ఆధారపడి ఉంటుంది, అందుకే అది cleartext అని చాలా అరుదుగా చెబుతుంది.

ఈ వైఫల్యం నిజానికి ఏమిటి

Android 9 నుండి యాప్ API స్థాయి 28 లేదా అంతకంటే ఎక్కువ లక్ష్యంగా పెట్టుకున్న వెంటనే ప్లాట్ఫారమ్ డిఫాల్ట్గా cleartext ను నిరోధిస్తుంది. సాధారణ HTTP చిరునామాకు వెళ్లే అభ్యర్థన ఒక్క ప్యాకెట్ కూడా పరికరం నుండి బయటకు వెళ్లకముందే ప్లాట్ఫారమ్ తిరస్కరిస్తుంది. ఏ లోపం కనిపిస్తుంది అనేది HTTP లైబ్రరీపై ఆధారపడి ఉంటుంది: కొన్నిసార్లు సాధారణ నెట్వర్క్ వైఫల్యం, కొన్నిసార్లు సమయం ముగియడం, కొన్నిసార్లు cleartext ను నేరుగా పేర్కొనే సందేశం. అది ఎప్పుడూ చేయనిది మీ సర్వర్ను చేరుకోవడం. Android డిఫాల్ట్ మరియు డొమైన్-పరిమిత ప్రత్యామ్నాయాన్ని తన భద్రతా కాన్ఫిగరేషన్ మార్గదర్శినిలో నమోదు చేస్తుంది.

అదే పరికరంలోని బ్రౌజర్ ఇప్పటికీ పేజీని లోడ్ చేయగలదు, చాలామంది మిస్ చేసే సూచన అదే. బ్రౌజర్లు మీ యాప్ నెట్వర్క్ భద్రతా విధానానికి లోబడవు.

VPN పై నింద ఎందుకు

సాధారణంగా మూడు విషయాలు ఒకేసారి మారుతాయి. VPN కనెక్ట్ అయిన తర్వాత యాప్ వేరే హోస్ట్నేమ్ను పరిష్కరించవచ్చు, పరికరం కొత్తది మరియు కొత్త బిల్డ్ కలిగి ఉండవచ్చు, లేదా బిల్డ్ స్వయంగా డిఫాల్ట్ను ప్రేరేపించే లక్ష్య API స్థాయికి మారి ఉండవచ్చు. VPN కనిపిస్తుంది, లక్ష్య SDK కనిపించదు, కాబట్టి టికెట్ VPN కే దక్కుతుంది.

నెట్వర్క్ కాన్ఫిగ్ను తాకే ముందు పాత మరియు కొత్త బిల్డ్ల లక్ష్య స్థాయిలను పోల్చండి. 27 లేదా అంతకంటే తక్కువ లక్ష్యంగా పెట్టుకున్న యాప్ మినహాయింపు పొందుతుంది, «నా పాత ఫోన్లో ఇది పనిచేస్తుంది» అనే ప్రతి నివేదికను ఇదే వివరిస్తుంది.

Expo ఫ్లాగ్ నిజానికి ఎక్కడ పడుతుంది

నిర్వహిత Expo ప్రాజెక్ట్లో app.json కు సెట్టింగ్ జోడించడం Android మానిఫెస్ట్ను సవరించదు, ఎందుకంటే మానిఫెస్ట్ను prebuild మరియు డెవలప్మెంట్ బిల్డ్లు ఉత్పత్తి చేస్తాయి. ఆ దశలో సెట్టింగ్ను రాసేది కాన్ఫిగ్ ప్లగిన్. మద్దతు ఉన్న మార్గం expo-build-properties, ఇది యాప్ కాన్ఫిగ్లో android కింద cleartext ఎంపికతో కాన్ఫిగర్ చేయబడుతుంది.

{
  "plugins": [
    ["expo-build-properties", {
      "android": { "usesCleartextTraffic": true }
    }]
  ]
}

స్నిప్పెట్ ప్లగిన్ ఎంపికను మాత్రమే సెట్ చేస్తుంది; మానిఫెస్ట్ తర్వాత ఉత్పత్తి అవుతుంది. prebuild లేదా కొత్త డెవలప్మెంట్-క్లయింట్ బిల్డ్ నడపండి, తర్వాత మళ్లీ పరీక్షించే ముందు ఉత్పత్తి అయిన AndroidManifest.xml లో android:usesCleartextTraffic ఉందో లేదో చూడండి, ఎందుకంటే JS మాత్రమే రీలోడ్ చేస్తే పాత మానిఫెస్ట్ అలాగే ఉంటుంది. ప్లగిన్ వెర్షన్ను ప్రాజెక్ట్ నడిచే Expo SDK తో సరిపోల్చండి. ప్లగిన్ ఎంపికలు విడుదలల మధ్య మారుతాయి, మరో SDK నుండి కాపీ చేసిన స్నిప్పెట్ నిశ్శబ్ద నిష్క్రియతకు నమ్మదగిన మూలం.

Bare ప్రవాహం మరియు ఇరుకైన ఎంపిక

bare React Native కోసం సమానమైనది application ఎలిమెంట్పై android:usesCleartextTraffic, లేదా పేరున్న డొమైన్లకు మాత్రమే cleartext అనుమతించే నెట్వర్క్ భద్రతా కాన్ఫిగ్. డొమైన్-పరిమిత రూపాన్ని ఎంచుకోవాలి, ఎందుకంటే అది అంతర్గత API ను అనుమతించి మిగతావన్నీ HTTPS లో ఉంచుతుంది. అది తన స్వంత మినహాయింపు జాబితాను కూడా నమోదు చేస్తుంది, సమీక్షకుడు అడిగేది అదే భాగం గురించి.

రెండు విధానాలలో ఏదీ మీరు పేరు పెట్టని దేనికీ ప్లాట్ఫారమ్ డిఫాల్ట్ను మార్చదు.

మొదట పరికర లాగ్ నుండి నిరూపించండి

కాన్ఫిగ్ను సవరించే ముందు ఖచ్చితమైన వైఫల్యాన్ని పొందండి. కనెక్ట్ చేసిన పరికరంలో adb logcat ప్లాట్ఫారమ్ cleartext తిరస్కరణను చూపుతుంది మరియు దాన్ని లేవనెత్తిన భాగాన్ని పేర్కొంటుంది. తిరస్కరించిన సాకెట్, పరిష్కరించలేని పేరు లేదా విఫలమైన TLS కరచాలనం పూర్తిగా వేరే చోటుకు సూచిస్తాయి, cleartext ను ప్రారంభించడం యాప్ను వ్యర్థంగా బలహీనపరుస్తుంది.

తర్వాత ఉత్పత్తిని నిజాయితీగా ఉంచండి. TLS అందించలేని ల్యాబ్ ఎండ్పాయింట్కు cleartext ఆమోదయోగ్యం, మీరు ప్లాన్ చేయగల అతి తక్కువ సమయానికి మాత్రమే. API ప్రైవేట్ నెట్వర్క్ లోపల TLS ను ముగించగలిగితే, సర్టిఫికెట్ను పరికరం ట్రస్ట్ స్టోర్లో ఉంచి cleartext ను నిష్క్రియంగా ఉంచండి, ఎందుకంటే టన్నెల్ తన నిష్క్రమణ వరకు మార్గాన్ని ఎన్క్రిప్ట్ చేస్తుంది, ఆ తర్వాత ఏదీ కాదు.

ఎండ్పాయింట్ HTTPS లో సమాధానం ఇవ్వడం ప్రారంభించిన తర్వాత అనుమతిని తీసివేసి, మళ్లీ బిల్డ్ చేసి, అదే సెషన్లో VPN లో మరియు సాధారణ Wi-Fi లో పరీక్షించండి. పేర్ల పరిష్కారం ఈ రెండు మార్గాల్లో భిన్నంగా ఉండవచ్చు, ఏది నిజం చెబుతోందో ఆ జంట మాత్రమే చెబుతుంది.

సంబంధిత వ్యాసాలు