1 using System.IO;
2 using UnityEngine;
3 using UnityEditor;
4 using UnityEditor.iOS.Xcode;
5 using UnityEditor.Callbacks;
6 using System.Collections;
7
8 public class XcodeSettingsPostProcesser
9 {
10
11 [PostProcessBuildAttribute (0)]
12 public static void OnPostprocessBuild (BuildTarget buildTarget, string pathToBuiltProject)
13 {
14
15 // Stop processing if targe is NOT iOS
16 if (buildTarget != BuildTarget.iOS)
17 return;
18
19 // Initialize PbxProject
20 var projectPath = pathToBuiltProject + "/Unity-iPhone.xcodeproj/project.pbxproj";
21 PBXProject pbxProject = new PBXProject ();
22 pbxProject.ReadFromFile (projectPath);
23 string targetGuid = pbxProject.TargetGuidByName ("Unity-iPhone");
24
25 // Sample of adding build property
26 pbxProject.AddBuildProperty(targetGuid, "OTHER_LDFLAGS", "-all_load");
27
28 // Sample of setting build property
29 pbxProject.SetBuildProperty(targetGuid, "ENABLE_BITCODE", "NO");
30
31 // Sample of update build property
32 pbxProject.UpdateBuildProperty(targetGuid, "OTHER_LDFLAGS", new string[]{"-ObjC"}, new string[]{"-weak_framework"});
33
34 // Sample of adding REQUIRED framwrok
35 pbxProject.AddFrameworkToProject(targetGuid, "Security.framework", false);
36
37 // Sample of adding OPTIONAL framework
38 pbxProject.AddFrameworkToProject(targetGuid, "SafariServices.framework", true);
39
40 // Sample of setting compile flags
41 var guid = pbxProject.FindFileGuidByProjectPath("Classes/UI/Keyboard.mm");
42 var flags = pbxProject.GetCompileFlagsForFile(targetGuid, guid);
43 flags.Add("-fno-objc-arc");
44 pbxProject.SetCompileFlagsForFile(targetGuid, guid, flags);
45
46 // Apply settings
47 File.WriteAllText (projectPath, pbxProject.WriteToString ());
48
49 // Samlpe of editing Info.plist
50 var plistPath = Path.Combine (pathToBuiltProject, "Info.plist");
51 var plist = new PlistDocument ();
52 plist.ReadFromFile (plistPath);
53
54 // Add string setting
55 plist.root.SetString ("hogehogeId", "dummyid");
56
57 // Add URL Scheme
58 var array = plist.root.CreateArray ("CFBundleURLTypes");
59 var urlDict = array.AddDict ();
60 urlDict.SetString ("CFBundleURLName", "hogehogeName");
61 var urlInnerArray = urlDict.CreateArray ("CFBundleURLSchemes");
62 urlInnerArray.AddString ("hogehogeValue");
63
64 // Apply editing settings to Info.plist
65 plist.WriteToFile (plistPath);
66 }
67 }

Unity打包xcode修改工程配置代码的更多相关文章

  1. iOS 统计Xcode整个工程的代码行数

    小技巧5-iOS 统计Xcode整个工程的代码行数 1.打开终端 2.cd 空格 将工程的文件夹拖到终端上,回车,此时进入到工程的路径 此时已经进入到工程文件夹下 3.运行指令 a. find . - ...

  2. Xcode 修改工程名以及注意事项

    1.先把整个工程文件夹名改为新的工程名. 2.打开工程,单击,输入新的工程名,会出现,点击确定. 3.回到工程界面,在中选择 Manage Schemes,然后再弹出的对话框,把工程名改为新的名字. ...

  3. XCode修改工程名注意

    以下文字转载过来,在使用的过程中遇到几个问题 1.需要在 Build phases 里面,检查下 Link Binary With Libraries 以及Compline Sources 2.Bul ...

  4. Xcode 修改工程名称

    总会遇到几个项目,在做到一半的时候被要求改项目名,网上找了下相关的资料,大多数是xcode5以前的版本,所以解决好了在这里mark一下,给需要的人. 目标为:将项目名XCD4改成xcd5. 先上结果图 ...

  5. Xcode修改工程文件名字

    http://stackoverflow.com/questions/8262613/renaming-xcode-4-project-and-the-actual-folder

  6. 细聊 Cocoapods 与 Xcode 工程配置

    前言 文章比较长,所以在文章的开头我打算简单介绍一下这篇文章将要讲述的内容,读者可以选择通篇细度,也可以直接找到自己感兴趣的部分. 既然是谈 Cocoapods,那首先要搞明白它出现的背景.有经验的开 ...

  7. unity远程修改游戏配置

    关于修改游戏配置这点,如果pc还好 但是在移动端,比较麻烦,比如游戏换ip地址了,可能需要重新打包了 那能不能动态修改,这里有个思路 以udp举例 在客户端里面写一个udp服务,在游戏第一界面打开,比 ...

  8. Xcode里修改工程名、类名、批量修改变量名

    转:http://blog.csdn.net/yuedong56/article/details/13767001 一.修改工程名: 1.点击工程,右键,选择如图选项. 2.右侧如图位置,修改工程名. ...

  9. Unity导出xcode后自动化导入第三方SDK

    最近因为在给项目接入第三方SDK,遇到了一个比较烦人的事情就是,每次出包都要重新根据第三方SDK说明设置xcode,每次最少花20分钟来设置,如果出错的话就不一定是20分钟的事了,所以我决定要做一个自 ...

  10. Git在Xcode中的配置与使用常见问题总结

    书接上回提出的Git在Xcode中的配置与使用常见问题4个问题 问题1,如何在Xcode中创建代码库,并添加和提交代码到代码库? 问题2,如何在Xcode中提交推送给远程服务器代码库? 问题3,如何在 ...

随机推荐

  1. 踩坑实录---Angular防抖——点击事件

    npx ng g directive DebounceClickDirective --module=app 然后自动生成了2 个文件 CREATE src/app/debounce-click-di ...

  2. Unity之UGUI鼠标进入离开&&拖拽实现

    Unity之UGUI鼠标进入离开&&拖拽实现 前言: __小黑最近在写项目的时候就有个疑惑,UGUI中的Button组件,他的点击事件是怎么实现的!?我们自己能不能写一个!?之后在项目 ...

  3. 【随笔记】MFC 解决按下 ESC、Enter 键会自动退出的问题

    网上大部分人的做法是通过拦截按键消息来屏蔽,实际正确的做法是: 1. 在对话框头文件重载 OnOK()(回车会触发) 和 OnCancel()(ESC会触发) 函数. // XXXXXXXDlg.h ...

  4. 【学习笔记】C/C++ 设计模式 - 工厂模式(下)

    介绍说明 这篇笔记承接<[学习笔记]C/C++ 设计模式 - 工厂模式(上)>文章,主要记录 "抽象工厂设计模式" 的学习笔记,上一次是以音频播放器来作为例子,主要是想 ...

  5. (一)Abp入门

    ABP 是用于创建现代Web应用程序的完整体系结构和强大的基础架构,遵循最佳实践和约定,为 您提供 SOLID 开发经验. 目前 ABP 的版本   ASP.NET Boilerplate ASP.N ...

  6. 9月21日内容总结——计算机基础知识、typora软件的安装与软件内的部分markdown语法

    今日内容总结 目录 今日内容总结 一.路径 1.绝对路径 2.相对路径 二.计算机的本质 三.计算机的五大组成部分 1.控制器 2.运算器 PS:CPU=控制器+运算器 3.存储设备 4.输入设备 5 ...

  7. 非代码的贡献也能成为Committer,我与DolphinScheduler社区的故事

    点亮 ️ Star · 照亮开源之路 https://github.com/apache/dolphinscheduler   ​   // 每个人对于"开源社区"的定义都不一样, ...

  8. 【CTO变形记】有序定无序—为什么越努力,越无力

      前言:我们用自己构建的认知结构来理解和映射这个世界,通过外界的反馈来调整现有的认知.但面对的现实越来越复杂,以及面对更多的未知且陌生的情况时,我们常常试图去"修整"接受到的信息 ...

  9. P26_wxss - 样式导入

    样式导入 什么是样式导入 使用 WXSS 提供的 @import 语法,可以导入外联的样式表. @import 的语法格式 @import 后跟需要导入的外联样式表的相对路径,用 ; 表示语句结束.示 ...

  10. Zstack EPICS Archiver在小课题组的使用经验

    https://www.zstack.io/product/portfolio_comparison/ https://epics-controls.org/resources-and-support ...