Команда компоновщика завершилась ошибкой с кодом выхода 1 (используйте -v, чтобы увидеть вызов) — Только для встроенного центра приложений

#xcode #ionic-framework #cocoapods #capacitor #visual-studio-app-center

Вопрос:

Есть много вопросов с сообщением об ошибке, подобным моему, но я не смог найти для себя подходящего решения.

У меня есть мобильное приложение, и я использую ионный фреймворк с конденсатором в версии 2. Я решил перейти на версию 3, и все отлично работает локально на Android и ios. Единственная проблема, с которой я столкнулся, — это когда я хотел создать свое приложение с помощью app center. Версия для Android построена без каких-либо проблем, но встроенная iOS выдает мне ошибку, как показано ниже:

 ld: framework not found CapacitorApp
clang: error: linker command failed with exit code 1 (use -v to see invocation)
 

и где-то ниже приведен код ошибки:

 ##[error]Error: /usr/bin/xcodebuild failed with return code: 65
 

Я не знаю, поможет ли это вам, но ниже вы можете найти мой подфайл

 platform :ios, '12.0'
use_frameworks!

# workaround to avoid Xcode 10 caching of Pods that requires
# Product -> Clean Build Folder after new Cordova plugins installed
# Requires CocoaPods 1.6 or newer
install! 'cocoapods', :disable_input_output_paths => true

def capacitor_pods
  pod 'Capacitor', :path => '../../node_modules/@capacitor/ios'
  pod 'CapacitorCordova', :path => '../../node_modules/@capacitor/ios'
  pod 'CapacitorApp', :path => '../../node_modules/@capacitor/app'
  pod 'CapacitorAppLauncher', :path => '../../node_modules/@capacitor/app-launcher'
  pod 'CapacitorBrowser', :path => '../../node_modules/@capacitor/browser'
  pod 'CapacitorDevice', :path => '../../node_modules/@capacitor/device'
  pod 'CapacitorHaptics', :path => '../../node_modules/@capacitor/haptics'
  pod 'CapacitorKeyboard', :path => '../../node_modules/@capacitor/keyboard'
  pod 'CapacitorPushNotifications', :path => '../../node_modules/@capacitor/push-notifications'
  pod 'CapacitorSplashScreen', :path => '../../node_modules/@capacitor/splash-screen'
  pod 'CapacitorStatusBar', :path => '../../node_modules/@capacitor/status-bar'
  pod 'CapacitorStorage', :path => '../../node_modules/@capacitor/storage'
  pod 'CordovaPlugins', :path => '../capacitor-cordova-ios-plugins'
  pod 'CordovaPluginsResources', :path => '../capacitor-cordova-ios-plugins'
end

target 'App' do
  capacitor_pods
  # Add your Pods here
end

 

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

обновление: Я смог воспроизвести его локально. Это происходит только по App staging схеме. Другой App выглядит хорошо.

скриншот результата сборки xcode

Комментарии:

1. Позволяет ли центр приложений запускать команды перед сборкой? вы должны запустить npm run build и npx cap sync ios перед выполнением собственной сборки.

2. Не уверен. Однако со вчерашнего дня я смог воспроизвести проблему локально. У меня есть 2 экземпляра моего приложения. App и App Staging и все работает нормально на App примере, но App staging показывает мне ошибку, которую я разместил в своем вопросе. Не уверен, в чем разница между экземплярами. Конечно, я что-то упускаю, но я не могу понять, что я там упустил.

3. Что вы подразумеваете под «2 экземпляром»?

4. Извините, я не был точен. У меня есть 2 конфигурации схемы (?), как здесь .

5. затем добавьте target 'App Staging' do capacitor_pods # Add your Pods here end в свой подфайл

Ответ №1:

Если у вас несколько схем, вам нужно добавить их в Podfile , чтобы они могли использовать плагины конденсатора

 target 'App Staging' do
  capacitor_pods
  # Add your Pods here
end
 

Комментарии:

1. К сожалению, это не сработало. Я обновил вопрос.

2. Вы запустили синхронизацию шапок npx после добавления этого? Вы не должны удалять запись приложения, иначе эта схема нарушится, у вас должна быть запись для каждой схемы.

3. Да, я это сделал. Я не уверен, что понимаю вас. У меня есть запись по каждой схеме.

4. На вашем последнем скриншоте я вижу подфайл, а в строке 26 есть синяя метка, которая означает, что вы отредактировали эту строку, вероятно, из «Приложения» в «Промежуточное приложение». И я не вижу другого блока для схемы «Приложение» на скриншоте, возможно, вы не захватили весь подфайл, но похоже, что у вас есть только запись «Промежуточное приложение».

5. Да, я отредактировал его, как вы и сказали. Когда я добавляю еще один блок(в подфайл), App он показывает мне ошибку npx cap sync ios . Сообщение об ошибке таково Unable to find a target named 'App Staging' in project 'App.xcodeproj', did find 'App'. . Однако внутри App.xcodeproj папки у меня есть файлы под названием App.xcscheme и App Staging.xcscheme . Разве это не должно быть правильно тогда?

Ответ №2:

Наконец-то я нашел решение. По какой-то причине мне пришлось скопировать и вставить список фреймворков Frameworks Search Paths . Он был заполнен в схеме отладки и выпуска, но для промежуточной отладки он был пуст. Вот скриншот с тем, что я должен был добавить. заполненные пути поиска фреймов