Бит-код отключен на зависимостях Карфагена

сценарий

Мой проект (кодовая база для iOS/watchOS/tvOS) имеет настройки сборки с ENABLE_BITCODE = YES и использует преимущества фундаментальных библиотек, которые еще не поддерживают битовый код, хотя цитирует документацию Apple в App Thinning

Биткод по умолчанию, но необязательно. Для приложений watchOS и tvOS требуется битовый код. Если вы предоставляете битовый код, все приложения и платформы в комплекте приложений (все цели в проекте) должны включать битовый код

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

проблема

Чтобы получить чистый процесс сборки, я попытался отправить несколько запросов извлечения соответствующим владельцам для включения битового кода, но из-за сложности их кодовых баз, которые работают для нескольких операционных систем / архитектур, мои запросы извлечения все еще находятся в в ожидании: поэтому, чтобы иметь возможность собрать свой собственный проект, мне все равно придется вручную изменить их параметры сборки.

Вопрос

Как я могу замкнуть процесс Карфагена для введения определенных настроек сборки (в этом случае ENABLE_BITCODE = YESв соответствующие библиотеки?

1 ответ

Решение

Я нашел решение, сделав сценарий оболочки, способный стереть отключение битового кода, на случай, если кто-то сталкивается или заинтересован решить аналогичную проблему, сценарий таков:

carthage update --platform ios
for D in ./Carthage/Checkouts/*; do
  if [ -d "${D}" ]; then
    find $D -type d -name \*.xcodeproj -print0 |
      while IFS= read -r -d $'\0' folder; do
        sed -i '' 's/ENABLE_BITCODE = NO;//g' $folder/project.pbxproj
      done
    fi
done
carthage build --platform ios

поэтому в основном механизм скрипта:

  1. загрузка всех зависимостей
  2. для каждой зависимости найдитеpbxproj жить внутри xcodeproj и отрезать строку ENABLE_BITCODE = NO
  3. наконец, построение зависимостей, чтобы сделать.framework

Чтобы добавить к ответу Андреа, убедитесь, что вы строите карфагию с --no-use-binaries поскольку у зависимости может быть отключен битовый код в выпущенной структуре, которая будет использоваться без --no-use-binaries.

Другие вопросы по тегам