国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > iOS > 正文

unity ios快捷打包

2019-11-06 10:05:05
字體:
供稿:網(wǎng)友

ios打包是比較麻煩的,配通一次流程后需要做個(gè)筆記把各種插件各種配置在每次打包的時(shí)候重新配置,作為一個(gè)程序員當(dāng)然不能接受這么笨的事情,寫個(gè)腳本讓代碼去實(shí)現(xiàn)這些。

首先,介紹一個(gè)標(biāo)記

[PostPRocessBuild]

在函數(shù)前寫上這個(gè)標(biāo)記,unity在打完包后便會(huì)調(diào)用這個(gè)函數(shù)。

所以我們也將用這個(gè)標(biāo)記讓unity在包打成xcode項(xiàng)目以后,去改動(dòng)xcode里面的配置。

而unity也有一個(gè)默認(rèn)的函數(shù)給我們使用

static void OnPostprocessBuild(BuildTarget target,string pathToBuildProject)target就是打包的目標(biāo),是android還是ios還是其他,pathToBuildProject是打完包后的路徑。

所以,主函數(shù)就是這樣

[PostProcessBuild]static void OnPostprocessBuild(BuildTarget target,string pathToBuildProject){}

接下來是添加framework和一些系統(tǒng)插件和設(shè)置buildSetting

	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, "Security.framework", true);		_pbxProj.AddFrameworkToProject (_targetGuid, "javaScriptCore.framework", true);		//*******************************添加tbd*******************************//		_pbxProj.AddFileToBuild(_targetGuid, _pbxProj.AddFile("usr/lib/libz.1.dylib", "Frameworks/libz.1.dylib", PBXSourceTree.Sdk));		//*******************************設(shè)置buildsetting*******************************//		//_pbxProj.SetBuildProperty (_targetGuid, "CODE_SIGN_IDENTITY", code_sign_identity);  		File.WriteAllText(_projPath, _pbxProj.WriteToString());	}把主函數(shù)的路徑傳進(jìn)去就可以了。

中間注釋的那行就是設(shè)置buildSetting,項(xiàng)目暫時(shí)還沒用就屏蔽了,具體要怎么傳參數(shù)可能還需要百度一下

之后就是修改plist

	static void SetPlist(string pathToBuildProject)	{		string _plistPath = pathToBuildProject + "/Info.plist";		PlistDocument _plist = new PlistDocument ();		_plist.ReadFromString (File.ReadAllText (_plistPath));		PlistElementDict _rootDic = _plist.root;		//*******************************設(shè)置plist屬性*******************************//		_rootDic.SetString ("Privacy - Microphone Usage Description", "microphoneDesciption");		_rootDic.SetString ("Bundle version", "6");		_rootDic.SetString ("Bundle versions string, short", "0.0.2");		_rootDic.SetString ("Privacy - Media Library Usage Description", "App需要您的同意,才能訪問媒體資料庫");		_rootDic.SetString ("Privacy - Bluetooth Peripheral Usage Description", "App需要您的同意,才能訪問藍(lán)牙");		_rootDic.SetString ("Privacy - Calendars Usage Description", "App需要您的同意,才能訪問日歷");		_rootDic.SetString ("Privacy - Camera Usage Description", "App需要您的同意,才能訪問相機(jī)");		_rootDic.SetString ("Privacy - Contacts Usage Description", "是否允許此App訪問您的通訊錄?");		_rootDic.SetString ("Privacy - Health Share Usage Description", "App需要您的同意,才能訪問健康分享");		_rootDic.SetString ("Privacy - Health Update Usage Description", "App需要您的同意,才能訪問健康更新 ");		_rootDic.SetString ("Privacy - Location Always Usage Description", "App需要您的同意,才能始終訪問位置");		_rootDic.SetString ("Privacy - Location Usage Description", "App需要您的同意,才能訪問位置");		_rootDic.SetString ("Privacy - Location When In Use Usage Description", "是否允許此App訪問您的地理位置?");		_rootDic.SetString ("Privacy - Motion Usage Description", "App需要您的同意,才能訪問運(yùn)動(dòng)與健身");		_rootDic.SetString ("Privacy - Photo Library Usage Description", "App需要您的同意,才能訪問相冊(cè)");		_rootDic.SetString ("Privacy - Reminders Usage Description", "App需要您的同意,才能訪問提醒事項(xiàng)");		File.WriteAllText(_plistPath, _plist.WriteToString());	}基本上這樣就算搞定了。

不過ios打包一般為了快一點(diǎn)的話,一般會(huì)把a(bǔ)sset文件夾拿出來再打完包后放回去(或者像我們項(xiàng)目,資源是策劃準(zhǔn)備好上傳到svn,所以資源文件夾不在項(xiàng)目里面的,這種情況下就代碼復(fù)制過去)

[MenuItem("測試/測試")]	static void CopyAssetToXCode(string pathToBuildProject)	{		string assetFolderName = pathToBuildProject + "/Data/Raw/";		DirectoryInfo dir = new DirectoryInfo (IOS_RESOURCE_FOLDER_PATH);		DirectoryInfo[] allDirs = dir.GetDirectories ();		DirectoryInfo latestDir = null;		foreach (DirectoryInfo d in allDirs) 		{			if (latestDir == null)				latestDir = d;			else			{				if (latestDir.LastWriteTime.Ticks < d.LastWriteTime.Ticks)					latestDir = d;			}		}		if (latestDir == null) 		{			Debug.LogError ("錯(cuò)誤!!無法復(fù)制Asset資源!!!!!");			return;		}		Directory.CreateDirectory (assetFolderName + "assets");		CopyDirectory (latestDir + "/resources_1first/assets", assetFolderName + "assets");		File.Copy(latestDir + "/版本導(dǎo)出后文件存放/version.ini",assetFolderName + "version.ini");		Debug.LogError ("復(fù)制Asset到xcode...完成!");		Debug.LogError ("Asset原資源路徑:" + latestDir);	}	static void CopyDirectory(string sourceDirectory, string targetDirectory) 	{		if (!Directory.Exists(sourceDirectory) || !Directory.Exists(targetDirectory)) 		{			return;		}		DirectoryInfo sourceInfo = new DirectoryInfo(sourceDirectory);		FileInfo[] fileInfo = sourceInfo.GetFiles();		foreach (FileInfo fiTemp in fileInfo) 		{			//if(!fiTemp.Name.StartsWith("."))				File.Copy(sourceDirectory + "/" + fiTemp.Name, targetDirectory + "/" + fiTemp.Name, true);		}		DirectoryInfo[] diInfo = sourceInfo.GetDirectories();		foreach (DirectoryInfo diTemp in diInfo) 		{			string sourcePath = diTemp.FullName;			string targetPath = diTemp.FullName.Replace(sourceDirectory,targetDirectory);			Directory.CreateDirectory(targetPath);			CopyDirectory(sourcePath,targetPath);		}	}

所以最后主函數(shù)就是這樣

	[PostProcessBuild]	static void OnPostprocessBuild(BuildTarget target, string pathToBuildProject)	{		Debug.LogError ("修改xcode插件及其他配置...開始!");		ModifyProj (pathToBuildProject);		Debug.LogError ("修改xcode插件及其他配置...完成!");		Debug.LogError ("修改xcode,plist...開始!");		SetPlist (pathToBuildProject);		Debug.LogError ("修改xcode,plist...完成!");		Debug.LogError ("復(fù)制Asset到xcode...開始!");		CopyAssetToXCode (pathToBuildProject);	}


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 井研县| 道孚县| 延吉市| 刚察县| 理塘县| 宁乡县| 大余县| 蕲春县| 牡丹江市| 县级市| 岗巴县| 定日县| 新源县| 榆社县| 柘荣县| 五莲县| 绥阳县| 芜湖县| 汝南县| 兰考县| 临夏县| 蓝田县| 岢岚县| 台山市| 昌图县| 唐河县| 平山县| 泸西县| 错那县| 嘉黎县| 长阳| 淳化县| 龙泉市| 通辽市| 波密县| 喜德县| 无极县| 内丘县| 阿尔山市| 临夏市| 水城县|