Android 模拟器访问本地网络 - 是否可以在不更改代码的情况下将 127.0.0.1 映射到 10.0.2.2?



在代码中,我有一些地方有字符串127.0.0.1。有没有办法告诉我 Android 模拟器,所有对 127.0.0.1 的调用都应该像对 10.0.2.2 的调用一样?

最好的方法是将字符串替换为正确的环境。您可以将以下部分添加到应用程序build.gradle文件中的android标签中。

flavorDimensions "version"
productFlavors {
device {
buildConfigField "String", "BASE_WEB_URL", "127.0.0.1"
}
emulator {
buildConfigField "String", "BASE_WEB_URL", "10.0.2.2"
}
}
//comment this block if you want the emulatorRelease build variant (but you probably wont)
variantFilter { variant ->
def names = variant.flavors*.name
if (variant.buildType.name == "release" && names.contains("emulator")) {
// Gradle ignores any variants that satisfy the conditions above.
setIgnore(true)
}
}

这样,您将拥有 3 个构建变体(您可以在 Android Studio 的左下面板上更改构建变体(。根据您选择的构建变体,您将BASE_WEB_URL正确更新到正确的值。

在您的代码中,您只需将所有"127.0.0.1"和"10.0.2.2"替换为

BuildConfig.BASE_WEB_URL

最新更新