首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何让admob (.xcframework)与机器人(Libgdx)一起工作?错误:架构arm64的未定义符号:

如何让admob (.xcframework)与机器人(Libgdx)一起工作?错误:架构arm64的未定义符号:
EN

Stack Overflow用户
提问于 2022-05-30 19:37:29
回答 2查看 176关注 0票数 0

我试图在我的LibGDX iOS项目上实现google,当我试图启动这个游戏时,我得到了以下错误:

代码语言:javascript
运行
复制
[ERROR] 14:44:17.979 Undefined symbols for architecture arm64:
[ERROR] 14:44:17.980   "_OBJC_CLASS_$_GADInterstitial", referenced from:
[ERROR] 14:44:17.981       objc-class-ref in libGGLAdMob.a(GGLContext+AdMob.o)
[ERROR] 14:44:18.114      (maybe you meant: _OBJC_CLASS_$_GADInterstitialAd)
[ERROR] 14:44:18.157 ld: symbol(s) not found for architecture arm64
[ERROR] 14:44:18.180 clang: error: linker command failed with exit code 1 (use -v to see invocation)
[ERROR] Couldn't compile app

我的gradle文件中有以下内容:

代码语言:javascript
运行
复制
buildscript {
    
    ....
    dependencies {
        classpath 'com.android.tools.build:gradle:7.1.3'
        classpath 'com.mobidevelop.robovm:robovm-gradle-plugin:2.3.15'

        //for ads for firebase
        classpath 'com.google.gms:google-services:4.3.10'
    }
}

allprojects {
    apply plugin: "eclipse"

    version = '1'
    ext {
        ...
        gdxVersion = '1.10.0'
        roboVMVersion = '2.3.15'
        ...
    }

    ...
}

project(":ios") {
    apply plugin: "java-library"
    apply plugin: "robovm"

    //publish on app store (iOS)
    configurations {natives}

    dependencies {
        ...

        //robopods
        implementation "com.mobidevelop.robovm:robopods-google-mobile-ads-ios:2.2.3"
    }


    //publish on app store (iOS)
    robovm {
        // Configure robovm
        iosSignIdentity = "Apple Distribution: XXXXXX XXX (XXXXXXXXX)"
        iosProvisioningProfile = "XXXX XXXX"
        iosSkipSigning = false
        arch = "arm64"
        stdoutFifo = ""
        stderrFifo = ""
    }
}

我从这里下载了admob:https://developers.google.com/admob/ios/download

我解压缩文件并将sdk添加到项目中ios文件夹中的文件夹中。

我在ios文件夹中创建了libsarm_libssim_libs

然后我将所有.xcframework文件(在我的下载文件夹中)复制并粘贴到libs文件夹中。然后从我的下载文件夹复制并粘贴.xcframework文件夹中的.xcframework文件到arms_libssim_libs文件夹中。

Info.plist.xml中,我将admob添加如下:

代码语言:javascript
运行
复制
<key>GADApplicationIdentifier</key>
    <string>ca-app-pub-xxxxxxxxxxxxxxx~xxxxxxxxx</string>

    <key>SKAdNetworkIdentifier</key>
    <string>cstr6suwn9.skadnetwork</string>

robovm.xml文件中,我添加了以下内容:

代码语言:javascript
运行
复制
<frameworkPaths>
    <path>libs</path>
    <path variant="device">arm_libs</path>
    <path variant="simulator">sim_libs</path>
  </frameworkPaths>

<frameworks>
....
<!--    googleMobileAdsASKiOS 9.5.0-->
    <framework>GoogleAppMeasurement</framework>
    <framework>GoogleMobileAds</framework>
    <framework>GoogleUtilities</framework>
    <framework>nanopb</framework>
    <framework>PromisesObjC</framework>
    <framework>UserMessagingPlatform</framework>
    <framework>GoogleAppMeasurementIdentitySupport</framework>

  </frameworks>

然后启动物理设备(iPhone 8),得到以下错误:

代码语言:javascript
运行
复制
[ERROR] 14:44:17.979 Undefined symbols for architecture arm64:
[ERROR] 14:44:17.980   "_OBJC_CLASS_$_GADInterstitial", referenced from:
[ERROR] 14:44:17.981       objc-class-ref in libGGLAdMob.a(GGLContext+AdMob.o)
[ERROR] 14:44:18.114      (maybe you meant: _OBJC_CLASS_$_GADInterstitialAd)
[ERROR] 14:44:18.157 ld: symbol(s) not found for architecture arm64
[ERROR] 14:44:18.180 clang: error: linker command failed with exit code 1 (use -v to see invocation)
[ERROR] Couldn't compile app
....

我尝试了许多不同的解决方案,我在网上找到,但似乎没有任何效果。任何帮助都将不胜感激。谢谢!

EN

Stack Overflow用户

发布于 2022-07-28 07:33:38

更新:根案例是com.mobidevelop.robovm:robopods-google-mobile-ads-ios,它依赖于com.mobidevelop.robovm:robopods-google-apis-ios,并且这个伪文件包含本机库libGGLCore.a,它公开了这些缺失的依赖项。这个库没有源代码,从2016年起,RoboVM被女士关闭,您不应该使用这些绑定,因为这些绑定没有更新。考虑使用alt-pods作为更新的和正在更新(由我)

MobiVM 吉特频道上也有类似的问题。很少有这样的时刻:

  • 包含GoogleMobileADs-SDK9.7.0的Firebase.zip (9.3.0)既没有对libGGLAdMob.a的引用也没有对_OBJC_CLASS_$_GADInterstitial的引用。您可以通过在GAD框架上搜索二进制文件或使用nm工具来检查这一点;
  • com.mobidevelop.robovm:robopods-google-mobile-ads-ios已经过时了。

从根本上讲,使用错误的框架(例如旧框架)是有可能的。

作为测试的一种快速方法,这里有一个使用丙氨酸豆荚绑定(通常是最近的) https://github.com/dkimitsa/alt-pods-tests/tree/master/firebase-google-ads的示例项目

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72439256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档