дартс / флаттер: как отправить iOS приложений, используя интерфейс флаттера и бэкэнд C / C ++, в App Store? - PullRequest
0 голосов
/ 29 марта 2020

Цель

Я создаю приложение iOS, используя флаттер для внешнего интерфейса и C / C ++ в качестве внутреннего. Они должны взаимодействовать через FFI, который является схемой привязки языка через библиотеки C dynamici c. Я намереваюсь отправить его в iOS App Store.

Проблемы

Образец Dart FFI при доступе к C -struct работает на macOS через Dynami c симпатия и обязательность. Теперь динамическое связывание c технически возможно на iOS в соответствии с Xcode 9 - Нет возможности создать проект dylib iOS, однако мне неясно, как отправить приложение в AppStore, потому что c связывание запрещено в соответствии с Apple Guidelines Раздел 2.5.2.

2.5.2 Приложения должны быть автономными в своих пакетах и ​​не могут читать или записывать данные за пределами указанной области контейнера , а также не могут загружать, устанавливать или выполнять код, представляющий или изменяет функции или функциональные возможности приложения, в том числе других приложений. Образовательные приложения, предназначенные для обучения, разработки или предоставления учащимся возможности тестировать исполняемый код, могут, в некоторых случаях, загружать код при условии, что такой код не используется для других целей. Такие приложения должны сделать исходный код, предоставленный Приложением, полностью видимым и редактируемым пользователем.

Несколько вопросов SO подтверждают эту проблему, например:

Затем официальная документация по флаттеру говорит

Динамически связанные библиотеки автоматически загружаются динамическим компоновщиком при запуске приложения. Их составляющие символы могут быть разрешены с помощью DynamicLibrary.process. Вы также можете получить дескриптор библиотеки с помощью DynamicLibrary.open, чтобы ограничить область разрешения символов, , но неясно, как в Apple это обрабатывает.

Вопросы

Ответы [ 2 ]

1 голос
/ 29 марта 2020

Ответы о том, что вы не можете использовать динамические c библиотеки в iOS дату до iOS 8, когда была добавлена ​​поддержка предоставленных пользователем динамических c библиотек.

Ничего в 2.5.2 дня вы не можете использовать динамические c библиотеки, если они поставляются как часть вашего приложения. Итак:

На дату, когда я публикую это (2020), это говорит о том, что я никогда не смогу отправить приложение с этой архитектурой в App Store?

Нет это не так, поскольку «эта архитектура» относится к использованию динамической библиотеки c, с которой вы ссылаетесь во время сборки и встраиваете в свое приложение.

0 голосов
/ 30 марта 2020

Добавление входных данных из канала Reddit FlutterDev

@ escamoteur

Насколько я понимаю, вам не разрешено загружать какие-либо библиотеки из-за пределов вашей установочной папки. Особенно не загружать что-то в более поздний момент времени. Не могли бы вы сделать этот вопрос Stackoverflow и пометить его Flutter?

@ airflow_matt

Поскольку iOS 8 в пакете могут быть общие библиотеки, при правильном кодировании я не понимаю, почему длопен не сработает. Или вы можете связать библиотеку с самим основным исполняемым файлом (как это делает flutter) и dlopen self (DynamicLibrary.process ()). Я думаю, что стоит попробовать.

...