Недійсна підтримка Swift - Файли не відповідають


116

Я просто переписав додаток у Swift 2. Я намагаюся завантажити додаток в iTunesConnect (через Xcode 7 GM) для внутрішнього тестування.

Я боровся з помилкою "Недійсна підтримка швидкої" протягом деякого часу (з якою є інші, пов'язані з цим питання ) ... але тепер це змінилося на щось трохи інше.

Помилка від Apple тепер говорить:

Недійсна швидка підтримка

Файли libswiftCoreLocation.dylib, libswiftCoreMedia.dylib, libswiftCoreData.dylib, libswiftAVFoundation.dylib не збігаються

/Payload/App.app/Frameworks/libswiftCoreLocation.dylib, /Payload/App.app/Frameworks/libswiftCoreMedia.dylib, /Payload/App.app/Frameworks/libswiftCoreData.dylib, /Payload/AVapli/Apari/Fapme/Fapme/Fapme/Fapme/Fapme/Fapmeli) диліб

Переконайтесь, що файли правильні (?), Відновіть додаток та повторно надішліть його.

Не застосовувати до обробки після

/Payload/App.app/Frameworks/libswiftCoreLocation.dylib, /Payload/App.app/Frameworks/libswiftCoreMedia.dylib, /Payload/App.app/Frameworks/libswiftCoreData.dylib, /Payload/AVapli/Apari/Fapme/Fapme/Fapme/Fapme/Fapme/Fapmeli) диліб.

Мені не вдалося знайти подібні помилки, шукаючи "Не застосовувати післяобробку", "Переконайтесь, що файли правильні, перезавантажте додаток та повторно надішліть його" тощо.

Хтось знає, як я можу "Переконайтесь, що файли правильні" - чи - якісь інші рекомендації? Дякую.


У мене точно така ж проблема. Будь-які рішення?
Beny Boariu

Ви подаєте у відставку цей додаток? Це пряме завантаження з Xcode?
Енді

@Andy пряме завантаження з Xcode відразу після архівації.
Dan

Відповіді:


82

Тут же проблема. Я думаю, це, швидше за все, помилка Інструментів для розробників, пов’язана з біткодом.

Я щойно знайшов рішення для цього.

  1. Архівуйте додаток за допомогою нового номера збірки :(
  2. Знайдіть архів (.xcarchive файл) у Finder від Організатора "Показати в Finder"
  3. Відкрийте пакет і знайдіть каталоги типу « Products/Applications/YourApp.ipa/Frameworks/та»SwiftSupport/iphoneos/
  4. Скопіюйте всі libswiftXxx.dylibфайли з SwiftSupport/iphoneos/у Products/Applications/YourApp.ipa/Frameworks/та перезапишіть
  5. Тепер завантажте в App Store від Організатора

З цим процесом мені вдалося завантажити свою збірку. Зараз я чекаю на огляд.

ПРИМІТКА:

Я використовую CocoaPods, а ENABLE_BITCODEваріант був НІ.


На який SDK для iOS ви орієнтовані? Я думав, що ви не можете подати в магазин із відключеним біт-кодом.
JAL

3
У моєму випадку SwiftSupport / iphoneos / порожній.
Lim Thye Chean

2
Перевірка для мене вдалася, але збірка триває Processingчерез 12 годин у розділі попереднього випуску iTunes Connect.
ldiqual

2
ей спасибі за це! Я все ще отримую попередження про занадто великий файл аналізу API cl.ly/image/0s0N0s441s0X - але важливо, що він все-таки пройшов і міг потрапити в TestFlight.
деб

1
Що робити, якщо в моєму .ipa немає папки SwiftSupport / iphoneos /?
Олександр Яковлев

51

Редагувати: випущено CocoaPods 0.39.0 , що вирішує цю проблему!

Як зазначав @orkenstein , є більш просте рішення , коментуючи якийсь код у Pod-frameworks.sh. Я включаю тут трохи більше деталей.

У каталозі проектів Xcode відкрийте Pods/Target Support Files/Pods/Pods-frameworks.sh

Прокоментуйте наступні рядки:

# Embed linked Swift runtime libraries
local basename
basename="$(basename "$1" | sed -E s/\\..+// && exit ${PIPESTATUS[0]})"
local swift_runtime_libs
swift_runtime_libs=$(xcrun otool -LX "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/${basename}.framework/${basename}" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u  && exit ${PIPESTATUS[0]})
for lib in $swift_runtime_libs; do
  echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
  rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
  code_sign_if_enabled "${destination}/${lib}"
done

=>

# Embed linked Swift runtime libraries
# local basename
# basename="$(basename "$1" | sed -E s/\\..+// && exit ${PIPESTATUS[0]})"
# local swift_runtime_libs
# swift_runtime_libs=$(xcrun otool -LX "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/${basename}.framework/${basename}" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u  && exit ${PIPESTATUS[0]})
# for lib in $swift_runtime_libs; do
#   echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
#   rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
#   code_sign_if_enabled "${destination}/${lib}"
# done

Збережіть, Pods-frameworks.shі вам слід добре їхати!


4
Це працювало для мене. Лише вгору, якщо ви запустите pod-install або pod-update, можливо, доведеться прокоментувати це ще раз!
Макс Олександр

Випуск какаоподів тут: github.com/CocoaPods/CocoaPods/isissue/4188 , ви можете спробувати цей PR: github.com/CocoaPods/CocoaPods/pull/4221 з цими інструкціями: guides.cocoapods.org/using/unreleased-features
ldiqual

оновлено cocoaPods 0.39.0, і це не вирішує цю проблему для мене
nwales

@DJ Tarazona Дякую за ваш рецепт !! вона повністю зробила трюк для мене, навіть коли я оновив дорогоцінний камінь кокоподів до останньої версії
Хорхе Вісенте Мендоса

16

Виправлення цієї проблеми було об'єднано, і воно доступне в останній версії CocoaPods 0.39.0.beta.5

https://github.com/CocoaPods/CocoaPods/pull/4268

Щоб запустити останню версію CocoaPods gem install cocoapods --pre

Крім того, дотримуйтесь інструкцій із запуску невипущених функцій: http://guides.cocoapods.org/using/unreleased-features

Отримавши останню версію CocoaPods, запустіть pod installще раз.


Це виробник грошей
tommybananas

Сльози йдуть. Дякую!
MQLN

Помилка не стосується конкретно CocoaPods; ми відчуваємо ту саму проблему і не використовуємо CocoaPods.
devios1

8

Я використовував Fastlane gym 1.9.0 для створення свого додатка, і він не відкидав Apple, оскільки файли не збігалися, тоді як якщо я завантажував через XCode 8, це було прийнято. Я перевірив швидкі ліфти в папці швидкої підтримки ipa та в папці Frameworks, виявив, що в папці підтримки швидкої версії lib для швидкої 2.3, а в папці Frameworks - швидко. Отже, у файлі тренажерного залу я додав ланцюжок інструментів варіант:

gym(
  scheme: "CoCadre", 
  configuration: "Production Release",
  clean: true,
  use_legacy_build_api: false,
  toolchain: "com.apple.dt.toolchain.Swift_2_3"
)

* Зауважте, що мені довелося змінити use_legacy_build_api на false, щоб використовувати параметр ланцюжка інструментів

Щоб використовувати параметр ланцюжка інструментів, потрібно встановити use_legacy_build_api: false https://github.com/fastlane/fastlane/isissue/6003#issuecomment-244792185


Дякую! Я також використовую Fastlane та Gym, і це вирішило проблему.
Eystein Bye

Дякуємо, що допомогло виправити проблему і під час використання Gym. Зауважте, що мені все-таки вдалося застосувати це рішення за допомогою use_legacy_build_api: true
Віктор Малий

6

Є трохи менш складне рішення, знайдене на GitHub :

Я подивився навколо в Pods-frameworks.sh і виявив розділ, прокоментований як:

Вставити пов'язані бібліотеки виконання програми Swift
Коментуючи блок коду, який копіює ці бібліотеки (і код їх підписує), схоже, виправили мої клопоти над поданням. Я ще не занурився в глибше, щоб побачити, чи це причиною проблем є лише їх копіювання, чи це підпис коду. Я трохи вибиваюся з глибини.


4
  1. Оновіть какао до останньої версії, введіть sudo gem install cocoapodsтермінал.
  2. Запустіть pod updateпід каталог свого проекту.
  3. Чи не забудьте встановити Включити бітовий код для NO для Debugопції для всіх ваших стручків.
  4. Виправлено

Проблема виправлена, оскільки такий код у Pods-frameworks.sh:

# Embed linked Swift runtime libraries
local basename
basename="$(basename "$1" | sed -E s/\\..+// && exit ${PIPESTATUS[0]})"
local swift_runtime_libs
swift_runtime_libs=$(xcrun otool -LX "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/${basename}.framework/${basename}" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u  && exit ${PIPESTATUS[0]})
for lib in $swift_runtime_libs; do
  echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
  rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
  code_sign_if_enabled "${destination}/${lib}"
done

було змінено на:

# Embed linked Swift runtime libraries. No longer necessary as of Xcode 7.
if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then
    local swift_runtime_libs
    swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u  && exit ${PIPESTATUS[0]})
  for lib in $swift_runtime_libs; do
    echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
    rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
    code_sign_if_enabled "${destination}/${lib}"
  done
fi

2

Моє рішення для цього:

Я використовую Reveal через Cocoapods і Reveal потребує відключення Bitcode. Тому я включив Reveal (повинен працювати для будь-якого іншого Framwork) тільки для налагодження:

pod 'Reveal-iOS-SDK', :configurations => ['Debug']

Оскільки мій Reveal налаштований лише для налагодження, я відключив біткод лише для налагодження.

введіть тут опис зображення

З цими налаштуваннями все працює добре, без жодних злому ...


0

Я бачив, що ця помилка виникає при інтеграції бібліотек, які не підтримують біткод (наприклад, поточна стабільна версія New Relic). Рішення полягає в тому, щоб або видалити бібліотеки, відключити біткод (і, можливо, не вдасться подати в магазин), або чекати оновлених бінарних файлів, які підтримують біткод, з вашого вендеру бібліотеки.


0

Помилка для мене полягала в тому, що я створив профіль Adhoc замість профілю App Store для завантаження спа в магазин додатків.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.