您的位置:首页 > 移动开发 > Unity3D

Unity打包IOS时。自动化配置文件。

2017-02-13 17:55 344 查看
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using UnityEditor.iOS.Xcode;
using UnityEditor.Callbacks;
using System.IO;

public class SSIOSBuildSetting : MonoBehaviour {

[PostProcessBuild]
static void OnPostprocessBuild(BuildTarget target, string pathToBuildProject)
{
string unityEditorAssetPath = Application.dataPath;
if (target != BuildTarget.iOS)
{
Debug.LogWarning("Target is not iPhone. XcodePostProcess will not run");
return;
}
ModifyProj(pathToBuildProject);
SetPlist(pathToBuildProject);
}

public static void ModifyProj(string pathToBuildProject)
{
string _projPath = PBXProject.GetPBXProjectPath(pathToBuildProject);
PBXProject _pbxProj = new PBXProject();

_pbxProj.ReadFromString(File.ReadAllText(_projPath));
string _targetGuid = _pbxProj.TargetGuidByName("Unity-iPhone");

//*******************************添加framework*******************************//
//_pbxProj.AddFrameworkToProject(_targetGuid, "StoreKit.framework", true);

//*******************************添加tbd*******************************//
// _pbxProj.AddFileToBuild(_targetGuid, _pbxProj.AddFile("usr/lib/libz.tbd", "Frameworks/libz.tbd", PBXSourceTree.Sdk));

//*******************************设置buildsetting*******************************//
//_pbxProj.SetBuildProperty(_targetGuid, "CODE_SIGN_IDENTITY", code_sign_identity);
_pbxProj.SetBuildProperty(_targetGuid, "ENABLE_BITCODE","YES");
_pbxProj.SetBuildProperty(_targetGuid, "DEVELOPMENT_TEAM", "JK62X52E5W");
_pbxProj.SetBuildProperty(_targetGuid, "ARCHS", "$(ARCHS_STANDARD)");

File.WriteAllText(_projPath, _pbxProj.WriteToString());
}

static void SetPlist(string pathToBuildProject)
{
string _plistPath = pathToBuildProject + "/Info.plist";
PlistDocument _plist = new PlistDocument();

_plist.ReadFromString(File.ReadAllText(_plistPath));
PlistElementDict _rootDic = _plist.root;

//_rootDic.SetString("View controller-based status bar appearance", "NO");
//_rootDic.SetString("CFBundleDisplayName", "StellarSails");

//_rootDic.SetString("CFBundleLocalizations", "en");

//string PlistAdd = @"
//    <key>CFBundleLocalizations</key>
//    <array>
//           <string>en</string>
//           <string>zh_CN</string>
//    </array>";
//_rootDic.CreateArray("Localizations");
_rootDic.SetString("CFBundleVersion", "1.0");
_rootDic.SetBoolean("Application has localized display name", true);

File.WriteAllText(_plistPath, _plist.WriteToString());
}
}


这个脚本放到Unity里的Editor文件夹里面就可以了。刚学到了这个东西。因为每次打包IOS需要配置好多东西。所以写了点代码去实现自动化配置。以上是我写的简单的代码。</p><p>后来又看到了雨松大大的帖子雨松大大的关于自动化配置IOS设置的帖子。以及找到的Epps大哥的帖子。Epps关于自动化配置IOS设置。有想研究的同学建议看看
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: