目录

一、CocoaPods 依赖配置

1. Podfile文件

2. 安装依赖

二、手动集成 .framework

1. 将框架添加到项目中

2. 配置链接器标志

3. 验证集成

4. 添加文件 Action 介绍

三、编译报错问题排查

3.1 配置框架搜索路径

3.2 检查 Target Membership

解决方案

方案 1:将 AppLovinSDK和TradPlusAdSDK 等 也添加到 Unity-iPhone target

方案 2:统一管理依赖

方案 3 :移除ALMCMediationAdapter.framework 在 Unity-iPhone target 中链接

3.3 查看.framework是否为静态库

相关推荐


本文以 AppLovin Custom Adapter 方式集成 TradPlus SDK 为例,详细介绍从 CocoaPods 配置到框架集成的完整过程,并提供常见编译错误的解决方案。

一、CocoaPods 依赖配置

1. Podfile文件

首先确保您的 Podfile 文件包含正确的依赖声明:

source 'https://cdn.cocoapods.org/'

platform :ios, '12.0'

target 'UnityFramework' do
  pod 'AppLovinSDK', '13.4.0'
  pod 'TradPlusAdSDK', '14.2.0'
  pod 'TradPlusAdSDK/TPCrossAdapter', '14.2.0'
end
target 'Unity-iPhone' do
end
use_frameworks! :linkage => :static

2. 安装依赖

在终端中执行以下命令:

cd /Users/test/TradplusUnity/UnityiOS0905
pod install
test@MacBook-Pro-2 Unity090417 % cd /Users/test/TradplusUnity/UnityiOS0905
test@MacBook-Pro-2 UnityiOS0905 % pod install
Analyzing dependencies
Downloading dependencies
Installing AppLovinSDK (13.4.0)
Installing TPExchange (13.8.10)
Installing TradPlusAdSDK (14.2.0)
Generating Pods project
Integrating client project

[!] Please close any current Xcode sessions and use `Unity-iPhone.xcworkspace` for this project from now on.
Pod installation complete! There are 3 dependencies from the Podfile and 3 total pods installed.
test@MacBook-Pro-2 UnityiOS0905 % 

二、手动集成 .framework

将 ALMCMediationAdapter.framework v1.0.2 集成到 Xcode 项目中

1. 将框架添加到项目中

方法一:通过拖拽添加

  • 打开您的 Xcode 项目 (Unity-iPhone.xcodeproj)

  • 在 Finder 中找到下载的 ALMCMediationAdapter.framework 文件

  • 将其拖拽到 Xcode 的 Frameworks 文件夹中

  • 在弹出的对话框中,确保选择所有目标 (Unity-iPhone 和 UnityFramework),这里咱们选UnityFramework。

方法二:通过菜单添加

  1. 右键点击 Frameworks 文件夹

  2. 选择 "Add Files to 'Unity-iPhone'..."

  3. 找到并选择 ALMCMediationAdapter.framework

  4. 在弹出的对话框中,确保选择所有目标 (Unity-iPhone 和 UnityFramework),这里咱们选UnityFramework。

2. 配置链接器标志

在 Build Settings 中:

  • 搜索 Other Linker Flags

  • 添加:-ObjC(如果尚未存在)

3. 验证集成

  1. 清理项目:Product > Clean Build Folder

  2. 编译项目检查是否有错误

  3. 确保框架出现在 Link Binary With Libraries 中:

    • 选择目标

    • 转到 Build Phases

    • 在 Link Binary With Libraries 中确认框架存在(或出现多个则移除)

4. 添加文件 Action 介绍

在 Xcode 16.4 中,当您添加文件时会出现三个选项:

  • Copy files to destination /Copy items if needed (推荐)

    • 相当于原来的 "Copy items if needed"

    • 会将文件复制到项目目录中

  • Move files to destination

    • 将文件移动到项目目录中(原位置文件会被移动)

  • Reference files in place

    • 只创建引用,文件保持在原位置

建议选择 "Copy files to destination" 以确保框架文件被复制到项目目录中。

三、编译报错问题排查

3.1 配置框架搜索路径

只要看到 framework not foundld:clang: error: linker  这类报错,几乎都与「链接阶段没找到库」有关。

在 Build Settings 中配置框架搜索路径:

  1. 选择 Unity-iPhone 目标

  2. 转到 Build Settings 标签

  3. 搜索 Framework Search Paths

  4. 添加路径:$(PROJECT_DIR)/Frameworks

  5. 确保设置为 recursive

3.2 检查 Target Membership

Undefined symbol: _OBJC_CLASS_$_ALMediationAdapter
Undefined symbol: _OBJC_CLASS_$_ALSdk
​​​​​​​Undefined symbol: _OBJC_CLASS_$_ALUtils

这些错误表明 ALMCMediationAdapter.framework 依赖的其他框架没有被正确链接。
 

检查 Target Membership,在添加ALMCMediationAdapter.framework文件时,是否选中了Unity-iPhone,如下图所示:

Podfile 配置中,AppLovinSDK和TradPlusAdSDK 等 只添加到了 UnityFramework target,但 ALMCMediationAdapter.framework 需要在 Unity-iPhone target 中链接,如上图

解决方案
方案 1:将 AppLovinSDK和TradPlusAdSDK 等 也添加到 Unity-iPhone target
source 'https://cdn.cocoapods.org/'
platform :ios, '12.0'

target 'UnityFramework' do
  pod 'AppLovinSDK', '13.4.0'
  pod 'TradPlusAdSDK', '14.2.0'
  pod 'TradPlusAdSDK/TPCrossAdapter', '14.2.0'
end

target 'Unity-iPhone' do
  pod 'AppLovinSDK', '13.4.0'  # 添加这一行
end

use_frameworks! :linkage => :static
方案 2:统一管理依赖
source 'https://cdn.cocoapods.org/'
platform :ios, '12.0'

# 在全局安装,所有target都能访问
pod 'AppLovinSDK', '13.4.0'
pod 'TradPlusAdSDK', '14.2.0'
pod 'TradPlusAdSDK/TPCrossAdapter', '14.2.0'

target 'UnityFramework' do
  # 这里可以添加UnityFramework特有的pod
end

target 'Unity-iPhone' do
  # 这里可以添加Unity-iPhone特有的pod
end

use_frameworks! :linkage => :static
方案 3 :移除ALMCMediationAdapter.framework 在 Unity-iPhone target 中链接

3.3 查看.framework是否为静态库

  • .framework ≠ 动态库也可以是静态库

  • 你这个 .framework 是一个 静态库打包成的 framework 结构,这在 iOS 第三方 SDK 中很常见

查看 .framework 是静态还是动态:

file ALMCMediationAdapter.framework/ALMCMediationAdapter

test@MacBook-Pro-2 Unity090417 % file ALMCMediationAdapter.framework/ALMCMediationAdapter 
ALMCMediationAdapter.framework/ALMCMediationAdapter: 
Mach-O universal binary with 2 architectures: 
[x86_64:current ar archive random library] 
[arm64:current ar archive random library] 
ALMCMediationAdapter.framework/ALMCMediationAdapter (for architecture x86_64): 
current ar archive random library 
ALMCMediationAdapter.framework/ALMCMediationAdapter (for architecture arm64): 
current ar archive random library

从上面的 file 命令输出可以看出:ALMCMediationAdapter.framework 是一个 静态库(不是动态库)。

相关推荐

Unity Hub 创建支持 Android & iOS 的项目教程-CSDN博客文章浏览阅读844次,点赞28次,收藏15次。对于新手或大多数游戏类型,建议选择“3D (Core)”模板。这是最通用的起点。如果你的项目是 2D 游戏,可以选择“2D”模板。(其他模板如 URP, HDRP 提供了更高级的图形功能,但设置稍复杂,初学者可先使用 Core 模板,后面会介绍)。 https://shuaici.blog.csdn.net/article/details/151186546Unity打包Android应用常见问题解决指南-CSDN博客文章浏览阅读644次,点赞30次,收藏22次。本文主要解决Unity打包Android应用时的两个常见问题:1)在Build And Run时正确保存APK文件的操作指南,包括命名规范(建议使用英文和下划线)和存储路径选择(避免Assets文件夹);2)针对Mac系统出现的权限错误(Win32Exception),提供了详细的终端命令解决方案,通过chmod命令递归修复Android SDK工具的执行权限。文章还解释了权限问题的成因,并给出了彻底卸载重装Unity的备选方案。 https://shuaici.blog.csdn.net/article/details/151187300

Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐