IL2CPP: ошибка компоновки для сборки iOS NeatPlug - плагин Flurry Analytics (универсальный)
Для нашей игры Unity мы используем плагин Neatplug для аналитики. Все шло хорошо, пока мы не обновили Unity до версии 5.1.1P1. Это привело к сбою сборки (связывания) iOS в xcode (с использованием серверного сценария IL2CPP с использованием универсальной архитектуры). Вот ошибка:
ld: предупреждение: игнорирование файла /.../Libraries/Plugins/iOS/libflurry-analytics-plugin-simulator.a, отсутствует требуемая архитектура arm64 в файле /.../Libraries/Plugins/iOS/libflurry-analytics-plugin-simulator.a (2 среза) ld: предупреждение: игнорирование файла /.../Libraries/Plugins/iOS/libsmart-iap-plugin-simulator.a, отсутствует необходимая архитектура arm64 в файле /.../Libraries/Plugins/iOS/libsmart-iap-plugin-simulator.a (2 среза)
Неопределенные символы для архитектуры arm64: "_SecItemUpdate", на которую ссылаются из: -[FlurryKeychainWrapper updateValueData:forKey:] в libFlurry.a(libFlurry.a-arm64-master.o) "_kSecValueData", на которую ссылаются из: - FlurryK: ] в libFlurry.a(libFlurry.a-arm64-master.o) -[FlurryKeychainWrapper updateValueData:forKey:] в libFlurry.a (libFlurry.a-arm64-master.o)
"_kSecAttrAccessibleWhenUnlocked", на который ссылаются из: -[FlurryKeychainWrapper setData:forKey:] в libFlurry.a(libFlurry.a-arm64-master.o) "_kSecAttrAccessible", на который ссылаются из: - [FlurryurFeyData: for: in.WearWey: libFlurry.a-arm64-master.o) "_SecItemDelete", на который ссылаются из: -[FlurryKeychainWrapper removeObjectForKey:] в libFlurry.a(libFlurry.a-arm64-master.o) "_SecItemAdd", на который ссылается набор: - [FlurryK forKey:] в libFlurry.a(libFlurry.a-arm64-master.o) "_kSecMatchLimitOne", на который ссылаются из: -[FlurryKeychainWrapper dataForKey:] в libFlurry.a (libFlurry.a-arm64-master.o)
"_OBJC_CLASS _ $ _ SKProductsRequest", на который ссылается: objc-class-ref в libsmart-iap-plugin.a(SmartIAP.o) "_SecItemCopyMatching", на который ссылаются: -[FlurryKeychainWrapper dataForKey:] в libFlurry.a (libFlurry.a (libFlurry.a) -master.o) "_kSecClass", на который ссылаются из: -[FlurryKeychainWrapper setupSearchForKey:] в libFlurry.a(libFlurry.a-arm64-master.o) "_kSecAttrService", на который ссылаются: (libFlurry.a-arm64-master.o)
"_OBJC_CLASS _ $ _ SKMutablePayment", на который ссылается из: objc-class-ref в libsmart-iap-plugin.a(SmartIAP.o) "_kSecClassGenericPassword", на который ссылаются из: -[FlurryKeychainWrapper setupSearchForKey:] в libFlur () -master.o) "_kSecAttrAccount", на который ссылаются из: -[FlurryKeychainWrapper setupSearchForKey:] в libFlurry.a(libFlurry.a-arm64-master.o) "_kSecAttrGeneric", на который ссылаются из: - [FlurryurlFearWearWearWearWeyWain (libFlurry.a-arm64-master.o) "_kSecMatchLimit", на который ссылаются из: -[FlurryKeychainWrapper dataForKey:] в libFlurry.a(libFlurry.a-arm64-master.o) "_kSecReturnData", на который ссылаются данные: - для Flurryra данные:] в libFlurry.a (libFlurry.a-arm64-master.o)
"_OBJC_CLASS _ $ _ SKPaymentQueue", на который ссылается: objc-class-ref в libsmart-iap-plugin.a(SmartIAP.o) ld: символ (-ы) не найден для архитектуры arm64 clang: error: сбой команды компоновщика с кодом выхода 1 (используйте -v, чтобы увидеть вызов)
Мы отправили это в поддержку Neatplug, но у нас не было ответа. Спасибо за помощь
2 ответа
У меня такая же проблема при обновлении до Unity 5.3.4. Связывание Security.framework, кажется, исправило это для меня.
Я подозреваю, что в этом плагине отсутствует фрагмент ARM64 в его собственном двоичном файле. Вы можете подтвердить это, изменив опцию Архитектура в настройках проигрывателя Unity Editor на ARMv7. Это будет построено с использованием серверной части сценариев IL2CPP только для ARMv7. Если проект связывается в XCode, то проблема - отсутствующий двоичный файл ARM64 для этой библиотеки.