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, которые мог найти. Сборка для устройства работала, но сборки для симулятора не было.

Вот шаги, которые наконец решили проблему для меня:

  1. Очистите кеши XCode:

    rm -rf ~/Library/Developer/Xcode/DerivedData/
    
  2. Очистите кэши CocoaPods и переустановите зависимости:

    rm -rf "${HOME}/Library/Caches/CocoaPods"
    rm -rf "`pwd`/Pods/"
    pod update
    
  3. Наконец, перейдите к проекту "Стручки" и установите 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")

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