AFNetworking не будет компилироваться
Я застрял, пытаясь запустить проект на симуляторе с помощью AFNetworking. Я использовал эту зависимость ранее для других проектов, поэтому я не понимаю, что здесь происходит не так. Во-первых, ошибка при попытке запустить проект:
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_AFHTTPSessionManager", referenced from:
_OBJC_CLASS_$_SharedNetworkObject in SharedNetworkObject.o
"_OBJC_CLASS_$_AFJSONResponseSerializer", referenced from:
objc-class-ref in SharedNetworkObject.o
"_OBJC_METACLASS_$_AFHTTPSessionManager", referenced from:
_OBJC_METACLASS_$_SharedNetworkObject in SharedNetworkObject.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Я уверен, что это является частью проблемы, но я не знаю, как ее решить:
Это оскорбительный файл.h:
#import <Foundation/Foundation.h>
#import <AFNetworking/AFNetworking.h>
#import "SharedSessionKey.h"
@interface SharedNetworkObject : AFHTTPSessionManager
+ (SharedNetworkObject *) sharedNetworkObject; // class method to return the singleton object
@end
Может быть интересно отметить, что когда я начинаю вводить строку импорта для AFNetworking, строка заполняется после нескольких символов, поэтому я знаю, что есть некоторая осведомленность о наличии зависимости AFNetworking.
Я установил зависимость с помощью CocoaPods. Вот мой Подфайл:
# Uncomment this line to define a global platform for your project
platform :ios, '8.0'
source 'https://github.com/CocoaPods/Specs.git'
target 'WeRun' do
pod "AFNetworking", "2.5.2"
end
target 'WeRunTests' do
end
И, конечно же, я работаю в .xcworkspace
(не .xcodeproj
).
Еще одна вещь, мой файл xcconfig выглядит следующим образом, что соответствует другим успешным сборкам AFNetworking:
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking"
OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/AFNetworking"
OTHER_LDFLAGS = -ObjC -l"Pods-MyApp-AFNetworking" -framework "CoreGraphics" -framework "MobileCoreServices" -framework "Security" -framework "SystemConfiguration"
OTHER_LIBTOOLFLAGS = $(OTHER_LDFLAGS)
PODS_ROOT = ${SRCROOT}/Pods
Я не знаю, что еще искать. Я полностью удалил модуль и переустановил, только чтобы найти точно такую же ошибку. Может кто-нибудь помочь мне понять это? Спасибо!
7 ответов
Я потратил пару часов на борьбу с той же самой проблемой, просматривая все хиты Google, которые мог найти. Сборка для устройства работала, но сборки для симулятора не было.
Вот шаги, которые наконец решили проблему для меня:
Очистите кеши XCode:
rm -rf ~/Library/Developer/Xcode/DerivedData/
Очистите кэши CocoaPods и переустановите зависимости:
rm -rf "${HOME}/Library/Caches/CocoaPods" rm -rf "`pwd`/Pods/" pod update
Наконец, перейдите к проекту "Стручки" и установите
Build Active Architectures Only
вNo
также для конфигурации "Отладка".
Я бы предложил вам добавить флаг $(унаследованный) в "Настройки сборки".
- Нажмите на синий значок проекта
- Выберите вкладку "Настройки сборки"
- В разделе "Связывание" вы найдете параметр "Другие флаги компоновщика".
- добавить $(наследуется) в текстовое поле
У меня была такая же проблема, когда у меня было -lc++
уже установлен на Other linker flags
для использования библиотеки cpp.
Я добавил эти два флага -ObjC -l"AFNetworking"
на Other linker flags
, который работал и скомпилирован успешно. Это два флага -ObjC
а также -l"AFNetworking"
, Вы сканируете добавить одновременно -ObjC -l"AFNetworking"
,
Не давайте версию после AFNetworking в файле pod. И попробуй еще раз. Убедитесь, что вы также удалили запятую.
Ну, я решил это, но я не уверен, почему это сработало. Я экспериментировал с другими флагами компоновщика в настройках сборки. Я удалил флаг, который был установлен там установкой CocoaPods (предположительно), и заменил его, скопировав флаг из .xcconfig
файл. В частности, я добавил этот текст: -l"Pods-WeRun-AFNetworking"
как второй флаг сразу после -ObjC
, Мне кажется, что это именно то, что я только что удалил, поэтому я очень стесняюсь предложить это как "ответ", но теперь это работает, поэтому что-то должно было измениться.
Если кто-то может пролить свет на это или сказать мне, что я обманываю себя, пожалуйста, дайте мне знать. Спасибо за предложения.
это случилось и со мной. и что я исправил всего за один шаг:
Убейте Xcode и щелкните правой кнопкой мыши Xcode, чтобы показать информацию, откройте его с помощью Rosetta, затем откройте проект для сборки. Оно работает!!! Кстати, я использую M1-чип Mac Mini. До этого я перепробовал все, что нашел в гугле, например: почистить кеш, проверить флаг другой ссылки и т. д. у меня они не сработают.
Надеюсь, это поможет вам, ребята!
Простой метод Загрузите файл репозитория. Перетащите содержимое папки AFnetworking (при необходимости можно создать группы), а затем используйте библиотеку. (Используйте #import "AFnetworking.h")