【问题标题】:Ionic 5: best practice to get the built platformIonic 5:获得构建平台的最佳实践
【发布时间】:2021-01-29 01:24:31
【问题描述】:

我正在使用 Ionic 5、Angular 和 Cordova 编写应用程序。我想获取用于构建我的应用程序的“平台”变量(即在“ionic cordova build android”之类的命令中使用的参数)。

不幸的是,我在网上找到的只是平台服务 (https://ionicframework.com/docs/angular/platform),它很有用但不是我所需要的(例如,如果应用程序在Android 手机、Android 手机上的浏览器或者如果我在 chrome 上单击 F12 ......)。 我需要的是找到构建应用程序的平台。

我发现实现结果的最佳方法是在我的 ionic.config.json 文件中添加“build:before”挂钩

  "hooks": {
    "build:before": "scripts/build-before.js",
    "build:after": "scripts/build-after.js"
   }

并在构建之前更改服务中的常量

#!/usr/bin/env node
var process = require('process');
var fs = require('fs');

let input=process.argv;

let android="android";
let browser="browser";
let ios="ios";
let platformFile="MYFILE"


module.exports = function() {
    let nbArgs=input.length;
    let platform;
    for(let i=0;i<nbArgs;i++){
        if(input[i]==android){
            platform=android;
        }
        if(input[i]==browser){
            platform=browser;
        }
        if(input[i]==ios){
            platform=ios;
        }
    }

    let file = fs.readFileSync(platformFile, 'utf8');
    let replacement="MYSTART '"+platform+"';";
    let result = file.replace(/MYREGEX/g, replacement);
    fs.writeFileSync(platformFile, result);

    console.log("Service updated with platform: "+platform);
}

然后在构建中:在我恢复文件原样之后(避免在每次构建后将文件提交到 GIT...)。

我添加了代码以防有人遇到同样的问题并寻找快速解决方法。

我的问题是:有人知道实现结果的官方/更智能的方法吗?

谢谢,

【问题讨论】:

    标签: javascript angular cordova ionic-framework


    【解决方案1】:

    我不完全确定您的目标是什么,但检测应用运行的平台比这容易得多。例如,如果您想知道应用程序是否在 Android 移动设备上执行,您可以使用以下条件:

    if(this.platform.is('mobile') && this.platform.is('android')) {
      // ...
    }
    

    以类似的方式,您可以根据以下列表检查设备是否为desktoppwa、...或任何其他组合:

    https://ionicframework.com/docs/angular/platform#platforms

    android:    a device running Android
    capacitor:  a device running Capacitor
    cordova:    a device running Cordova
    desktop:    a desktop device
    electron:   a desktop device running Electron
    hybrid:     a device running Capacitor or Cordova
    ios:        a device running iOS
    ipad:       an iPad device
    iphone:     an iPhone device
    mobile:     a mobile device
    mobileweb:  a web browser running in a mobile device
    phablet:    a phablet device
    pwa:        a PWA app
    tablet:     a tablet device
    

    【讨论】:

    • 我的主要目标是能够检测应用程序构建所针对的cordova平台是什么。这是因为我使用 2 个插件在不同的平台上做同样的事情,但它们相互冲突。
    • @Fra 我认为上面的答案将允许您这样做:)
    • 谢谢,我想这更接近各种 Ionuc 文档中的目标:)
    猜你喜欢
    • 1970-01-01
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    • 2018-10-07
    • 2015-04-11
    • 2012-08-19
    • 1970-01-01
    • 2018-12-21
    相关资源
    最近更新 更多