Проблема со сборкой для ионного приложения

Я использую плагин FileChooser ionic для Android и плагин FilePicker для IOS. Если я использую один и тот же код для создания приложения для Android и IOS, это дает мне ошибку, что плагин FilePicker не может быть добавлен в Android. В настоящее время для создания приложения на разных платформах я поддерживаю две разные ветки для сборки iOS и сборки Android.

Я хочу поддерживать свой код только в одной ветке. Как я могу это сделать?

Решения, которые не сработали:

  1. Искал плагин, который может работать как на iOS, так и на Android, но он недоступен.
  2. Искали, можем ли мы добавить плагины под платформу в config.xml
  3. Я не нашел способа определить платформу и добавить соответствующие плагины.

person Shrutika Patil    schedule 01.08.2018    source источник


Ответы (1)


Вы можете добавить проверки для конкретной платформы и использовать соответствующие плагины.

  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);
      });
  }
person Mangesh Daundkar    schedule 01.08.2018
comment
Это решение сработало для меня. Но теперь каждый раз мне нужно удалять и снова добавлять модули узла и платформу для создания приложений для Android и iOS. Есть ли способ управлять плагинами? - person Shrutika Patil; 16.08.2018
comment
Нет. На самом деле нет необходимости каждый раз удалять и добавлять модули узла и платформу. Это уже обрабатывается в коде через условие if else. Если платформа Android, он выбирает средство выбора файлов, а если платформа iOS, он выбирает средство выбора файлов. Почему вы снова удаляете и добавляете модули узла и платформу. Я уже собрал apk с этим кодом. Он работает нормально. - person Mangesh Daundkar; 17.08.2018