Apple Mach-O Linker - встраивание пользовательской среды, которая использует Cocoapods, в пример приложения - xcode 9 - PullRequest
0 голосов
/ 14 октября 2018

Как правильно встраивать в простой MyApp пользовательскую среду, которая использует Cocoapods для зависимостей?Пожалуйста, помогите, я не могу понять.


СЦЕНАРИЙ:

Я создал небольшой тестовый фреймворк и встроил его в небольшое потребительское приложение, следуя этому простому учебнику https://www.raywenderlich.com/5109-creating-a-framework-for-ios простоодин, как и многие другие.

Мой простой пример работает.

Теперь я создал самый большой фреймворк MyFramework, который использует несколько таких модулей, как firebase, alamofire и так далее.MyFramworks собирается правильно

Теперь я встроил его в свое потребительское приложение MyApp и добавил MyFramework во «Встроенные двоичные файлы» и «Связанные рамки и библиотеки», но я получаю сообщение об ошибке на MyFramwork, когда xCode создает MyApp:

Apple Mach-O Linker (ld) Группа ошибок lang: error: сбой команды компоновщика с кодом выхода 1 (используйте -v для просмотра вызова)

, что дает мне многоошибок «Каталог не найден» в DerivedData для всех установленных модулей

Я прочитал много сообщений, но никто не решил проблему



ОБНОВЛЕННЫЙ СЦЕНАРИЙ: Я попытался воспроизвести проблему в моей маленькой рабочей тестовой среде с именем testfwk.Testapp находится в отдельном проекте и в отдельной папке, как команда ls -la:

MacBook-Pro:test david$ ls -l
total 0
drwxr-xr-x  12 david  staff  384 15 Ott 10:40 testapp
drwxr-xr-x  10 david  staff  320 15 Ott 10:14 testfwk

ls -l для папки testfwk:

MacBook-Pro:testfwk david$ ls -l
total 16
-rw-r--r--  1 david  staff  415 15 Ott 10:14 Podfile
-rw-r--r--  1 david  staff  290 15 Ott 10:14 Podfile.lock
drwxr-xr-x  8 david  staff  256 15 Ott 10:14 Pods
drwxr-xr-x  5 david  staff  160 15 Ott 10:49 testfwk
drwxr-xr-x@ 5 david  staff  160 15 Ott 10:14 testfwk.xcodeproj
drwxr-xr-x@ 5 david  staff  160 15 Ott 10:16 testfwk.xcworkspace
drwxr-xr-x  4 david  staff  128 14 Ott 15:58 testfwkTests

ls -l для папки testapp:

MacBook-Pro:testapp david$ ls -l
total 16
-rw-r--r--  1 david  staff  637 15 Ott 10:53 Podfile
-rw-r--r--  1 david  staff  290 15 Ott 10:40 Podfile.lock
drwxr-xr-x  8 david  staff  256 15 Ott 10:53 Pods
drwxr-xr-x  7 david  staff  224 15 Ott 10:20 testapp
drwxr-xr-x@ 5 david  staff  160 15 Ott 10:40 testapp.xcodeproj
drwxr-xr-x@ 5 david  staff  160 15 Ott 10:41 testapp.xcworkspace
drwxr-xr-x  4 david  staff  128 14 Ott 16:01 testappTests
drwxr-xr-x  4 david  staff  128 14 Ott 16:01 testappUITests

Я добавляю KingFisher через Coccoapods в testfwk, открываю testfwk.xcworkspace и он успешно строится, импорт kingfisher работает на примере swift-класса.

testfwk Podfile

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
source 'https://github.com/CocoaPods/Specs.git'

target 'testfwk' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for testfwk
  pod 'Kingfisher','~> 4.0'

  target 'testfwkTests' do
    inherit! :search_paths
    # Pods for testing
  end

end

Когда я впервые открыл testapp.xcodeproj, попробуйте создать чистое объявление, но я получаю эту ошибку:

error1

testfwk уже добавленкак встроенный двоичный файл и библиотека в моем testapp, как показано ниже:

enter image description here

Функция framwork testprint.hello (), вызываемая из Viewcontroller из testapp, работала непосредственно перед добавлениемpod to testfwk

Затем я закрываю xCode, очищаю папку с производными данными, открываю testfwk и успешно создаю ее, открываю testapp, очищаюсь и пытаюсь собрать, но я получаю ту же ошибку.

Что не так ???Как я могу заставить его работать ?????!Мне нужно встроить мою платформу, чтобы настроить мое потребительское приложение и внести некоторые коррективы, после этого моя идея состоит в том, чтобы использовать cocoapods для добавления моей платформы в следующие приложения.Anyoine может помочь?Спасибо

После этого я попытался добавить модуль KingFisher через Cocoapods в приложение testapp, также используя аналогичный файл подкачки, используемый для testfwk, но изменив цель на «testapp», модуль был успешно установлен, но когда я пытаюсьbuild testapp.xcworkspace я получаю та же ошибка .Я думаю, что эта установка была ненужной.Я думаю, что testfwk не может собрать внутри testapp и по какой-то причине не видит KingFisher pod

podfile для testapp

     # Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
use_frameworks!

source 'https://github.com/CocoaPods/Specs.git'

target 'testapp' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for testapp
    pod 'Kingfisher','~> 4.0'

  target 'testappTests' do
    inherit! :search_paths
    # Pods for testing
  end

  target 'testappUITests' do
    inherit! :search_paths
    # Pods for testing
  end

end

После того, как я также попытался следовать принятому ответу https://stackoverflow.com/a/37415074/9880094 я создал аналогичный Podfile для testapp, но я получаю «Ошибка цели не найдена для цели« testfwk »» Я думаю, что проблемы с путями или папками »

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
use_frameworks!

source 'https://github.com/CocoaPods/Specs.git'

def facile_core_pods
  pod 'Kingfisher','~> 4.0'
end

target 'testapp' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for testapp
    facile_core_pods 

  target 'testappTests' do
    inherit! :search_paths
    # Pods for testing
  end

  target 'testappUITests' do
    inherit! :search_paths
    # Pods for testing
  end

  target 'testfwk' do
    use_frameworks!
    facile_core_pods 
  end

end

ПОЖАЛУЙСТА, ПОМОГИТЕ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...