幻蓝博客 – 孤月蓝风

追寻互联网科技、Unity开发、AR/VR开发、游戏开发、Web前后端开发等技术。

幻蓝博客 – 孤月蓝风幻蓝博客 – 孤月蓝风

Unity与iOS交互(四):使用XUPorter在构建XCode工程时自动添加Framework、编辑Info.plist、OC代码等

本文是全系列中第4 / 4篇:Unity与iOS交互

开发环境:XCode 9.2 , Unity 2017.1.3,XUPorter 2018.02.24

XUPorter是一个可以帮助你在导出XCode工程时,自动添加Framework、自动编辑Info.plist、编辑OC代码的工具,建议先阅读XUPorter作者对该项目的简介。这是一个开源项目,目前最后一次修改是在2016年4月6日,英文文档已更新,但是雨松MOMO的文章和作者的介绍都已经过时,有些方法已被修改,这篇文章主要介绍该项目目前版本该如何使用。

该项目Github地址:https://github.com/onevcat/XUPorter

安装(放入工程中)

首先下载该项目,并放到Unity工程的Editor文件夹中,安装完成了

目录结构

XUPorter项目结构

XUPorter项目结构

projmods使用

.projmods文件你可以理解为一个SDK的配置的文件,我们每需要接一个SDK,就可以创建一个该类型的文件,当然你也可以全部放在一个文件中,但推荐分开存放,防止混淆。

我们先看之前接入微信支付时的配置文件,该配置文件内容是JSON格式:

微信支付projmods配置文件

微信支付projmods配置文件

group:组名称,可以简单理解为该配置的名称

libs:需要加入XCode工程的dylib文件,这里我全部放入了frameworks里,该字段并没有放入内容

frameworks:需要加入工程的各种Framework,这里是系统的Framework,并不是第三方Framework

headerpaths:需要加入搜索的头文件路径

files:需要加入到工程中的文件名,例如第三方Framework是一个当前配置文件所在目录的相对地址,不支持通配符

folders:需要加入到工程中的文件夹名,是一个当前配置文件所在目录的相对地址,不支持通配符

excludes:排除的文件类型,支持正则表达式

compiler_flags:需要加入的编译标签

linker_flags:需要加入的链接标签,微信SDK需要加入-Objc-all_load两个,其他SDK也会有类似要求

plist:需要修改的Info.plist的内容,这个功能是之后的贡献者提交的,所以在中文介绍中并没有提到,在Github上的版本中,只支持urltype的操作。因为微信支付SDK需要添加LSApplicationQueriesSchemes,所以我通过修改代码,支持了这个字段,但因为并不是通用解决办法,所以没有提交 pull request

当了解了上面的这些内容后,接入SDK也就非常简单了,每次 不可Append 构建后不再需要修改这些内容了。因为可以直接扩展UnityAppController,所以我们不再需要通过XUPorter来修改UnityAppController.mm的代码。

另外,修改plist文件的方法也不存在了,如果需要的话你可能需要自行修改代码来实现。上面修改代码支持修改plist的LSApplicationQueriesSchemes的代码为XCPlist.cs文件中AddPlistItems函数,代码如下:

修改XCPlist的AddPlistItems函数

修改XCPlist的AddPlistItems函数

某些情况下,我们可能需要修改其他文件,例如接入极光推送时,需要修改 Classes/Preprocessor.h 里的 UNITY_USES_REMOTE_NOTIFICATIONS 0来使程序支持极光推送,我们可以通过如下代码来修改:

修改Preprocessor.h文件

修改Preprocessor.h文件

以上就是目前使用到的XUPorter功能,在我接入微信支付SDK和极光推送时,通过上面介绍到的功能已经可以完成全部的修改了,如果有遗漏,欢迎反馈。

文章导航