Swift and Objective C files in CocoaPods - ios

I have the below Podfile.
target '*****' do
# Uncomment this line if you're using Swift or would like to use dynamic frameworks
# use_frameworks!
# Pods for *****
# pod 'Netcore-Smartech-iOS-SDK'
pod 'TPKeyboardAvoiding'
pod 'AMSlideMenu', '~> 1.5.4'
pod 'SVProgressHUD'
pod 'Google/SignIn'
pod 'Google/Analytics'
pod 'MZFormSheetController'
pod 'AFNetworking'
pod 'Fabric'
pod 'Crashlytics'
pod 'LTHMonthYearPickerView'
target '****CabsTests' do
inherit! :search_paths
# Pods for testing
end
target '***CabsUITests' do
inherit! :search_paths
# Pods for testing
end
#pod 'AFNetworking', '~> 2.5.4'
end
Its working fine ,
But when I start importing the below , it give me error:
"
Showing Recent Messages
: Library not found for -lAFNetworking
: Linker command failed with exit code 1 (use -v to see invocation)"
use_frameworks!
pod 'MapboxNavigation', '~> 0.6.0'
pod 'TPKeyboardAvoiding'
pod 'AMSlideMenu', '~> 1.5.4'
pod 'SVProgressHUD'
pod 'Google/SignIn'
pod 'Google/Analytics'
pod 'MZFormSheetController'
pod 'AFNetworking'
pod 'Fabric'
pod 'Crashlytics'
pod 'LTHMonthYearPickerView'
Please suggest what make me wrong.

The linker flag has been renamed to:
-lAFNetworking
but the Cocoapods settings have not been updated yet. Rename the entry in "Other Linker Flags" and your problem will be solved.
Also, the library does not support Bitcode yet, thus please turn off Bitcode in Build Options > Enable Bitcode > Select "No". Clean & Rebuild afterwards.

You should add 'https://github.com/CocoaPods/Specs.git'.
Like this:
use_frameworks!
source 'https://github.com/CocoaPods/Specs.git'
target 'ProjectName' do
pod 'AFNetworking', '~> 3.0'
# Pods for ProjectName
end

Related

iOS : duplicate symbols for architecture arm64 after pod install

I am getting error when added a new pod. My initial pod file was
#platform :ios, '9.0'
target 'xxxxxx' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!
# Pods for TPV Plus
pod 'IQKeyboardManagerSwift'
pod 'SDWebImage'
pod 'Firebase/Core'
pod 'Firebase/Messaging'
pod 'EVReflection/MoyaRxSwift'
pod 'SwifterSwift'
pod 'Crashlytics'
pod 'Fabric'
pod 'LGSideMenuController'
pod 'CCBottomRefreshControl'
pod 'MaterialComponents/ActivityIndicator'
pod 'TweeTextField'
pod 'DropDown'
pod 'DisPlayers-Audio-Visualizers'
pod 'MaterialComponents/BottomSheet'
# pod 'GooglePlacePicker'
pod 'GooglePlaces', '3.6.0'
pod 'GoogleMaps', '3.6.0'
I have commented few and added FirebaseCrashlytics. Below is the updated one
#platform :ios, '9.0'
target 'xxxx' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!
# Pods for TPV Plus
pod 'IQKeyboardManagerSwift'
pod 'SDWebImage'
# pod 'Firebase/Core'
# pod 'Firebase/Messaging'
pod 'EVReflection/MoyaRxSwift'
pod 'SwifterSwift'
# pod 'Crashlytics'
# pod 'Fabric'
pod 'LGSideMenuController'
pod 'CCBottomRefreshControl'
pod 'MaterialComponents/ActivityIndicator'
pod 'TweeTextField'
pod 'DropDown'
pod 'DisPlayers-Audio-Visualizers'
pod 'MaterialComponents/BottomSheet'
# pod 'GooglePlacePicker'
pod 'GooglePlaces', '3.6.0'
pod 'GoogleMaps', '3.6.0'
pod 'FirebaseCrashlytics'
end
But when I build the project getting error error build: 13 duplicate symbols for architecture arm64
In the project all other library files are duplicated as shown in picture. The project is git integrated.
How will I solve this issue.
I figured out the issue happened here. During the git commit, the pod files were committed partially to git. So I deleted the entire pod folder and kept the pod.lock file as such. After that did the pod install. So all the duplicate files were deleted and project is building successfully.

pod not been updated, even though it shows an update available through 'pod outdated'

I'm trying to update my pods, I list the pods updates through
pod outdated
podfile ( Further more I have even tried to out 'Firebase/Auth', '6.3.1' in podfile to specify the version but no use ["-" used in place of app, NDA -_- ] )
# Uncomment the next line to define a global platform for your project
use_frameworks!
platform :ios, '9.0'
def extension_pod
# pod 'ReadabilityKit', '0.7.1'
pod 'SDWebImage', '~> 4.0'
pod 'Firebase'
pod 'Firebase/Database'
pod 'Firebase/Auth'
pod 'FirebaseUI/Database'
pod 'Firebase/Storage'
pod 'Firebase/Core'
end
target '-' do
extension_pod
pod 'LGSideMenuController'
pod 'Firebase/MLVision'
pod 'Firebase/MLVisionTextModel'
#pod 'FirebaseUI', '~> 5.0'
pod 'Firebase/Messaging'
pod 'TOCropViewController'
# [START google_pod]
pod 'GoogleSignIn', '4.1.2'
pod 'ARSLineProgress'
#pod 'TesseractOCRiOS', '4.0.0'
# [END google_pod]
pod 'TwitterKit'
pod 'DateTools'
pod 'Fabric'
# Uncomment the next line if you're using Swift or would like to use dynamic frameworks
# use_frameworks!
# Pods for -
target '-Tests' do
inherit! :search_paths
# Pods for testing
end
target '-UITests' do
inherit! :search_paths
# Pods for testing
end
target '-E' do
extension_pod
end
end
Commands that I have done so far to update my Firebase/Auth repo,
pod update 'Firebase'
pod update 'Firebase/Auth'
pod install --no-repo-update
pod repo update && pod update 'Firebase/Auth'
All of these show as follow, but does not update to the specific version shown by pod outdated, am I missing some command for update process to occur?
Updating local specs repositories
Analyzing dependencies
Downloading dependencies
Generating Pods project
Integrating client project
Pod installation complete! There are 17 dependencies from the Podfile and 33 total pods installed.
Another dependency requires FirebaseAuth to be a lower version. See the Podfile.lock to get the details.
Note that you want to update the FirebaseAuth pod - not Firebase/Auth which is the Auth subspec in the Firebase pod.
It might be related to locking the GoogleSignIn pod to an old version.
Change platform :ios, '9.0' to platform :ios, '10.0'

XCode doesn't recognize variable ProfileHandler with pods

guys,
I have this pod file from a not too old project
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
target 'MyApp' do
# Comment the next line if you're not using Swift and don't want to use
dynamic frameworks
use_frameworks!
# Pods for MyApp
pod 'Alamofire', '~> 4.0'
pod 'SwiftyJSON'
pod 'KeychainSwift', '~> 7.0'
pod 'KeychainSwift', '~> 7.0'
pod 'FacebookCore'
pod 'FacebookLogin'
pod 'FacebookShare'
pod 'Fabric'
pod 'Crashlytics'
pod 'RSKImageCropper'
pod 'Koloda', :git => 'https://github.com/Yalantis/Koloda.git', :branch => 'swift-3'
pod 'MBAutoGrowingTextView'
pod 'CCBottomRefreshControl'
pod 'SDAVAssetExportSession', :git => 'https://github.com/rs/SDAVAssetExportSession.git'
pod 'Firebase/Core'
pod 'IQKeyboardManagerSwift'
target 'MyAppTests' do
inherit! :search_paths
end
target 'MyAppUITests' do
inherit! :search_paths
# Pods for testing
end
end
and when I run
pod install
XCode doesn't recognize ProfileHandle variable. I think ProfileHandle is from an older version from any of the pods.
Anyone of you know how to solve it?
Thanks in advance!

UITest bundle could not be loaded

When i run the UITest in my phone it installs and runs as a separate app while giving the following error.
2017-07-27 10:44:33.892639+0700 XCTRunner[11886:3502890] Running
tests... 2017-07-27 10:44:34.137927+0700 XCTRunner[11886:3502890] The
bundle “...UITests” couldn’t be loaded because it is damaged or
missing necessary resources. Try reinstalling the bundle. 2017-07-27
10:44:34.137999+0700 XCTRunner[11886:3502890]
(dlopen_preflight(/var/containers/Bundle/Application/75C9B589-CCD4-480D-9E23-BA86878E8B37/...UITests-Runner.app/PlugIns/...UITests.xctest/...UITests):
Library not loaded:
#rpath/GoogleToolboxForMac.framework/GoogleToolboxForMac Referenced
from:
/var/containers/Bundle/Application/75C9B589-CCD4-480D-9E23-BA86878E8B37/...UITests-Runner.app/PlugIns/...UITests.xctest/...UITests
Reason: image not found)
I am trying to find a solution for this problem more than a day.
I wanted to add UITests to my existing app and added UITest target to my app. I am using both carthage and cocoa-pod. I updated pod file and updated pod then i added frameworks to the UITest target which are installed by carthage.
This is my pod file
platform :ios, '9.0'
use_frameworks!
target 'ExampleApp' do
pod 'Charts'
pod 'ReachabilitySwift', '~> 3'
pod 'Fabric'
pod 'Crashlytics'
pod 'Google/Analytics'
pod 'Firebase/Core'
pod 'Firebase/Messaging'
end
target 'ExampleAppTests' do
pod 'Charts'
pod 'ReachabilitySwift', '~> 3'
pod 'Fabric'
pod 'Crashlytics'
end
target 'ExampleAppUITests' do
pod 'Charts'
pod 'ReachabilitySwift', '~> 3'
pod 'Fabric'
pod 'Crashlytics'
end
This is my cartfile
github "Alamofire/Alamofire" ~> 4.0
github "SwiftyJSON/SwiftyJSON" "3.0.0"
github "Friend-LGA/LGSideMenuController" ~> 1.0.0
github "TTTAttributedLabel/TTTAttributedLabel" ~> 1.13.4
github "MagicalPanda/MagicalRecord"
I could find a related question from stack overflow but unfortunately it was not helpful. can you please help me to add the UITest target to my project without a issue.
Podfile
# Uncomment the next line to define a global platform for your project
platform :ios, '10.0'
use_frameworks!
def base_pods
pod 'FBSDKCoreKit', '4.24.0'
pod 'FBSDKLoginKit', '4.24.0'
pod 'FBSDKShareKit', '4.15.0'
pod 'FacebookCore', '0.2.0'
pod 'FacebookLogin', '0.2.0'
pod 'FacebookShare', '0.2.0'
end
target 'App' do
base_pods
target 'AppTests' do
inherit! :search_paths
# Pods for testing
end
target 'AppUITests' do
inherit! :complete
# Pods for UI testing
end
end
the line inherit! :complete is key here
and in settings for the UITest target
NEXT:
clear derived data
pod deintegrate && pod install

duplicate symbols for architecture x86_64 framework included twice

This is not the regular duplicate symbols error. I am using AFNetworking library for networking with cocoa pods. I also using a third party framework that has been added to the target "Link Binary With Libraries" list in build phases section.
Unfortunately, This third party framework includes the AFNetworking that apparently is being used by it for networking.
Therefore, it makes sense that this error has been produced. Any idea how can this be solved?
Edit: Here it shows that kAFUploadStream3GSuggestedPacketSize symbol is defined in the afnetworking and in the OPPWAMobile framework. along with another 59 symbols.
duplicate symbol _kAFUploadStream3GSuggestedPacketSize in:
/Users/khaled/Library/Developer/Xcode/DerivedData/Saveto-fhceqhysbolbskawabayohjbtsra/Build/Products/Debug-iphonesimulator/AFNetworking/libAFNetworking.a(AFURLRequestSerialization.o)
/Users/khaled/Development/iOS/Saveto/git#git.assembla.com:imena-develotpment-.29/OPPWAMobile.framework/OPPWAMobile
ld: 60 duplicate symbols for architecture x86_64 clang: error: linker
command failed with exit code 1 (use -v to see invocation)
Podfile:
platform :ios, '7.1'
source 'https://github.com/CocoaPods/Specs.git'
target 'Saveto' do
pod 'SWTableViewCell', '~> 0.3.7'
pod 'CocoaLumberjack', '~> 2'
pod "AFNetworking" , '~> 2'
pod 'SDWebImage', '~>3.7'
pod 'MMDrawerController', '~> 0.6.0'
pod 'iRate'
pod 'XLForm'
pod "SwipeView", "~>1.3.2"
pod "DAAlertController"
pod "Mantle" , "~>2.0.4"
pod 'pop', '~> 1.0'
pod 'GoogleMaps', '~> 1.12'
pod 'SVProgressHUD'
pod 'FXBlurView'
pod 'Fabric'
pod 'Crashlytics'
end
You are correct about the Pod import of AFNetworking clashing with the 3rd party library which happens to contain the same symbols. There are are couple of ways to resolve it, the best and most sensible one would be to specify use_frameworks! in your Podfile:
platform :ios, '9.0'
use_frameworks!
target 'Saveto' do
pod 'SWTableViewCell', '~> 0.3.7'
pod 'CocoaLumberjack', '~> 2'
pod 'AFNetworking' , '~> 2'
pod 'SDWebImage', '~>3.7'
pod 'MMDrawerController', '~> 0.6.0'
pod 'iRate'
pod 'XLForm'
pod 'SwipeView', '~>1.3.2'
pod 'DAAlertController'
pod 'Mantle' , '~>2.0.4'
pod 'pop', '~> 1.0'
pod 'GoogleMaps', '~> 1.12'
pod 'SVProgressHUD'
pod 'FXBlurView'
pod 'Fabric'
pod 'Crashlytics'
end
I suppose you could also rename the symbols with a post_install method, although that might not resolve everything; there shouldn't be any issues after using the method above though.

Resources