Unity 批量设置iOS本地插件编译标志
来源:互联网 发布:php订餐系统源码 编辑:程序博客网 时间:2024/06/06 01:16
原文地址
[MenuItem("一键打包/设置 -fno-objc-arc")] static void 设置编译标志() { SetCompileFlags("-fno-objc-arc"); Debug.Log("完成设置编译标志"); } [MenuItem("一键打包/清除 -fno-objc-arc")] static void 清除编译标志() { SetCompileFlags(""); Debug.Log("完成清除编译标志"); } static void SetCompileFlags(string flags) { if (Selection.objects.Length != 1) { Debug.LogError("请选中一个文件夹或者文件"); return; } string assetPath = AssetDatabase.GetAssetPath(Selection.activeObject); if(File.Exists(assetPath)) SetCompileFlags(assetPath, flags); else { string[] includeExtensions = { ".m", ".mm", ".h" }; foreach (var file in Directory.GetFiles(assetPath, "*.*", SearchOption.AllDirectories).Where(path => includeExtensions.Contains(Path.GetExtension(path)))) { SetCompileFlags(file.Replace(Application.dataPath, "Assets"), flags); } } } static void SetCompileFlags(string assetPath, string flags) { var pluginImporter = AssetImporter.GetAtPath(assetPath) as PluginImporter; if (pluginImporter == null || !pluginImporter.GetCompatibleWithPlatform(BuildTarget.iOS)) return; pluginImporter.SetPlatformData(BuildTarget.iOS, "CompileFlags", flags); pluginImporter.SaveAndReimport(); }
为什么我会知道PluginImporter的存在?Unity的资源都有对应的AssetImporter。只需要反射出来取出来看看都有哪些就知道了。
var type = typeof(AssetImporter); Debug.Log(type + " 向下的继承链 : "); IEnumerable<Type> types = type.Assembly.GetTypes().Where(item => type.IsAssignableFrom(item) && item != type); foreach (Type t in types) Debug.Log(t);
第二种方法:
原文地址
using UnityEngine;
using UnityEditor;
using UnityEditor.Callbacks;
using UnityEditor.iOS.Xcode;
using System.IO;
public class PbxModifier
{
[PostProcessBuild]
public static void OnPostprocessBuild(BuildTargetbuildTarget, string path)
{
if (buildTarget == BuildTarget.iOS)
{
string projPath = path + "/Unity-iPhone.xcodeproj/project.pbxproj";
PBXProject proj = new PBXProject();
proj.ReadFromString(File.ReadAllText(projPath));
string target = proj.TargetGuidByName("Unity-iPhone");
string file = proj.FindFileGuidByProjectPath("Classes/UnityAppController.mm");
var flags = proj.GetCompileFlagsForFile(target, file);
flags.Add("-fno-objc-arc");
proj.SetCompileFlagsForFile(target, file, flags);
File.WriteAllText(projPath, proj.WriteToString());
}
}
}
- Unity 批量设置iOS本地插件编译标志
- unity ios 打包设置
- IOS设置本地通知
- netbeans,maven本地编译设置
- Unity 插件编译版本不兼容问题
- Jenkins + Unity + IOS 构建IOS自动编译
- ios-ios10设置本地通知
- Unity插件之Unity调用C#编译的DLL
- Unity的IOS界面风格插件Igui
- Unity 用户手册Advanced构建 iOS 插件
- IOS为UNITY写插件/通信
- 在OSX上开发UNITY本地插件的经验分享
- Unity低级本地插件接口--Low-level Native Plugin Interface
- 设置unity 编译文件到android项目
- unity-添加编译宏及设置
- 【Unity小工具】批量修改原始资源设置
- Unity+Metaio +IOS Xcode编译出错
- gcc编译标志-fPIC
- Android Monkey压力测试基本使用
- 基于XML -- Spring IOC配置
- Java与.net各有优势!
- 【2013年蓝桥杯C/C++决赛 B组 试题】
- ES6
- Unity 批量设置iOS本地插件编译标志
- AIDL详解1——简单数据通信
- Spring缓存注解@Cache使用
- ROS-learning-Unknown
- MVC5+EF6简单实例---以原有SQLServer数据库两表联合查询为例
- 不使用加减乘除对两个整数求和
- getAttribute setAttribute removeAttribute
- MySQL实现类似Oracle的序列
- 统计学习方法笔记(一)