Keni publikuar një build të ri, keni kaluar në VPN dhe i njëjti ekran ndaloi së ngarkuari. Në Android 9 dhe më vonë shpjegimi më i zakonshëm është më i mërzitshëm: platforma refuzon HTTP të thjeshtë për aplikacionet që synojnë API 28 ose më lart, dhe VPN-ja ndryshoi vetëm aq kontekst sa për ta zbuluar. Gabimi që shihni varet nga klienti HTTP, prandaj thotë kaq rrallë cleartext.

Çfarë është në të vërtetë ky dështim

Nga Android 9 platforma bllokon cleartext si parazgjedhje sapo një aplikacion synon nivelin API 28 ose më lart. Kërkesa drejt një adrese HTTP të thjeshtë refuzohet nga platforma përpara se një paketë e vetme të largohet nga pajisja. Çfarë gabimi shihni varet nga biblioteka HTTP: ndonjëherë një dështim i përgjithshëm rrjeti, ndonjëherë një skadim kohe, ndonjëherë një mesazh që e emërton cleartext drejtpërdrejt. Ajo që nuk bën kurrë është të arrijë serverin tuaj. Android dokumenton parazgjedhjen dhe alternativën e kufizuar në domen në udhëzuesin e konfigurimit të sigurisë.

Një shfletues në të njëjtën pajisje mund ta ngarkojë faqen përsëri, dhe ky është indici që shumica e njerëzve e humbasin. Shfletuesit nuk i nënshtrohen politikës së sigurisë së rrjetit të aplikacionit tuaj.

Pse fajësohet VPN-ja

Zakonisht ndryshojnë tri gjëra njëkohësisht. Aplikacioni mund të zgjidhë një emër tjetër hosti pasi lidhet VPN-ja, pajisja mund të jetë e re me një build më të ri, ose vetë build-i mund të jetë zhvendosur në një nivel API objektiv që aktivizon parazgjedhjen. VPN-ja duket dhe SDK-ja objektiv nuk duket, prandaj VPN-ja merr biletën.

Krahasoni nivelet objektive të build-it të vjetër dhe të riut përpara se të prekni konfigurimin e rrjetit. Një aplikacion që synon 27 ose më poshtë është i përjashtuar, dhe kjo shpjegon çdo raport të tipit «tek unë funksionon në telefonin e vjetër».

Ku përfundon në të vërtetë flamuri i Expo

Në një projekt Expo të menaxhuar, shtimi i një cilësimi në app.json nuk redakton një manifest Android, sepse manifestin e prodhojnë prebuild dhe build-et e zhvillimit. Është shtojca e konfigurimit ajo që e shkruan cilësimin në atë fazë. Rruga e mbështetur është expo-build-properties, konfiguruar në konfigurimin e aplikacionit me opsionin cleartext nën android.

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

Snippet-i vendos vetëm opsionin e shtojcës; manifesti prodhohet më vonë. Ekzekutoni një prebuild ose një build të ri të klientit të zhvillimit, pastaj përpara se të ritestoni inspektoni AndroidManifest.xml e gjeneruar për android:usesCleartextTraffic, sepse një ringarkim vetëm me JS e mban manifestin e vjetër. Përputhni versionin e shtojcës me Expo SDK në të cilin punon projekti. Opsionet e shtojcës lëvizin midis versioneve, dhe një snippet i kopjuar nga një SDK tjetër është burim i besueshëm i no-op-ve të heshtura.

Rrjedha bare dhe opsioni më i ngushtë

Për bare React Native ekuivalenti është android:usesCleartextTraffic në elementin application, ose një konfigurim sigurie rrjeti që lejon cleartext vetëm për domaine të emërtuara. Forma e kufizuar në domen është ajo që duhet preferuar, sepse lejon API-n e brendshme dhe lë gjithçka tjetër në HTTPS. Ajo dokumenton edhe listën e vet të përjashtimeve, dhe pikërisht për atë pjesë do të pyesë një recensues.

Asnjëra nga dy qasjet nuk e ndryshon parazgjedhjen e platformës për diçka që nuk e keni emërtuar.

Fillimisht vërtetojeni nga regjistri i pajisjes

Përpara se të redaktoni konfigurimin, merrni dështimin e saktë. adb logcat në një pajisje të lidhur tregon refuzimin e cleartext nga platforma dhe emërton komponentin që e ngriti. Një socket i refuzuar, një emër që nuk zgjidhet ose një shtrëngim duarsh TLS i dështuar tregojnë diku krejt tjetër, dhe aktivizimi i cleartext vetëm do ta dobësonte aplikacionin kot.

Pastaj mbajeni prodhimin të ndershëm. Cleartext është i pranueshëm për një pikë laboratori që nuk mund të ofrojë TLS, dhe vetëm për kohën më të shkurtër që mund të planifikoni. Nëse API-ja mund ta përfundojë TLS brenda rrjetit privat, vendoseni certifikatën në depon e besimit të pajisjes dhe lëreni cleartext të çaktivizuar, sepse tuneli e kripton rrugën deri në daljen e tij dhe asgjë përtej.

Sapo pika të përgjigjet mbi HTTPS, hiqni lejen, rindërtoni dhe testoni në VPN dhe në Wi-Fi të zakonshëm në të njëjtën sesion. Zgjidhja e emrave mund të ndryshojë midis këtyre dy rrugëve, dhe vetëm çifti ju thotë cila thotë të vërtetën.

Artikuj të ngjashëm