【问题标题】:Nativescript: how to use different environment vars for an emulator and a real device?Nativescript:如何为模拟器和真实设备使用不同的环境变量?
【发布时间】:2019-05-15 00:47:45
【问题描述】:

我正在使用 Nativescript-Vue 构建一个项目。我有标准的 Webpack 设置。

我知道我可以使用类似这样的方式传递不同的变量:

tns build android --bundle --env.development --env.property=value

我如何“区分”两个不同的平台(模拟器和真实设备,它们都是“开发”),以便传递不同的 API url?

【问题讨论】:

标签: android webpack nativescript


【解决方案1】:

你可以这样做,

        if (isIOS) {
            const description = String(NSString.stringWithUTF8String(NXGetLocalArchInfo()[0].description));
            this.isSimulator = description.indexOf("x86") !== -1 || description.indexOf("i386") !== -1;
        }
        if (isAndroid) {
            this.isSimulator = android.os.Build.FINGERPRINT.startsWith("generic")
                || android.os.Build.FINGERPRINT.startsWith("unknown")
                || android.os.Build.MODEL.indexOf("google_sdk") !== -1
                || android.os.Build.MODEL.indexOf("Emulator") !== -1
                || android.os.Build.MODEL.indexOf("Android SDK built for x86") !== -1
                || android.os.Build.MANUFACTURER.indexOf("Genymotion") !== -1
                || (android.os.Build.BRAND.startsWith("generic") && android.os.Build.DEVICE.startsWith("generic"))
                || android.os.Build.PRODUCT === "google_sdk";
        }

Android 版本与@Narendra 在他的答案中链接的版本几乎相同,但更多的是 NativeScript / JavaScript 版本。

Playground Sample

【讨论】:

    【解决方案2】:

    您可以检查 android.os.Build 中的 Build 属性,看看是 Build.BRAND.startsWith("generic") 还是 Build.DEVICE.startsWith("generic")) 还是 Build.PRODUCT.contains("emulator" )。

    您可以参考here 中描述的更多属性。

    【讨论】:

      猜你喜欢
      • 2022-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多