ld:未找到框架 GTMOAuth2
ld: framework not found GTMOAuth2
在我格式化 mac 之前一切正常。格式化后(从 El Capitan
移动到 Sierra
),我克隆了存储库,安装了 Cocoapods
,做了 pod update
。 pods
一切都搞砸了。我无法构建应用程序。错误是 Cocoapods
(我认为是)。错误如下:
ld: framework not found GTMOAuth2
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我正在使用 Xcode 8.0
和 Swift 2.3
,以及 Cocoapods 1.1.1
。
我的Podfile
是:
# Uncomment this line to define a global platform for your project
# platform :ios, '9.0'
target 'ProjectName' do
# Comment this line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!
# Firebase Pods
pod 'Firebase'
pod 'Firebase/Messaging'
pod 'Firebase/Auth'
pod 'Firebase/Crash'
# Google Pods
pod 'Google/SignIn'
pod 'Google/Analytics'
# Crashlytics
pod 'Fabric'
pod 'Crashlytics'
# Facebook
# pod 'FacebookCore'
# Pods for ProjectName
target 'ProjectName Tests' do
inherit! :search_paths
# Pods for testing
end
target 'ProjectName UITests' do
inherit! :search_paths
# Pods for testing
end
end
还收到有关框架路径的警告。即:
ld: warning: directory not found for option '-F/Users/<user>/Library/Developer/Xcode/DerivedData/<project-name>-ftvbhpamiyfzmwdfpxknyvpcypde/Build/Products/Debug-iphonesimulator/GTMOAuth2'
ld: warning: directory not found for option '-F/Users/<user>/Library/Developer/Xcode/DerivedData/<project-name>-ftvbhpamiyfzmwdfpxknyvpcypde/Build/Products/Debug-iphonesimulator/GTMSessionFetcher'
ld: warning: directory not found for option '-F/Users/<user>/Library/Developer/Xcode/DerivedData/<project-name>-ftvbhpamiyfzmwdfpxknyvpcypde/Build/Products/Debug-iphonesimulator/GoogleToolboxForMac'
通过选择 .xcworkspace
(而不是 .xcodeproj
)重新打开您的项目,这 3 个警告和 1 个错误将消失。
要解决此问题,请确保在您的项目构建设置中将 Build Active Architecture Only
设置为 No
。
还要在所有 Pod 目标中将 Build Active Architecture Only
设置为 No
,如所附屏幕截图所示。
然后清理并重建项目。
正如@jeffrey-neo 所说,它通常与工作区和项目相关。我唯一的补充是如果你使用 BitRise 在云中编译它,你需要检查工作流应用程序设置(参见:http://devcenter.bitrise.io/ios/frequent-ios-issues/#cocoapods-missing-dependency-issue)。它可以默认使用项目而不是工作区文件。
当我有一个包含撇号的项目名称时,我遇到了这个问题,导致 CocoaPods 为 GTMOAuth2 框架生成了一个无效的目录路径。
我通过更改项目名称并重新生成所有文件来修复它。
在我格式化 mac 之前一切正常。格式化后(从 El Capitan
移动到 Sierra
),我克隆了存储库,安装了 Cocoapods
,做了 pod update
。 pods
一切都搞砸了。我无法构建应用程序。错误是 Cocoapods
(我认为是)。错误如下:
ld: framework not found GTMOAuth2
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我正在使用 Xcode 8.0
和 Swift 2.3
,以及 Cocoapods 1.1.1
。
我的Podfile
是:
# Uncomment this line to define a global platform for your project
# platform :ios, '9.0'
target 'ProjectName' do
# Comment this line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!
# Firebase Pods
pod 'Firebase'
pod 'Firebase/Messaging'
pod 'Firebase/Auth'
pod 'Firebase/Crash'
# Google Pods
pod 'Google/SignIn'
pod 'Google/Analytics'
# Crashlytics
pod 'Fabric'
pod 'Crashlytics'
# Facebook
# pod 'FacebookCore'
# Pods for ProjectName
target 'ProjectName Tests' do
inherit! :search_paths
# Pods for testing
end
target 'ProjectName UITests' do
inherit! :search_paths
# Pods for testing
end
end
还收到有关框架路径的警告。即:
ld: warning: directory not found for option '-F/Users/<user>/Library/Developer/Xcode/DerivedData/<project-name>-ftvbhpamiyfzmwdfpxknyvpcypde/Build/Products/Debug-iphonesimulator/GTMOAuth2'
ld: warning: directory not found for option '-F/Users/<user>/Library/Developer/Xcode/DerivedData/<project-name>-ftvbhpamiyfzmwdfpxknyvpcypde/Build/Products/Debug-iphonesimulator/GTMSessionFetcher'
ld: warning: directory not found for option '-F/Users/<user>/Library/Developer/Xcode/DerivedData/<project-name>-ftvbhpamiyfzmwdfpxknyvpcypde/Build/Products/Debug-iphonesimulator/GoogleToolboxForMac'
通过选择 .xcworkspace
(而不是 .xcodeproj
)重新打开您的项目,这 3 个警告和 1 个错误将消失。
要解决此问题,请确保在您的项目构建设置中将 Build Active Architecture Only
设置为 No
。
还要在所有 Pod 目标中将 Build Active Architecture Only
设置为 No
,如所附屏幕截图所示。
然后清理并重建项目。
正如@jeffrey-neo 所说,它通常与工作区和项目相关。我唯一的补充是如果你使用 BitRise 在云中编译它,你需要检查工作流应用程序设置(参见:http://devcenter.bitrise.io/ios/frequent-ios-issues/#cocoapods-missing-dependency-issue)。它可以默认使用项目而不是工作区文件。
当我有一个包含撇号的项目名称时,我遇到了这个问题,导致 CocoaPods 为 GTMOAuth2 框架生成了一个无效的目录路径。
我通过更改项目名称并重新生成所有文件来修复它。