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

时间:2018-09-09 10:35:43

标签: android android-emulator

在代码中,我在某些地方有字符串127.0.0.1。我有什么办法告诉Android仿真器,对127.0.0.1的所有调用都应类似于对10.0.2.2的调用?

1 个答案:

答案 0 :(得分:0)

最好的方法是将String替换为正确的环境。您可以将以下内容添加到应用android文件中的build.gradle标签中。

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