离子应用程序的构建问题
Build issue for ionic app
我正在为 Android 使用 FileChooser ionic 插件,为 IOS 使用 FilePicker 插件。如果我使用相同的代码构建 android 和 IOS 应用程序,则会出现无法将 FilePicker 插件添加到 Android 的错误。
目前为了在不同平台上构建应用程序,我维护了两个不同的分支,用于 iOS 构建和 android 构建。
我只想在一个分支上维护我的代码。我该怎么做?
无效的解决方案:
- 搜索了可以在 iOS 和 Android 上工作的插件,但它不可用
- 在
config.xml
平台下搜索是否可以添加插件
- 我发现无法检测平台并相应地添加插件
您可以添加特定于平台的检查并相应地使用插件。
import { Platform } from 'ionic-angular';
import { FileChooser } from '@ionic-native/file-chooser';
import { FilePath } from '@ionic-native/file-path';
import { IOSFilePicker } from '@ionic-native/file-picker';
constructor(
private fileChooser: FileChooser,
private filePicker: IOSFilePicker,
private filePath: FilePath,
private platform: Platform) {
}
chooseFile() {
if (this.platform.is('ios')) {
this.pickFileFromIOSDevice();
}
else if (this.platform.is('android')) {
this.pickFileFromAndroidDevice();
}
}
pickFileFromIOSDevice() {
this.filePicker.pickFile()
.then(
uri => {
this.fileName = uri.substring(uri.lastIndexOf("/") + 1);
}
)
.catch(error => {
this.showError(error);
});
}
pickFileFromAndroidDevice() {
this.fileChooser.open()
.then(
uri => {
this.filePath.resolveNativePath(uri)
.then(file => {
this.fileName = file.substring(file.lastIndexOf("/") + 1);
})
.catch(err => console.log(err));
}
)
.catch(error => {
this.showError(error);
});
}
我正在为 Android 使用 FileChooser ionic 插件,为 IOS 使用 FilePicker 插件。如果我使用相同的代码构建 android 和 IOS 应用程序,则会出现无法将 FilePicker 插件添加到 Android 的错误。 目前为了在不同平台上构建应用程序,我维护了两个不同的分支,用于 iOS 构建和 android 构建。
我只想在一个分支上维护我的代码。我该怎么做?
无效的解决方案:
- 搜索了可以在 iOS 和 Android 上工作的插件,但它不可用
- 在
config.xml
平台下搜索是否可以添加插件
- 我发现无法检测平台并相应地添加插件
您可以添加特定于平台的检查并相应地使用插件。
import { Platform } from 'ionic-angular';
import { FileChooser } from '@ionic-native/file-chooser';
import { FilePath } from '@ionic-native/file-path';
import { IOSFilePicker } from '@ionic-native/file-picker';
constructor(
private fileChooser: FileChooser,
private filePicker: IOSFilePicker,
private filePath: FilePath,
private platform: Platform) {
}
chooseFile() {
if (this.platform.is('ios')) {
this.pickFileFromIOSDevice();
}
else if (this.platform.is('android')) {
this.pickFileFromAndroidDevice();
}
}
pickFileFromIOSDevice() {
this.filePicker.pickFile()
.then(
uri => {
this.fileName = uri.substring(uri.lastIndexOf("/") + 1);
}
)
.catch(error => {
this.showError(error);
});
}
pickFileFromAndroidDevice() {
this.fileChooser.open()
.then(
uri => {
this.filePath.resolveNativePath(uri)
.then(file => {
this.fileName = file.substring(file.lastIndexOf("/") + 1);
})
.catch(err => console.log(err));
}
)
.catch(error => {
this.showError(error);
});
}