ADB અને Android ઇમ્યુલેટર VPN પાછળ નિષ્ફળ: ત્રણ માર્ગ
ADB શોધ, ઇમ્યુલેટરનું વર્ચ્યુઅલ નેટવર્ક કાર્ડ અને હોસ્ટ રિઝોલ્વર VPN પાછળ અલગ અલગ નિષ્ફળ જાય છે. ટનલને દોષ આપતા પહેલાં દરેક માર્ગ ક્રમમાં ચકાસો.
તમે ઑફિસ 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 હોસ્ટ સર્વરનો પોર્ટ છે, ઉપકરણ જે પોર્ટ પર સાંભળે છે તે નહીં.
ઇમ્યુલેટરને અંદરથી ચકાસો
ઇમ્યુલેટર 10.0.2.3 થી DNS નો જવાબ આપે છે, અને એ રિઝોલ્વર હોસ્ટ પ્રોસેસ દ્વારા પોષાય છે. VPN ક્લાયન્ટ હોસ્ટ રિઝોલ્વર બદલે ત્યારે ઇમ્યુલેટર તેને વારસામાં લઈ શકે છે; ક્લાયન્ટ ઇમ્યુલેટર પ્રોસેસ ફિલ્ટર કરે અથવા ઇમ્યુલેટર શરૂ થયા પછી હોસ્ટ એડેપ્ટર યાદી બદલાય ત્યારે તે નથી લઈ શકતું. એક જ શેલમાંથી સંખ્યાત્મક લક્ષ્ય અને નામ વડે બંનેને અલગ કરો. adb shell ping -c 2 10.0.2.2 સાબિત કરે છે કે વર્ચ્યુઅલ નેટવર્ક હોસ્ટ બાજુ સુધી પહોંચે છે. પછીની નામ શોધ જણાવે છે કે રિઝોલ્યુશન સીમા ઓળંગી છે કે નહીં.
પછી એ જ નામ શોધ હોસ્ટ પર ચલાવો. હોસ્ટ રિઝોલ્વ કરે અને ઇમ્યુલેટર નહીં એટલે ભંગાણ હોસ્ટ રિઝોલ્વર અને ઇમ્યુલેટરના વર્ચ્યુઅલ નેટવર્ક વચ્ચે છે, ટનલમાં નહીં. બંને નિષ્ફળ જાય એટલે હોસ્ટ રિઝોલ્વર જોવાની જગ્યા છે. VPN જોડાયા પછી ઇમ્યુલેટર ફરી શરૂ કરવાનો એક પ્રયાસ યોગ્ય છે, કારણ કે કેટલાક ક્લાયન્ટ એવી રિઝોલ્વર સ્થિતિ ઇન્સ્ટોલ કરે છે જે ચાલુ ઇમ્યુલેટર પ્રોસેસ લેતી નથી.
હોસ્ટ રિઝોલ્વર અને ક્લાયન્ટ ફિલ્ટર ચકાસો
સંપૂર્ણ ટનલ ક્લાયન્ટ હોસ્ટ રિઝોલ્વરને પોતાના રિઝોલ્વરથી બદલે છે, અને split-DNS ક્લાયન્ટ શોધ ડોમેન અને શરતી ફોરવર્ડર ઉમેરે છે. આંતરિક નામો ઘણી વાર એ split-DNS ગોઠવણી પર આધાર રાખે છે, તેથી જુઓ કે જોડાયેલા હોવ ત્યારે હોસ્ટ શું વાપરે છે: રિઝોલ્વરનું સરનામું, શોધ ડોમેન અને શું આંતરિક ઝોન કોર્પોરેટ DNS પર રૂટ થાય છે. જાહેર નામોનો જવાબ આપે પણ આંતરિક નામોનો નહીં એવું રિઝોલ્વર નીતિનો પ્રશ્ન છે, તૂટેલી ટનલ નહીં.
કેટલાક કોર્પોરેટ ક્લાયન્ટ વર્ચ્યુઅલ એડેપ્ટરનો ટ્રાફિક પણ અવરોધે છે. ફિલ્ટર ડ્રાઇવર માટે ઇમ્યુલેટર વર્ચ્યુઅલ એડેપ્ટર જેવું દેખાય છે, તેથી હોસ્ટ સંપૂર્ણ કામ કરી શકે છે જ્યારે નીતિ ઇમ્યુલેટરને નકારે છે. એ નીતિ વર્કસ્ટેશન પરથી દેખાતી નથી, અને પ્રોક્સી સેટિંગની અટકળ તેને જાહેર કરશે નહીં. જો હોસ્ટ રિઝોલ્વ કરે અને ઇમ્યુલેટર રિઝોલ્વર સેટિંગને ધ્યાનમાં ન લેતાં અવરોધિત રહે, તો યોગ્ય એસ્કલેશન ક્લાયન્ટ નીતિ ધરાવતી ટીમને છે.
ચકાસણીનો ક્રમ અને દરેક પરિણામનો અર્થ
ઉપરથી નીચે કામ કરો અને પ્રથમ નિષ્ફળ પંક્તિ પર અટકો. દરેક પરિણામ અલગ માલિક તરફ ઇશારો કરે છે, અને Android Studio ફરી ઇન્સ્ટોલ કરવાથી એક પણ ઠીક થતું નથી.
| Result | Likely owner | Next check |
|---|---|---|
| adb devices is empty with USB attached | USB, driver or adb server | cable, authorization prompt, adb kill-server |
| adb start-server hangs | mDNS discovery | ADB_MDNS_OPENSCREEN=0 |
| Emulator reaches 10.0.2.2, names fail | Host resolver to emulator boundary | host lookup of the same name |
| Host resolves, emulator still fails | Emulator process or client filter | restart emulator, ask IT about virtual adapters |
| Both fail for internal names only | Split DNS or search domain | resolver and zone configuration |
ફક્ત છેલ્લી બે પંક્તિઓ જ સામાન્ય અર્થમાં VPN પ્રશ્નો છે, અને ફક્ત છેલ્લી DNS સામગ્રી વિશે છે. adb દસ્તાવેજીકરણ સર્વર પોર્ટ અને અહીં ઉલ્લેખિત પર્યાવરણ ચલો આવરી લે છે, જે બાકીનું પરીક્ષણ કરતી વખતે પરિવહન બાજુ પ્રામાણિક રાખવા પૂરતું છે.