Unity打iOS之XUPorter 的使用

XUPorter使用说明 概述 在打包IOS的过程中,针对需要接入的不同SDK,包括源码、需要的库和框架等,若不使用一些辅助工具的话,需要在导出的IOS工程中手动进行,针对不同SDK的依赖库的添加等操作,路径设置等操作,会消耗大量的时间,于是需要一套自动化添加IOS端SDK相关配置的方案 Unity的支持 Unity中加入了[PostProcessBuild]标签,通过该标签标注的函数,在build player结束后会自... 阅读详情

参考链接:

Unity3D研究院之IOS全自动编辑framework、plist、oc代码(六十七)

Unity与iOS交互(XUPorter的使用)

XUPorter GitHub

说明:

1.我们在用Unity打包iOS的时候,经常需要自动化设置导出工程的各项配置,比如证书名、TeamId、mobileprovision文件等等。

在Unity 4.x时代,常用的工具是XUPorter(原作者已不再维护,如果坚持要用,可以从github上下载:https://github.com/onevcat/XUPorter

---------

2.在Unity 5.x之后,Unity官方提供了另外一套工具,叫做xcodeapi,因为是官方维护的,所以在使用上可以更放心,所以推荐使用。

xcodeapi的工程链接在Unity的开源bitbucket上:https://bitbucket.org/Unity-Technologies/xcodeapi

如何使用参考博文:https://linxinfa.blog.csdn.net/article/details/87618408?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control

------------------------------------------------------------------------------------------------------------------------

重点:自己测试 XUPorter

1.测试工程代码:

链接: https://pan.baidu.com/s/1rMFfmbalHKVaJCnNfVrlow 提取码: ie2u

优化修改了添加 plist.info 配置文件的功能。

环境:Unity2018.4.10f1

1.修改 frameworks

这里参考链接:http://www.xuanyusong.com/archives/2720

那么我用一个比较变态的SDK举个例子ShareSDK,它就需要自动添加framework,修改plist,还有要修改oc的代码。第一步打开XUPorter/Mods/share.projmods 文件。

{
    "group": "share",
    "libs": ["libicucore.dylib","libz.1.2.5.dylib"],
    "frameworks": [
                    "SystemConfiguration.framework",
    				"QuartzCore.framework",
    				"CoreTelephony.framework",
    				"Security.framework",
                    "AdSupport.framework:optional",
                    "MessageUI.framework",
                     "StoreKit.framework",
                     "AudioToolbox.framework",
                     "QuartzCore.framework"
    			   ],
    "headerpaths": [],
    "files":   [
                "ShareSDK/Connection/SinaWeiboConnection.framework",
                "ShareSDK/Connection/WeChatConnection.framework",
                "ShareSDK/Core/AGCommon.framework",
                "ShareSDK/Core/ShareSDKCoreService.framework",
                "ShareSDK/ShareSDK.framework"
                ],
    "folders": ["ShareSDK/"],    
    "excludes": ["^.*.meta$", "^.*.mdown$", "^.*.pdf$"],
    "linker_flags": []
}

 frameworks分成两种,

一种是系统自带的framework还有一种是第三方的framework。

“frameworks”节点里面放的是系统自带的frameworks。

”files”节点里面放的是第三方做出来的framework。

尤其是第三方的framework如果位置放的不对,就不会被xcode所引用的!切记切记!!

folders:可以把某个文件夹下的所有文件拷贝在xcode工程里面,

一般sdk都会附带一些oc的代码文件,最好通过folders把oc的代码拷贝在工程里面。或者你也可以把oc的代码放在plugins下面,同样打包的时候也会拷贝进xcode工程

2. 修改 plist.info 配置文件 (用上面的百度网盘的工程,因为修改了些代码)

贴上测试配置:这里测试 修改 plist.info 配置文件的配置方法

{
    "group": "Test",
    "libs": [
    			"libz.dylib", 
    			"libc++.dylib"
    		],
    "frameworks": [
	 				
    			  ],
    "headerpaths": [],
    "files":   [
    				
                ],
    "folders": [],    
    "excludes": ["^.*.meta$", "^.*.mdown$", "^.*.pdf$"],
    "compiler_flags": [],
    "linker_flags": [
    					"-ObjC"
    				],
	"plist":{
				"NSCameraUsageDescription":"cameraDesciption",
				"NSContactsUsageDescription":"contactsDesciption",
				"NSMicrophoneUsageDescription":"microphoneDesciption",
				"NSPhotoLibraryUsageDescription":"photoLibraryDesciption",
				
				"打包设置plist":{"属性1":"描述1","属性2":true,}
			}
}

打包XCode 工程后 查看 plist.info 配置文件 如下:

3.修改 Bitcode,修改Debug Information Format

        #region XCodePostProcess.cs 文件中修改 Bitcode
        //TODO disable the bitcode for iOS 9
        project.overwriteBuildSetting("ENABLE_BITCODE", "NO", "Release");
        project.overwriteBuildSetting("ENABLE_BITCODE", "YES", "Debug");
        project.overwriteBuildSetting("ENABLE_BITCODE", "NO", "ReleaseForProfiling");
        project.overwriteBuildSetting("ENABLE_BITCODE", "NO", "ReleaseForRunning");
        #endregion

        #region XCodePostProcess.cs 文件中修改 Debug Information Format 
        // TODO : 自己添加 修改属性 - Build Options - Debug Information Format 
        project.overwriteBuildSetting("DEBUG_INFORMATION_FORMAT", "DWARF", "Debug");
        project.overwriteBuildSetting("DEBUG_INFORMATION_FORMAT", "DWARF", "Release");
        project.overwriteBuildSetting("DEBUG_INFORMATION_FORMAT", "DWARF", "ReleaseForProfiling");
        project.overwriteBuildSetting("DEBUG_INFORMATION_FORMAT", "DWARF", "ReleaseForRunning");
        #endregion

打包XCode 工程后 查看 Build Settings 配置 如下:

打包前的设置

上面是针对打包完成后的处理,也可以在打包之前设置一些设置。(这里没有使用 XUPorter)

参考:https://blog.csdn.net/ZFSR05255134/article/details/113564430

其它参考:不使用XUPorter导出XCode工程

Unity导出XCode工程的时候自动修改工程设置添加依赖:

https://blog.csdn.net/langresser_king/article/details/52905111

------------------------------------------

Unity 自动打包 Part1—配置Xcode工程

https://blog.csdn.net/blog_lee/article/details/52400535

Unity 自动打包 Part2—构建IPA文件

https://blog.csdn.net/blog_lee/article/details/70231351

Unity 自动打包 Part3—上传Bugly 邮件通知

https://blog.csdn.net/blog_lee/article/details/76020334

------------------------------------------

Unity接入Adset广告_IOS详解 Adset官网:注册成功后会进入审核状态,注意看微信24小时内会有专门的人加你的微信,然后询问你一些问题才可以审核通过,创建一个群聊小组,有什么问题(技术、相关问题等)可以在里面讨论。然后就可以创建媒体和广告位,不懂的地方问相关人员就可以了,这里不再赘述。 阅读详情

相关推荐

Unity iOS自动化构建终极指南:XUPorter原理与实战配置

在Unity跨平台开发中,iOS构建后的Xcode项目配置是常见的工程挑战,涉及手动添加框架、修改构建设置和编辑Info.plist等重复性工作。其核心原理在于利用Unity的构建后处理接口,通过脚本自动化操作Xcode项目文件,实现配置即代码。这项技术能显著提升开发效率,保证团队协作的一致性,并支持CI/CD流水线的集成。具体到Unity-iOS开发场景,XUPorter作为社区广泛使用的自动化配置插件,通过JSON配置文件驱动,可自动处理第三方SDK集成、Swift库支持、多环境管理等复杂需求。例如,在

weixin_29001327的博客 309

Unity3D研究院之IOS全自动编辑framework、plist、oc代码

Unity打IOS时会先生成一个Xcode工程,如果你需要增加一些第三方的framework那么需要手动一条一条的添加,这太烦了。。而且可能你还需要修改Plist文件,甚至还可能要修改unity自动生成的oc代码,每次打包都要修改的话,那太累了。。这篇文章就是全自动打包的第一步。。建议使用XUPorter,我在它的基础上拓展了两个类,一个用来修改plist,一个用来修改unity生成出来...

weixin_30778805的博客 268

XUPorter(Unity一键出iOS包)

XUPorter是由@onevcat开发的用于unity出iOS包时打包依赖文件的工具,由雨松momo添加修改plist和oc代码的功能,我添加了一些简单的拓展,并写了使用说明。

XUPorter开源项目指南及常见问题解决方案

**XUPorter** 是一个专为解决Unity 3D项目与Xcode项目集成难题而生的开源工具。它允许开发者在Unity自动构建后,自动化地向Xcode 4及以上版本的项目添加文件和框架。这意味着,你可以更高效地管理Unity导出至iOS平台时所需的资源和依赖。此项目基于C#编写,并利用了简化的MiniJSON库来处理配置数据,确保与现有JSON处理库的兼容性。 ## 新手注意事项及解决方案

gitblog_00839的博客 917

unity打包IOS资源 XUPorter插件

unity打包IOS配置文件资源,这样就不需要每次都在xcode中手动配置,非常方便好用

RAGFlow + GraphRAG+ 知识图谱 + QwQ32B探索实践

RagFlow 是一款开源的 RAG(Retrieval-Augmented Generation)引擎,专注于深度文档理解,能够助力企业及个人构建高效的 RAG 工作流程。借助大语言模型(LLM),它可以精准处理各种复杂格式的数据,为用户提供可靠的问答服务,并附上详实的引用依据。

技术引领业务创新 8万+

Unity与iOS交互(XUPorter的使用)

转载注明出处:https://fengyu.name/article/series/unity%E4%B8%8Eios%E4%BA%A4%E4%BA%92 注,在Unity 4.x时代,常用的工具是XUPorter,在Unity 5.x之后,Unity官方提供了另外一套工具,叫做xcodeapi,因为是官方维护的,所以在使用上可以更放心,所以推荐使用,关于xcodeapi的使用,见:https:...

linxinfa的专栏 4161

深入MoveIt与OMPL集成开发:从源码编译到自定义规划算法实战

本文详细介绍了如何从源码编译集成MoveIt与OMPL,并实现自定义规划算法的完整流程。通过清理环境、获取源码、解决编译依赖与错误,最终指导开发者创建并集成名为MyRRT的自定义规划算法,从而实现对机器人运动规划栈的深度定制与优化。

h0i1j2k3l的博客 460

如何快速配置Unity Xcode项目:XUPorter终极指南

想要在Unity生成Xcode项目后自动添加文件和框架吗?XUPorter就是你的终极解决方案!这款强大的工具能够大幅简化iOS开发流程,让配置过程变得简单高效。🎯 ## 为什么选择XUPorter? Unity开发者都知道,每次生成Xcode项目后都需要手动添加各种文件、框架和设置,这个过程既繁琐又容易出错。XUPorter通过自动化的方式解决了这个痛点,让你专注于核心开发工作。 **核

gitblog_00603的博客 862

Centos7.9使用kubeadm部署K8S集群

使用kubeadm部署一个k8s集群,单master+2worker节点。

lldhsds的专栏 1295

PCL 直通滤波器【2026最新版】

PCL直通滤波器函数详解以及用于多字段滤波、强度滤波、获取某一时间范围内的点等高阶用法案例分享。博客长期更新,本文最近一次更新时间为:2026年3月11日。

点云侠的博客 40万+

XUPorter 使用教程

XUPorter 是一个用于自动化添加 iOS SDK 配置的工具,它可以简化 Unity 项目中接入不同 SDK 的过程。以下是 XUPorter 项目的目录结构及介绍: ``` XUPorter/ ├── Editor/ │ ├── XUPorter.cs │ ├── XUPorter.projmods │ └── ... ├── README.md └── ... ``` -

gitblog_00393的博客 1001

1-Wire 单总线硬件结构及软件时序分析(实测波形+C代码分析)

1根线就可以通信,是不是很神奇?因为其节省I/O口的优点而被广泛使用!

记得诚 1万+

Unity编译iOS工程的自动化配置(XUPorter)

Unity编译iOS工程的自动化配置

骑着蜗牛找马儿 1万+

KingSCADA3.8保姆级安装教程

大家好,我是雷工!最近开始学习KingSCADA,今天这篇详细记录安装KingSCADA3.8的过程。首先下载需要的安装版本,此处以从官网下载的最新版本KingSCADA3.8为例,双击:Setup.exe;

做有价值的事,积累有价值的笔记! 1万+

Ubuntu搭建Pytorch环境(Anaconda、Cuda、cuDNN、Pytorch、Python、Pycharm、Jupyter)

Ubuntu搭建Pytorch环境(Anconda、Cuda、Pytorch、Python、Pycharm、Jupyter)

funfan的博客 1万+

Unity3D研究院之IOS全自动编辑framework、plist、oc代码(六十七)

Unity打IOS时会先生成一个Xcode工程,如果你需要增加一些第三方的framework那么需要手动一条一条的添加,这太烦了。。而且可能你还需要修改Plist文件,甚至还可能要修改unity自动生成的oc代码,每次打包都要修改的话,那太累了。。这篇文章就是全自动打包的第一步。。建议使用XUPorter,我在它的基础上拓展了两个类,一个用来修改plist,一个用来修改unity生成出来的OC代码

cbbbc 1644

❤️爆肝十二万字《python从零到精通教程》,从零教你变大佬❤️(建议收藏)

文章目录强烈推荐系列教程,建议学起来!!一.pycharm下载安装二.python下载安装三.pycharm上配置python四.配置镜像源让你下载嗖嗖的快4.1pycharm内部配置4.2手动添加镜像源4.3永久配置镜像源五.插件安装(比如汉化?)5.1自动补码神器第一款5.2汉化pycharm5.3其它插件六.美女背景七.自定义脚本开头八、这个前言一定要看九、python入门十、python缩进十一、Python注释1.单行注释2.多行注释十二、Python 变量1.变量定义理解2. 变量名命名3. 分

全栈川川 26万+

Unity ios 打包xcode的PostProcessBuild设置

Unity4.x可以用XUPorter来实现:https://github.com/onevcat/XUPorter或者把Unity的xcodeapi放到工程里https://bitbucket.org/Unity-Technologies/xcodeapi复制源码放到Editor/xcode下(AssemblyInfo.cs除外)Unity5.x自带这套api,可以修改xcode项目工程配置以及

wolf96的专栏 8176

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Unity 接收 IOS 内存不足的事件回调。

1. unity 2017 新版本 https://docs.unity3d.com/ScriptReference/Application-lowMemory.html 直接注册一下事件2. 5.5 左右的 需要自己和IOS关联起来。方法一.用 XUPorter 工具 修改代码让 UnityAppController 发个消息过来。方法二、https://answers.unity.com/...

zhenmu的专栏 2730

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

unity调用ios原生代码objective-c和回调

从c#到objective-c学习 https://www.runoob.com/w3cnote/objective-c-tutorial.html https://www.jianshu.com/p/6328c55ac4b2 http://www.cnblogs.com/wuhuacong/p/3589699.html 进阶 https://www.xuanyusong.com...

a554671102的博客 635

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Unity编译至Xcode工程后自动添加文件和库的方法

XUPorter项目Github链接 为什么想要自动添加 由于Unity是全平台的游戏开发环境,在开发中针对特定平台的特定功能时,很难避免根据对象平台的不同而引入不同的依赖。包括源码,需要的库和框架等。在使用各种插件后这种情况愈发严重:比如想加入内购功能,StroreKit.framework必不可少,而且也需要相应的处理代码。按照一般的Unity插件开发流程,在完成.cs的接口声明和Un

Simon 2006
上一篇: unity3D 编辑器扩展,代码设置 Build Settings 选择的场景
下一篇: Android LinearLayout 控件
iDaDi
博客等级 码龄16年 111粉丝 128原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值