Flutter / iOS: как я могу использовать версию приложения pubspec.yaml в моем файле NotificationServiceExtension Info.plist?

#ios #flutter #info.plist #unnotificationserviceextension

#iOS #flutter #info.plist #unnotificationserviceextension

Вопрос:

Версию приложения Flutter из pubspec.yaml можно использовать в обычном файле iOS Info.plist, изменив записи на

 <key>CFBundleShortVersionString</key>
<string>$(FLUTTER_BUILD_NAME)</string>

<key>CFBundleVersion</key>
<string>$(FLUTTER_BUILD_NUMBER)</string>
 

Однако я создал расширение службы уведомлений для включения Push-уведомлений с форматированным текстом FCM, которое работает нормально. Но когда я меняю значения Info.plist этого расширения на те же, что и выше, приложение завершается сбоем со следующей ошибкой сборки:

 Unable to install /Users/pa/development/FlutterApps/myApp/build/ios/iphonesimulator/Runner.app on <ID>. This is sometimes caused by a malformed plist file:
ProcessException: Process exited abnormally:
An error was encountered processing the command (domain=IXErrorDomain, code=2):
Failed to create plugin placeholder for /Users/pa/development/FlutterApps/myApp/build/ios/iphonesimulator/Runner.app/PlugIns/NotificationService.appex
Failed to create promise.
Underlying error (domain=IXErrorDomain, code=2):
    Failed to set placeholder attributes com.mycompany.appid.NotificationService
    Failed to create promise.
  Command: xcrun simctl install <ID> /Users/pa/development/FlutterApps/myApp/build/ios/iphonesimulator/Runner.app
Error launching application on iPhone 11 Pro.
 

Как я могу использовать те же переменные также в файле расширений Info.plist? Я думаю, что это просто какая-то конфигурация, но я не могу в этом разобраться.

Спасибо!!

Комментарии:

1. Привет! Вы нашли решение этой проблемы? У меня то же самое

2. @SelastLambou, к сожалению, нет. Что я делаю сейчас, так это то, что в моем конвейере сборки есть скрипт, который изменяет значение. Но это не надежное решение.

Ответ №1:

Flutter генерирует xcconfig файл с переменными, такими как FLUTTER_BUILD_NAME и FLUTTER_BUILD_NUMBER

Чтобы использовать эти переменные в расширении, нам нужно выполнить следующее:

  1. Перейдите к своему расширению Info.plist и добавьте эти переменные. Вот так

Строка версии пакета — $(FLUTTER_BUILD_NAME)

Версия пакета — $ (FLUTTER_BUILD_NUMBER)

  1. Перейдите в настройки вашего проекта и выберите Generated файл конфигурации для вашего расширения для каждой конфигурации. Вот так