离子应用程序的构建问题

Build issue for ionic app

我正在为 Android 使用 FileChooser ionic 插件,为 IOS 使用 FilePicker 插件。如果我使用相同的代码构建 android 和 IOS 应用程序,则会出现无法将 FilePicker 插件添加到 Android 的错误。 目前为了在不同平台上构建应用程序,我维护了两个不同的分支,用于 iOS 构建和 android 构建。

我只想在一个分支上维护我的代码。我该怎么做?

无效的解决方案:

  1. 搜索了可以在 iOS 和 Android 上工作的插件,但它不可用
  2. config.xml
  3. 平台下搜索是否可以添加插件
  4. 我发现无法检测平台并相应地添加插件

您可以添加特定于平台的检查并相应地使用插件。

  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);
      });
  }