iOS,ld:未找到架构 arm64 的 GoogleMaps 框架

Posted

技术标签:

【中文标题】iOS,ld:未找到架构 arm64 的 GoogleMaps 框架【英文标题】:iOS , ld: framework not found GoogleMaps for architecture arm64 【发布时间】:2015-12-06 00:47:27 【问题描述】:

我正在使用谷歌地图开发一个应用程序。我会解释我用谷歌地图做了什么,也许你可以帮助我。

我在没有 POD 的情况下使用谷歌地图框架,但在谷歌地图密钥出现一些错误后,我删除了谷歌地图框架参考,并使用 POD 安装了它。一切正常,但是当我点击

产品 -> 测试

现在我收到此错误:

ld: framework not found GoogleMaps for architecture arm64

知道如何解决这个问题吗?

谢谢!

Podfile 看起来像这样 Cocoapods v1.0 beta 6):

platform :ios, '8.0'
use_frameworks!

target 'Project' do
    pod 'GoogleMaps'

    target 'ProjectTests' do
        inherit! :search_paths
        pod 'Mockingjay'
    end
end

【问题讨论】:

使用 Cocoapod 可能会更好,将库/框架添加到项目中非常简单,而且这种方法不易出错。 嗯,谢谢你,就像我说的......我现在正在使用可可豆荚 @Asinox 你能更新你的 podfile 吗? 【参考方案1】:

更新请检查您是否在目标的ArchitecturesBuild active Architectures only 键中具有相同的构建设置

你的 podfile 应该是这样的

platform :ios, '8.0'
use_frameworks!

target 'Project' do
    pod 'GoogleMaps'
end

target 'ProjectTests' do
     //inherit! :search_paths
     pod 'Mockingjay'
end

在开始ProjectTest 目标之前结束project 目标,为什么还要添加inherit! :search_paths?除非您有特殊要求,否则通常不需要它


旧答案

如果你想在测试目标中添加 pod,那么在测试中添加的方式也与在项目的主目标中添加的方式相同

所以如果“SwiftCocoaPods”是你的主要目标名称,你的可可豆荚就是这样

//other top level imports
target “SwiftCocoaPods” do
pod "GoogleMaps"
end

target “SwiftCocoaPodsTests” do
pod "GoogleMaps"
end

然后你应该为测试添加 pod,比如“SwiftCocoaPodsTests”。您可以将名称替换为您的测试目标名称

否则,如果您想在多个目标中添加相同的 pod,您可以使用 def 并在所有看起来像这样的目标中使用它

def project_pods
pod "GoogleMaps"
//add other pods which you want in all the targets
end

target “SwiftCocoaPods” do
project_pods 
end

//only add project_pods instead of pods individually 
target “SwiftCocoaPodsTests” do
project_pods
end

【讨论】:

没有。问题是我们不想在测试目标中包含 GoogleMaps。因此使用 Cocoapods 是为了仅将其包含在主要目标中。但是由于某种原因,Test 目标仍然认为它需要加载 GoogleMaps。 @GnarlyDog ,所以你不想要 googlemaps 但它也需要它作为测试目标?你能更新你的 podfile 吗? @GnarlyDog 在否决之前你们必须提到你不希望 cocoapods 在测试目标中仍然显示/在目标中使用 cocoapods 你当前的问题没有说这个,它只是说构建失败 很公平。但我认为从原始问题中很清楚。尽管如此,我将使用示例 Podfile 更新问题。 @GnarlyDog ,更新的答案可能会有所帮助【参考方案2】:

这对我有用:

platform :ios, '9.0'

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

def all_pods
    pod 'GoogleMaps'
end

abstract_target 'Map Base' do
     all_pods

     target 'Map' do

     end

     target 'Unit Tests' do

     end

     target 'Device Tests' do

     end
end

【讨论】:

以上是关于iOS,ld:未找到架构 arm64 的 GoogleMaps 框架的主要内容,如果未能解决你的问题,请参考以下文章

链接器错误:ld:未找到架构 x86_64 的符号

ld:未找到架构 x86_64(领域)的符号

C++ 库编程错误:ld:未找到架构 x86_64 的符号

错误:未找到架构 x86_64 的符号,collect2:ld 返回 1 退出状态

显示最近的问题 ld:架构 arm64 的 84 个重复符号

框架未找到FBSDKShareKit用于架构arm64