Определение Вариантов Приложений Для Приложений Flutter

Этот пост будет полезен разработчикам Flutter, которые хотят работать с вкусами, изменять и расширять их.

Сегодня мы не будем рассказывать о процессе создания ароматизаторов с разными иконками, названиями и идентификаторами, благо таких публикаций уже немало.

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

Почему мы можем об этом говорить: наше мобильное приложение для модуля платформы HCM ТалантТех Обучение созданный во Flutter. Итак, я ожидаю, что вы знаете, что такое ароматизатор и зачем он нужен (если нет, то прочитайте, например, вот этот материал ).

Поэтому сразу перейдем к вопросам, с которыми сталкивается разработчик Flutter, когда перед ним стоит задача определить новую разновидность.



Определение нового вкуса

Выбрать стандартный вкус довольно просто.

Для этого вам необходимо указать его имя в настройках фреймворка.

Например, в Android Studio вам нужно перейти в «Выполнить» → «Редактировать конфигурации» → и указать имя вкуса в поле «Build Flavor» следующим образом:

Определение вариантов приложений для приложений Flutter

Но если вам нужно что-то более оригинальное, вам нужно подготовить приложение для работы с другим вариантом.

Для этого вы можете добавить несколько строк кода Dart:

  
  
   

import 'dart:async'; import 'package:flutter/services.dart'; enum MyFlavor { staging, prod } Future<MyFlavor> getCurrentFlavor() async { try { final flavorString = await const MethodChannel('flavor').

invokeMethod<String>('getFlavor'); return flavorString == "staging" ? MyFlavor.staging : MyFlavor.prod; } catch (e) { return MyFlavor.prod; } }



Андроид

В среде Android для определения версии необходимо изменить файл Android/приложение/src/main/kotlin/ /MainActivity.kt, а также определите обработчик для MethodChannel в методе configureFlutterEngine().

Вы можете сделать это следующим образом:

import io.flutter.embedding.android.FlutterActivity import io.flutter.embedding.engine.FlutterEngine import io.flutter.plugins.GeneratedPluginRegistrant import io.flutter.plugin.common.MethodChannel class MainActivity: FlutterActivity() { companion object { const val CHANNEL = "flavor" } override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) { GeneratedPluginRegistrant.registerWith(flutterEngine); // Method channel MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL) .

setMethodCallHandler { call, result -> if (call.method == "getFlavor") { result.success(BuildConfig.FLAVOR); } else { result.notImplemented() } } } }



iOS

В iOS процесс будет более многоэтапным и потребует ряда ручных действий: 1.Во-первых, как и в Android, вам необходимо определить обработчик для MethodChannel в методе application:didFinishLaunchingWithOptions. Это необходимо сделать в iOS/Runner/AppDelegate.swift .

Для этого просто запустите следующий код:

override func application( _ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? ) -> Bool { GeneratedPluginRegistrant.register(with: self) // Method channel if let controller = self.window.rootViewController as? FlutterBinaryMessenger { let channel = FlutterMethodChannel(name: "flavor", binaryMessenger: controller) channel.setMethodCallHandler { (call, result) in let flavor = Bundle.main.infoDictionary?["Flavor"] result(flavor) } } return super.application(application, didFinishLaunchingWithOptions: launchOptions) }

2.Открыть ios/Runner/Info.plist. Добавьте ключ Flavor типа String со значением ${PRODUCT_FLAVOR}:

Определение вариантов приложений для приложений Flutter

3. Откройте «Цели» → «Бегун» → «Настройки сборки», нажмите «+», выберите «Добавить пользовательскую настройку» и добавьте настройку под названием PRODUCT_FLAVOR. Для каждой конфигурации укажите имя варианта, которое будет передано во Flutter.

Определение вариантов приложений для приложений Flutter

4. Если идентификатор приложения по каким-то причинам изменился, вам необходимо создать для него профиль обеспечения:

  • Идти к разработчик.

    apple.com → Сертификаты, идентификаторы и профили → Идентификаторы → + → Идентификаторы приложений → …

  • Выберите явно Bundle ID и укажите там новый идентификатор приложения.

  • В возможностях выберите те же параметры, что и основной идентификатор
  • Выполнить сопоставление fastlane --app_identifier « “


Проблемы со сборкой

Часто при создании обновленного приложения возникают ошибки.

По нашему опыту, чаще всего они встречаются на iOS. И сегодня мы рассмотрим два самых популярных из них: ОШИБКА: Архив iOS успешно собран, но отображается неизвестная ошибка Подобная ошибка может быть вызвана неверным именем аромата.

В нашем случае квадратные скобки в названии не были приняты (конкретно в строке «[S]ТТ обучение»).

Поэтому, если вы столкнулись с подобной ошибкой, попробуйте изменить имя, удалив из него нестандартные символы.

ОШИБКА: ошибка сертификата на iOS. В реальности описание такой ошибки может выглядеть так:

Определение вариантов приложений для приложений Flutter

Для подобной ситуации было найдено проверенное решение.

С недействительными положениями и сертификатами можно справиться в несколько этапов:

  1. Перейдите в Runner → Target → Signing & Capabilities и проверьте, чтобы нигде не было красных восклицательных знаков.

  2. Перейдите в «Бегун» → «Цель» → «Настройки сборки», найдите слово «обеспечение» и попытайтесь найти ошибки в результатах.

  3. Если вы запускаете на локальном компьютере:
    1. Загрузите положения, используя Fastlane Match
    2. Перейдите в Xcode → Настройки → Учетные записи → выберите нужную учетную запись → Загрузить ручные профили.

    3. Перейдите к шагу 1.
    4. Если есть ошибки, то завершите процесс Xcode, запустите его заново и проверьте еще раз (это действительно помогает).

  4. Если все это не работает, вы можете поискать дополнительные подсказки в документации.

    Здесь или Здесь , а также на https://stackoverflow.com



Заключение

Ароматизаторы — штука полезная и удобная, но при попытке работы с ними могут возникнуть ошибки и трудности.

Я надеюсь, что этот короткий пост поможет вам избежать проблем с обнаружением ароматов, а также будет полезен тем, кто столкнулся с такими же ошибками при сборке приложения.

Учитывая, что Flutter набирает популярность и становится все более востребованным, обмен опытом должен быть полезен для всех нас.

Теги: #Разработка для iOS #Разработка для Android #flutter #hr Technologies #hcm #HRTech

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.