Ionic 5:获得构建平台的最佳实践
Ionic 5: best practice to get the built platform
我正在使用 Ionic 5、Angular 和 Cordova 编写应用程序。我想获取用于构建我的应用程序的“平台”变量(即在“ionic cordova build android”等命令中使用的参数)。
不幸的是,我在网上找到的只是平台服务 (https://ionicframework.com/docs/angular/platform),它很有用但不是我需要的(例如 platform.is('android') 可以 return 如果应用程序在 android phone 上的 Web 应用程序上运行,在 android phone 上的浏览器上运行,或者如果我在 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);
}
然后在 build:after 中我将文件恢复原样(以避免在每次构建后在 GIT 上提交文件...)。
我添加了代码以防有人遇到同样的问题并寻求快速解决方法。
我的问题是:有人知道 official/smarter 实现结果的方法吗?
谢谢,
我不完全确定您的目标是什么,但检测应用所在的平台 运行 比这容易得多。例如,如果您想知道该应用程序是否正在 Android 移动设备 上执行,您可以使用以下条件:
if(this.platform.is('mobile') && this.platform.is('android')) {
// ...
}
以类似的方式,您可以检查设备是否是 desktop
、pwa
、...或基于以下列表的任何其他组合:
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
我正在使用 Ionic 5、Angular 和 Cordova 编写应用程序。我想获取用于构建我的应用程序的“平台”变量(即在“ionic cordova build android”等命令中使用的参数)。
不幸的是,我在网上找到的只是平台服务 (https://ionicframework.com/docs/angular/platform),它很有用但不是我需要的(例如 platform.is('android') 可以 return 如果应用程序在 android phone 上的 Web 应用程序上运行,在 android phone 上的浏览器上运行,或者如果我在 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);
}
然后在 build:after 中我将文件恢复原样(以避免在每次构建后在 GIT 上提交文件...)。
我添加了代码以防有人遇到同样的问题并寻求快速解决方法。
我的问题是:有人知道 official/smarter 实现结果的方法吗?
谢谢,
我不完全确定您的目标是什么,但检测应用所在的平台 运行 比这容易得多。例如,如果您想知道该应用程序是否正在 Android 移动设备 上执行,您可以使用以下条件:
if(this.platform.is('mobile') && this.platform.is('android')) {
// ...
}
以类似的方式,您可以检查设备是否是 desktop
、pwa
、...或基于以下列表的任何其他组合:
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