模块' GoogleMobileAds'在iOS中找不到

时间:2015-04-07 06:29:49

标签: ios admob

我使用Pod将Google AdMob SDK更新为7.1.0。

所以在我的appDelegate.m中,我正在尝试添加此行

@import GoogleMobileAds;

但我收到的错误是未找到模块'GoogleMobileAds'

谷歌在gitHub上的Interstial Ad示例中也存在此问题。

此致 兰吉特

20 个答案:

答案 0 :(得分:23)

将GoogleMobileAds.framework复制到您的应用时,请务必选中“如果需要,请复制项目”框。

enter image description here

在我的情况下,我删除了框架并再次添加了该框架并检查了该框并且问题消失了。

答案 1 :(得分:16)

尝试将GoogleMobileAds.framework复制到根项目文件夹中,然后将其添加到库中。它对我来说很完美。

答案 2 :(得分:9)

对于我来说,其他任何答案都没有。这就是:

转到“构建阶段”,“将二进制文件链接到库”。我已经在这里添加了GoogleMobileAds.framework,所以我将其删除并重新添加。

要添加它,请单击“链接二进制文件库”部分的+号,然后单击“添加其他...”。导航到您存储的位置GoogleMobileAds.framework并选择它。

通过转到'文件'>确保您首先将GoogleMobileAds.framework添加到您的项目中'将文件添加到您的项目名称'。

这解决了我的问题。

答案 3 :(得分:7)

以下是答案:

将其导入 .m文件

#import <GoogleMobileAds/GADInterstitial.h>
#import <GoogleMobileAds/GADBannerView.h>

答案 4 :(得分:6)

我在更新我的pod并使用Firebase时遇到了这个问题。不幸的是,这里没有任何答案有帮助,所以我想我会发布对我有用的内容。

我找到了一个帮助我here的好线程。基本上做了以下工作:

  • 删除我的广告连播 - rm -rf Pods
  • 重新安装我的广告连播 - pod install --repo-update

希望这对某人有所帮助,因为这让我困扰了一段时间。

答案 5 :(得分:4)

我解决了在Build Settings中将“Defines Modules”设置为YES并重新导入Framework的问题。

答案 6 :(得分:4)

这是适用于我的解决方案:

不要这样做
don't do this˙而不是将 GoogleMobileAds.framework 拖到您的项目中添加提到的所有其他框架here,并在需要时拖放检查复制项目。

enter image description here

答案 7 :(得分:2)

我删除了pod并重新安装...解决了我的问题

rm -Rf Pods; pod install

在我的项目目录中。

答案 8 :(得分:2)

我被这个问题困住了几个小时,但终于找到了优雅的解决方案。 我的方法不使用“手动文件链接”,只使用纯podfile文件。

我在向项目添加另一个目标后更新了我的pod('pod install'或'pod update')时遇到了这个问题。

我的解决方案是:

转到您的podfile并确保为项目的每个目标定义了“target ...”块(瞧!好像没有记录,至少我没有找到它) 。 例如,您有两个目标:“theApp”和“theApp Lite”。在这种情况下,您的pod文件必须如下所示:

target 'theApp' do
# ...your pods and options here
end

target 'theApp Lite' do
# ...your pods and options here
end

然后执行“pod install”或“pod update”更新您的库。

然后转到每个目标的常规设置,并确保你有正确的(对应你的目标)“libPods ... a”(或“libPods ...框架”,以防你使用“use_frameworks!”podfile选项)链接在“链接的框架和库”部分下的文件。删除垃圾/错误/混淆链接(如果有)。如果缺少则手动添加(当您点击“+”时必须出现在“工作区”组/目录下)。

在“构建阶段”下,您应该观察“[CP]” - 每个目标的前缀项目。

在此之后我没有建筑问题。

答案 9 :(得分:2)

这里的实际问题是,在您的应用的构建设置中,您缺少设置:

框架搜索路径

编辑project.pbxproj,以便BuildSettings包含类似的内容:

FRAMEWORK_SEARCH_PATHS = "/Users/bram/src/GoogleMobileAdsSdkiOS-7.16.0/";

或者使用Xcode的UI更改构建设置,如下所示:

setting in Xcode UI

答案 10 :(得分:1)

我遇到了同样的问题。这就是我做的。它对我有用(希望它可以帮助某人)。

  1. 将GoogleMobileAds.framework复制到某个位置,如果有,请将其从pod中删除。
  2. 手动将此框架添加到您的项目中(选择&#34;根据需要复制项目&#34;)。检查构建阶段以确保在&#34;链接二进制文件...&#34;部分。
  3. 再次清除并重建=&gt;成功。

答案 11 :(得分:1)

对我来说,问题是我没有更新我的应用程序的“部署目标”。它被设定为&lt; 7.0这就是为什么它可能在抱怨。一旦我将目标更新为&gt; 7.0,错误消失了。 (对于未来的人一年只更新他们的应用程序几次)

答案 12 :(得分:0)

不要在windows下解压缩lib文件,它无法正确处理符号链接。

答案 13 :(得分:0)

我只是添加“use_frameworks!”在podfile中,更新pod并且它可以工作。当我将操作系统更新为El Captain(10.11.15)和XCode更新为8版本时出现此问题。我的podfile现在:

    target 'My Target' do
       use_frameworks!
       pod 'MagicalRecord'
       pod 'AFNetworking'
       pod 'Firebase'
       pod 'Firebase/Core'
       pod 'Firebase/AdMob'
    end

答案 14 :(得分:0)

如果有人仍然遇到同样的问题,我只能找到解决方案。我花了几个小时尝试到目前为止所推荐的所有内容并且没有工作,我仍然不知道我做错了什么,但这里有一个对我有用的小黑客: 无论我从谷歌下载什么框架(我尝试过手册和Cocoa Pods方法)都行不通,但是当我刚下载他们的小测试人员xCode项目(我相信BannerExample.xcodeproj)时,我复制了与该测试项目捆绑在一起的框架,将其粘贴到我的目标项目文件中,然后添加框架并将其链接。在这样做后,我能够很好地导入框架,adMob工作得很好。我不能为我的生活弄清楚会有什么不同,但这确实有效。我希望这个解决方案可以帮助其他任何人解决同样的问题。我相信我撕掉了头上最后五根头发中的一根。祝你好运!

答案 15 :(得分:0)

我遇到了同样的问题。这就是我做的。希望它可以帮到某人。

  1. 从项目中删除GoogleMobileAds.framework(或将其存储在其他文件夹中)。
  2. 转到Build PhasesLink Binary with Libraries。 点击+部分的Link Binary with Libraries符号,然后点击Add Other...。导航到您已存储的位置GoogleMobileAds.framework > Versions > A > GoogleMobileAds并将其打开。
  3. 这完全解决了我的问题。

答案 16 :(得分:0)

Xcode版本7.2.1(7C1002) 目标C

我遇到了这个问题,每次都要继续添加GoogleMobileAds以解决这个问题。 不确定这是不是一个bug。 首先选择GoogleMobileAds.framework,然后取消勾选并勾选目标成员资格,然后尝试构建错误消失。 这对我有用。我希望它有所帮助。

答案 17 :(得分:0)

我留下了一个生成注入静态框架的脚本

pod --version 1.3.1
Version 9.1 (9B55)

Podfile [目标]

target 'generic' do
    #Google
    pod 'GoogleAds-IMA-iOS-SDK', '~> 3.6.1'
    pod 'Google-Mobile-Ads-SDK', '~> 7.25.0'

    #pod Module 'GoogleMobileAds' not found 
    pod '#LIB_ERROR#'
    sd
end

Podfile [功能]

def inject_frameworks(installer, targetName, listPaths)
    def print_info(text)
        puts "\e[33m[!] #{text}\e[0m"
    end

    installer.pods_project.targets.each do |target|
        if target.name == targetName
            print_info "Inject frameworks in #{target.name}"
            config = target.build_configurations.first
            if config
                xcconfig_path = config.base_configuration_reference.real_path
                build_settings = Hash[*File.read(xcconfig_path).lines.map{|x| x.split(/\s*=\s*/, 2)}.flatten]

                frameworks_paths = Array.new
                if build_settings['FRAMEWORK_SEARCH_PATHS']
                    frameworks_paths.concat(build_settings['FRAMEWORK_SEARCH_PATHS'].delete!("\n").split(/ /))
                end 

                listPaths.each do |frameworks_path|
                    print_info "[#{target.name}] Add search path frameworks #{File.dirname frameworks_path}"
                    frameworks_paths.push(File.dirname frameworks_path)
                end

                build_settings['FRAMEWORK_SEARCH_PATHS'] = frameworks_paths.join(" ")
                File.open(xcconfig_path, "w") { |file| file << "" }
                build_settings.each do |key,value|
                  File.open(xcconfig_path, "a") {|file| file << "#{key} = #{value.strip}\n"}
                end

                listPaths.each do |frameworks_path|
                    print_info "[#{target.name}] Add frameworks #{File.basename frameworks_path}"
                    new_file_framework = config.project.frameworks_group.new_file(frameworks_path)
                    target.frameworks_build_phase.add_file_reference(new_file_framework, true)
                end
            end
        end
    end
end

Podfile [运行功能]

post_install do |installer|
    inject_frameworks(installer, "#LIB_ERROR#", [
        '$(PROJECT_DIR)/Google-Mobile-Ads-SDK/Frameworks/frameworks/GoogleMobileAds.framework',
        '$(PROJECT_DIR)/GoogleAds-IMA-iOS-SDK/GoogleInteractiveMediaAds/GoogleInteractiveMediaAds.framework'
    ])
end

答案 18 :(得分:0)

这种情况有时会发生在尝试不使用GoogleMobileAds时,如果是这种情况(就像我查看时那样): 1-单击项目名称。 2-构建设置。 3-链接框架。 4-选择GoogleMobileAds,然后选择按钮上的( - )按钮。

这解决了从应用模板中移除广告时的问题。

答案 19 :(得分:0)

如果某人仍然出现此错误 - 请检查是否在构建设置字段&#34;框架搜索路径&#34;填充了框架的正确路径