Оффисын VPN-д холбогдоход Android Studio ажиллаж байсан эмуляторыг алдаж, adb start-server гацаж, Wi-Fi дээрх бодит утас төхөөрөмжийн жагсаалтаас гардаг. Нэг туннель нэг бүтээгдэхүүнийг хааж байгаа мэт харагдана. Үнэн хэрэгтээ гурван тусдаа зам гурван аргаар бүтэлгүйтдэг: adb төхөөрөмжийн илрүүлэлт, эмуляторын виртуал сүлжээ, хост-ийн шийдэгч. Туннель ихэвчлэн зөвхөн сүүлийнхийг эзэмшдэг, ихэнхдээ зөвхөн нэг хэсгийг нь.

Гурван сокет, гурван эзэн

adb сервер хост-ийн 5037 порт дээр сонсож, төхөөрөмжүүдтэй USB эсвэл TCP-ээр харилцаж, сүлжээний илрүүлэлтэд mDNS ашигладаг. Эмулятор өөрийн виртуал маршрутизаторын ард ажилладаг: зочин 10.0.2.15, гарц нь 10.0.2.2, DNS сервер нь 10.0.2.3 бөгөөд эмуляторын процесс энэ бүгдийг хост-ийн сокет болгон хөрвүүлдэг. Хост-ийн шийдэгч нь VPN клиент DNS болон хайлтын домэйнуудыг суулгадаг газар юм.

Энэ ялгаа нь нэг засвар нэг хэрэгсэлд ажиллаад нөгөөд нь ажиллахгүй байгаа шалтгааныг тайлбарлана. Хост-ийн шийдэгчийг сольсон клиент ажиллаж байгаа эмуляторын процессыг эхлэх үед уншсан шийдэгчийн төлөвтэй үлдээнэ. multicast шүүдэг клиент DNS-д хүрэхгүйгээр илрүүлэлтийг эвддэг. Виртуал адаптеруудыг шүүдэг клиент хост-ийн хөтөч ажиллаж байхад эмуляторыг татгалздаг. Симптом бүр өөр шалтгаантай тул ямар ч тохиргоог өөрчлөхөөс өмнө бүтэлгүйтэж буй замыг тодорхойлно уу.

adb-ийн харж чадах зүйлээс эхэлнэ үү

VPN-д хүрэхээс өмнө adb devices ажиллуулна уу. Хоосон жагсаалт нь тээврийн асуудал, маршрутын асуудал биш бөгөөд сервер хэзээ ч жагсааж үзээгүй төхөөрөмжийг ямар ч туннелийн тохиргоо засахгүй. Серверийг цэвэрхэн дахин эхлүүлнэ үү: эхлээд adb kill-server, дараа нь adb start-server, аль портыг эзэлснийг мэдэхээр гаралтыг уншина уу. Эхлэл нь өөрөө гацвал multicast шүүдэг сүлжээнд mDNS илрүүлэлт ердийн сэжигтэн; баримтжуулсан шийдэл нь илрүүлэлтийг унтрааж серверийг эхлүүлэх юм:

ADB_MDNS_OPENSCREEN=0 adb start-server
adb devices

Бодит төхөөрөмжид USB нь хамгийн богино зам. Хэрэв TCP хэрэгтэй бол төхөөрөмжийг сонсох горимд adb tcpip 5555 -ээр оруулаад төхөөрөмжийн хаяг болон портод холбогдоно уу, adb connect 192.0.2.10:5555. 5037 порт нь хост-ийн серверийн порт, төхөөрөмжийн сонсдог порт биш.

Эмуляторыг дотроос нь шалгана уу

Эмулятор DNS-д 10.0.2.3-аас хариулж, тэр шийдэгчийг хост-ийн процесс тэжээдэг. VPN клиент хост-ийн шийдэгчийг сольсон үед эмулятор үүнийг өвлөж болно; клиент эмуляторын процессыг шүүсэн эсвэл эхэлсний дараа хост-ийн адаптерын жагсаалт өөрчлөгдсөн үед өвлөж чадахгүй. Хоёулыг нэг shell-ээс тоон зорилт болон нэрээр ялгана уу. adb shell ping -c 2 10.0.2.2 виртуал сүлжээ хост-ийн талд хүрч байгааг батална. Дараах нэрийн хайлт нь шийдэл хил хязгаарыг давсан эсэхийг харуулна.

Дараа нь мөнөөх нэрийн хайлтыг хост дээр ажиллуулна уу. Хост шийдэж, эмулятор шийдэхгүй бол тасархай нь хост-ийн шийдэгч ба эмуляторын виртуал сүлжээний хооронд, туннельд биш. Хоёулаа бүтэлгүйтвэл хост-ийн шийдэгчийг харах ёстой. VPN холбогдсоны дараа эмуляторыг дахин эхлүүлэх нь нэг оролдлогын үнэтэй, учир нь зарим клиентүүд ажиллаж байгаа эмуляторын процесс авдаггүй шийдэгчийн төлөвийг суулгадаг.

Хост-ийн шийдэгч болон клиентийн шүүлтүүрийг шалгана уу

Бүрэн туннелийн клиент хост-ийн шийдэгчийг өөрийнхөөр сольж, split-DNS клиент хайлтын домэйн болон нөхцөлт дамжуулагч нэмдэг. Дотоод нэрс ихэвчлэн тэр split-DNS тохиргооноос хамаардаг тул холбогдсон үед хост юу ашиглаж байгааг харна уу: шийдэгчийн хаяг, хайлтын домэйн, дотоод бүс корпорацийн DNS-д чиглүүлэгдэж байгаа эсэх. Нийтийн нэрсэд хариулж дотоод нэрсэд хариулахгүй шийдэгч нь бодлогын асуудал, эвдэрсэн туннель биш.

Зарим корпорацийн клиент виртуал адаптеруудаас ирэх урсгалыг ч блоклодог. Шүүлтүүрийн драйверт эмулятор виртуал адаптер мэт харагддаг тул хост төгс ажиллаж байхад бодлого эмуляторыг татгалзаж болно. Тэр бодлого ажлын станцаас харагдахгүй бөгөөд прокси тохиргоог таамаглах нь илрүүлэхгүй. Хост шийдэж, шийдэгчийн тохиргооноос үл хамааран эмулятор блоклогдсон бол зөв шатлал нь клиентийн бодлогыг эзэмшдэг баг руу.

Шалгалтын дараалал ба үр дүн бүрийн утга

Дээрээс доош ажиллаж, эхний бүтэлгүйтсэн мөрөнд зогсоно уу. Үр дүн бүр өөр эзэнд зааж, аль нь ч Android Studio-г дахин суулгаснаар засагдахгүй.

ResultLikely ownerNext check
adb devices is empty with USB attachedUSB, driver or adb servercable, authorization prompt, adb kill-server
adb start-server hangsmDNS discoveryADB_MDNS_OPENSCREEN=0
Emulator reaches 10.0.2.2, names failHost resolver to emulator boundaryhost lookup of the same name
Host resolves, emulator still failsEmulator process or client filterrestart emulator, ask IT about virtual adapters
Both fail for internal names onlySplit DNS or search domainresolver and zone configuration

Зөвхөн сүүлийн хоёр мөр л ердийн утгаар VPN асуулт бөгөөд зөвхөн сүүлийнх нь DNS-ийн агуулгын тухай. adb-ийн баримт бичиг серверийн порт болон энд дурдсан орчны хувьсагчдыг хамардаг бөгөөд үлдсэнийг туршихдаа тээврийн талыг шударга байлгахад хангалттай.

Холбоотой нийтлэлүүд