Этот пост будет полезен разработчикам Flutter, которые хотят работать с вкусами, изменять и расширять их.
Сегодня мы не будем рассказывать о процессе создания ароматизаторов с разными иконками, названиями и идентификаторами, благо таких публикаций уже немало.
Вместо этого мы поговорим о том, как определить аромат в коде Dart, а также о том, как решить некоторые распространенные проблемы, связанные с ароматом, возникающие при создании приложений.
Почему мы можем об этом говорить: наше мобильное приложение для модуля платформы HCM ТалантТех Обучение созданный во Flutter. Итак, я ожидаю, что вы знаете, что такое ароматизатор и зачем он нужен (если нет, то прочитайте, например, вот этот материал ).
Поэтому сразу перейдем к вопросам, с которыми сталкивается разработчик Flutter, когда перед ним стоит задача определить новую разновидность.
Определение нового вкуса
Выбрать стандартный вкус довольно просто.Для этого вам необходимо указать его имя в настройках фреймворка.
Например, в Android Studio вам нужно перейти в «Выполнить» → «Редактировать конфигурации» → и указать имя вкуса в поле «Build Flavor» следующим образом:
Но если вам нужно что-то более оригинальное, вам нужно подготовить приложение для работы с другим вариантом.
Для этого вы можете добавить несколько строк кода 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}:
3. Откройте «Цели» → «Бегун» → «Настройки сборки», нажмите «+», выберите «Добавить пользовательскую настройку» и добавьте настройку под названием PRODUCT_FLAVOR. Для каждой конфигурации укажите имя варианта, которое будет передано во Flutter.
4. Если идентификатор приложения по каким-то причинам изменился, вам необходимо создать для него профиль обеспечения:
- Идти к разработчик.
apple.com
→ Сертификаты, идентификаторы и профили → Идентификаторы → + → Идентификаторы приложений → … - Выберите явно Bundle ID и укажите там новый идентификатор приложения.
- В возможностях выберите те же параметры, что и основной идентификатор
- Выполнить сопоставление fastlane --app_identifier « “
Проблемы со сборкой
Часто при создании обновленного приложения возникают ошибки.По нашему опыту, чаще всего они встречаются на iOS. И сегодня мы рассмотрим два самых популярных из них: ОШИБКА: Архив iOS успешно собран, но отображается неизвестная ошибка Подобная ошибка может быть вызвана неверным именем аромата.
В нашем случае квадратные скобки в названии не были приняты (конкретно в строке «[S]ТТ обучение»).
Поэтому, если вы столкнулись с подобной ошибкой, попробуйте изменить имя, удалив из него нестандартные символы.
ОШИБКА: ошибка сертификата на iOS. В реальности описание такой ошибки может выглядеть так:
Для подобной ситуации было найдено проверенное решение.
С недействительными положениями и сертификатами можно справиться в несколько этапов:
- Перейдите в Runner → Target → Signing & Capabilities и проверьте, чтобы нигде не было красных восклицательных знаков.
- Перейдите в «Бегун» → «Цель» → «Настройки сборки», найдите слово «обеспечение» и попытайтесь найти ошибки в результатах.
- Если вы запускаете на локальном компьютере:
- Загрузите положения, используя Fastlane Match
- Перейдите в Xcode → Настройки → Учетные записи → выберите нужную учетную запись → Загрузить ручные профили.
- Перейдите к шагу 1.
- Если есть ошибки, то завершите процесс Xcode, запустите его заново и проверьте еще раз (это действительно помогает).
- Если все это не работает, вы можете поискать дополнительные подсказки в документации.
Здесь или Здесь , а также на https://stackoverflow.com
Заключение
Ароматизаторы — штука полезная и удобная, но при попытке работы с ними могут возникнуть ошибки и трудности.Я надеюсь, что этот короткий пост поможет вам избежать проблем с обнаружением ароматов, а также будет полезен тем, кто столкнулся с такими же ошибками при сборке приложения.
Учитывая, что Flutter набирает популярность и становится все более востребованным, обмен опытом должен быть полезен для всех нас.
Теги: #Разработка для iOS #Разработка для Android #flutter #hr Technologies #hcm #HRTech
-
Общаются Ли С Вами Веб-Сайты?
19 Oct, 24 -
Гитара Про 5.2 Под Kubuntu 7.10
19 Oct, 24