BUILD_LIBRARY_FOR_DISTRIBUTION='YES' 시 AlamofireImage 와 충돌

안녕하세요.

kakao sdk를 사용하기 위해 사이트에 안내된 방법과 동일하게

podfile에 BUILD_LIBRARY_FOR_DISTRIBUTION=‘YES’ 내용을 추가했습니다.

기기에 실행은 잘되지만, Archive시 AlamofireImage 라이브러리쪽과 뭔가 충돌이 있는듯 합니다.

BUILD_LIBRARY_FOR_DISTRIBUTION=‘YES’ 해당 내용을 삭제하면…
KakaoSDKCommon 쪽 오류나면서 실행이 안되고.

BUILD_LIBRARY_FOR_DISTRIBUTION=‘YES’ 을 추가하면
Archive시 AlamofireImage 쪽 오류나서 앱스토어에 올릴 수가 없고…

Kakao 도 필요하고, AlamofireImage 도 필요한데,
이거 뭔가 해결방법이 있을까요?

Undefined symbols for architecture arm64: 어쩌고 저쩌고…
ld: symbol(s) not found for architecture arm64

안녕하세요.

기재해주신 내용만으로는 어떤 상황인지 유추하기가 어렵고 최근 iOS에 비슷한 리포팅이 들어오지 않아서 개발하시는 환경상 특수한 상황으로 판단됩니다.

(1) full 에러로그
(2) kakao sdk버전
(3) iOS버전
(4) xcode 버전

기재해주시면 좀더 내용 파악해보도록 하겠습니다.

감사합니다.

감사합니다.
전에 문제없이 사용했던 AlamofireImage (version 4.2) 인데
KakaoSDK 추가. podfile에 BUILD_LIBRARY_FOR_DISTRIBUTION=‘YES’ 를 작성하면
Archive시 에러가 발생합니다.

(1) full 에러로그
Undefined symbols for architecture arm64:
“static AlamofireImage.ImageDownloader.defaultURLSessionConfiguration() → __C.NSURLSessionConfiguration”, referenced from:
HelpApp.ChattingVC.tableView(: __C.UITableView, cellForRowAt: Foundation.IndexPath) → __C.UITableViewCell in ChattingVC.o
HelpApp.MyQA_OneVC.collectionView(
: __C.UICollectionView, cellForItemAt: Foundation.IndexPath) → __C.UICollectionViewCell in MyQA_OneVC.o
HelpApp.MainVC.popSetting() → () in MainVC.o
HelpApp.MainVC.tableView(_: __C.UITableView, cellForRowAt: Foundation.IndexPath) → __C.UITableViewCell in MainVC.o
function signature specialization <Arg[2] = Dead, Arg[3] = Owned To Guaranteed, Arg[4] = Owned To Guaranteed, Arg[6] = Owned To Guaranteed, Arg[7] = Owned To Guaranteed> of function signature specialization <Arg[2] = [Closure Propagated : closure #2 (__C.UIImage) → () in HelpApp.MainVC.refreshChildMarkers() → (), Argument Types : [{ var __C.NMFMarker }{ var Swift.Int }Swift.Int[HelpApp.familyData]HelpApp.MainVC]> of HelpApp.MainVC.setMarkerImage(data: HelpApp.familyData, zIndex: Swift.Int, completion: (__C.UIImage) → ()) → () in MainVC.o
function signature specialization <Arg[2] = Dead, Arg[3] = Owned To Guaranteed, Arg[4] = Owned To Guaranteed, Arg[5] = Owned To Guaranteed, Arg[7] = Owned To Guaranteed, Arg[8] = Owned To Guaranteed> of function signature specialization <Arg[2] = [Closure Propagated : closure #3 (__C.UIImage) → () in HelpApp.MainVC.refreshChildMarkers() → (), Argument Types : [HelpApp.childUserData{ var __C.GMSMarker }{ var Swift.Int }Swift.Int[HelpApp.familyData]HelpApp.MainVC]> of HelpApp.MainVC.setMarkerImage(data: HelpApp.familyData, zIndex: Swift.Int, completion: (__C.UIImage) → ()) → () in MainVC.o
default argument 0 of AlamofireImage.ImageDownloader.init(configuration: __C.NSURLSessionConfiguration, downloadPrioritization: AlamofireImage.ImageDownloader.DownloadPrioritization, maximumActiveDownloads: Swift.Int, imageCache: AlamofireImage.ImageRequestCache?) → AlamofireImage.ImageDownloader in BottomNoticeVC.o

ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

(2) kakao sdk버전
최신버전 (pod ‘KakaoSDK’)

(3) iOS버전
Archive 시 오류 발생, 기기 테스트에서는 발생하지 않음.

(4) xcode 버전
13.4.1

안녕하세요.
에러가 발생한 프로젝트의 Podfile.lock 파일 내용 공유 부탁드려요.

Uncomment the next line to define a global platform for your project

platform :ios, ‘9.0’

source ‘GitHub - CocoaPods/Specs: The CocoaPods Master Repo
platform :ios, ‘11.0’
target ‘HelpMeApp’ do

Comment the next line if you don’t want to use dynamic frameworks

use_frameworks!

Pods for HelpMeApp

pod ‘GoogleMaps’
pod ‘Alamofire’
pod ‘AlamofireImage’, ‘~> 4.2’
pod ‘SideMenu’
pod ‘Kingfisher’
pod ‘CocoaLumberjack/Swift’
pod ‘NMapsMap’
pod ‘DataCompression’
pod ‘Firebase/RemoteConfig’
pod ‘Firebase/Analytics’
pod ‘Firebase/Messaging’
pod ‘FSCalendar’
pod ‘ReachabilitySwift’
pod ‘KakaoOpenSDK’
pod ‘KakaoSDK’
pod ‘MessengerKit’, :git => ‘https://github.com/steve228uk/MessengerKit.git
pod ‘SDWebImage’
pod ‘DateToolsSwift’
pod ‘VolumeListener’, :path => ‘…/libs/VolumeListener’
pod ‘BackgroundGeolocation’, :path => ‘…/libs/background-geolocation-lt/ios/BackgroundGeolocation.podspec’
pod ‘MaterialComponents/ProgressView’
pod ‘DLRadioButton’, ‘~> 1.4’
pod ‘LaravelEchoIOS’, :path => ‘…/libs/laravel-echo-ios-swift5’
#Facebook pod setting

end

target ‘LocationUpdate’ do
use_frameworks!
pod ‘Alamofire’
pod ‘AlamofireImage’, ‘~> 4.2’
pod ‘ReachabilitySwift’
end

post_install do |pi|
pi.pods_project.targets.each do |t|
t.build_configurations.each do |config|
config.build_settings[‘IPHONEOS_DEPLOYMENT_TARGET’] = ‘12.0’
config.build_settings[“ONLY_ACTIVE_ARCH”] = ‘NO’
config.build_settings[‘BUILD_LIBRARY_FOR_DISTRIBUTION’] = ‘YES’
end
end
end

Podfile 말고 Podfile.lock 내용 좀 부탁드려요.

그리고, Podfile내에 아래와같이 sdk v1과 v2를 같이 사용것처럼 보이는데 왜 그렇게 사용하는지 설명 부탁드립니다.

그리고
pod ‘KakaoSDK’ 를 하여 전체모듈을 설치하지말고 필요한 모듈만 설치하시기 바랍니다.
필요한 모듈로만 설치시 KakaoSDKFriend 모듈을 사용하지 않으면 아래 설정을 할 필요가 없습니다.

참고) https://developers.kakao.com/docs/latest/ko/getting-started/sdk-ios#apply-sdk

1개의 좋아요

답변감사합니다.
v1, v2 같이 쓰는 이유는 저도 유지보수직으로 넘겨받은 프로젝트라서 정확히는 모르겠지만.
v1은 쓰고 있지 않습니다.
말씀하신것처럼 필요한 모듈만 사용하도록 하겠습니다.
감사합니다.

1개의 좋아요