[LG G Watch] awesomebing1:
Among many other things, it would appear this specific issue is quite common among all Wear devices. I'd link to... so.. many... Google why... bug reports, forum posts, and of course the ones here but I can't.

I set out yesterday to figure out where it's hardcoded. To save you the amount of failure, it's hardcoded in /system/frameworks/wear-service.jar in com.google.android.clockwork.bluetooth.CompanionProxyShard. I'd just like to take this moment and say dear Google: why did you copy SettingsProvider in what feels like all packages, and have the red herring of 8.8.8.8 as a DNS hint (never actually used in the package)?

.field private static final GOOGLE_DNS1:Ljava/lang/String; = "8.8.8.8"
.field private static final GOOGLE_DNS2:Ljava/lang/String; = "8.8.4.4"

I'm sure there are many other ways to edit it, but I chose the following route. From what I can tell this works on any AW 2.0 watch as it's an issue on all such watches connecting to phone for the proxy.

Requirements:

apktool

squashfs-tools on Ubuntu, or just squashfs on macOS's Homebrew

Some type of text editor to edit smali

mksquashfs from the Android source code. mksquashfs installed normally doesn't have stuff needed. The command I used to get it was

make mksquashfs

file_contents from the lenok2dory source code. I'd hardlink a link but I (as of right now) only have 2 out of the required 10 posts needed to do so.

Unpack system4dory.img. You'd get this from squashfs-tools on Ubuntu, or just squashfs on macOS's Homebrew. If on Ubuntu or such, you might have to use sudo for manipulating this now on if it complains about xattr.

Download file_contents somewhere you will remember.

cd right into the directory you have system4dory.img downloaded, and use unsquashfs to extract it. From there, cd into system/frameworks on your device, not watch.

Use

apktool d wear-service.jar

to decompile/unarchive/such the framework, and head on over to smali/com/google/android/clockwork/bluetooth. Open up CompanionProxyShard.smali in your favorite text editor and edit away. You may wish to do a find/replace as it appears the DNS is listed more than once in that file.

Once you're done there, cd back up to system/frameworks. Run

apktool b wear-service.jar.out

to build the framework back up. Delete the current wear-service.jar and copy wear-service.jar.out/dist/wear.service.jar to system/frameworks.

Delete wear-service.jar.out. cd out of squashfs-root.

More or less copying what's done in make.sh on lenok2dory, run

/path/to/out/host/linux-x86/bin/mksquashfs squashfs-root test_system.img -comp gzip -b 131072 -no-exports -noappend -mount-point /system -context-file /path/to/file_contexts

Again, you may have to use sudo if on Ubuntu or such.

Please take this opportunity while it's building (assuming your machine is slow, mine is a bit older so it took about 2 minutes) to wipe your Dalvik cache. You'll run into quite a few issues. It will take a while, think 13 minutes. Best I've found is enabling adb while on stock, and using adb logcat while it boots to monitor progress.

Flash your new system image, and enjoy! insert tada emoji here

Assuming it booted, congratulations! A great way to double check if it worked is to look at adb logcat, for something along the lines of

08-21 20:20:11.251 540 588 D ConnectivityService: Switching to new default network: NetworkAgentInfo{
ni{[type: COMPANION_PROXY[], state: CONNECTED/CONNECTED, reason: (unspecified), extra: (none), failover: false, available: true, roaming: false, metered: false]}
network{102} nethandle{438103100126}
lp{{InterfaceName: lo LinkAddresses: [] Routes: [0.0.0.0/0 -> 127.0.0.1 lo,]
DnsAddresses: [8.8.8.8,8.8.4.4,] Domains: null MTU: 1500}}
nc{[ Transports: BLUETOOTH Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VPN&FOREGROUND LinkUpBandwidth>=1600Kbps LinkDnBandwidth>=1600Kbps]} Score{60} everValidated{false} lastValidated{false} created{true} lingering{false} explicitlySelected{false} acceptUnvalidated{false} everCaptivePortalDetected{false} lastCaptivePortalDetected{false} }

It specifically says what DNS addresses it'll request, and further on by sysproxy what hostnames it's resolved to what.