An Emulator Networking Workaround
I use the Android SDK emulator a lot less than do many developers. I have a fair bit of hardware and prefer to test on it, since users do not use emulators. I usually only crack open an emulator for showing demos in training, conference presentations, and the like.
So, somewhere in the past few months, my emulators lost the ability to access the Internet. The “wireless signal” status bar icon showed four bars with the little “x” indicating no Internet access. The problem persisted across actual networks, indicating that the problem was not tied to WiFi, VPNs, or anything variable about my development machine.
After a lot of searching, this answer has more or less addressed my problem. I say “more or less” in that I cannot use the AVD Manager or Android Studio to start the emulator, but instead need to start it from the command line.
For whatever reason, the emulator has some difficult obtaining the DNS server
from DHCP (or whatever facsimile of DHCP gets used by the emulator for its
networking). Instead, I need to manually stipulate the DNS server via the
-dns-server
command-line option. So, I wind up running the emulator
from the command line like this:
$ANDROID_SDK/emulator/emulator -avd ... -dns-server 8.8.8.8
(where $ANDROID_SDK
is where the Android SDK is installed and
...
is the AVD name as found in the ~/.android/avd
directory)
Then, the emulator behaves normally from a networking standpoint.