update: 添加中台对应的 iOS 构建管线
							parent
							
								
									041cbdc36e
								
							
						
					
					
						commit
						c5851880c1
					
				|  | @ -1,5 +1,5 @@ | |||
| fileFormatVersion: 2 | ||||
| guid: c2bda7db652148e7a73fd2179e22be09 | ||||
| guid: 70312596ce564426aa363479bc5fd1f9 | ||||
| folderAsset: yes | ||||
| DefaultImporter: | ||||
|   externalObjects: {} | ||||
|  | @ -0,0 +1,8 @@ | |||
| fileFormatVersion: 2 | ||||
| guid: b460e9873d8bf445da1764952f4f966c | ||||
| folderAsset: yes | ||||
| DefaultImporter: | ||||
|   externalObjects: {} | ||||
|   userData:  | ||||
|   assetBundleName:  | ||||
|   assetBundleVariant:  | ||||
|  | @ -0,0 +1,74 @@ | |||
| #if UNITY_IOS | ||||
| namespace Guru.Editor | ||||
| { | ||||
| 	using System.Collections.Generic; | ||||
| 	using System.IO; | ||||
| 	using UnityEditor; | ||||
| 	using UnityEditor.Callbacks; | ||||
| 	using UnityEditor.iOS.Xcode; | ||||
| 	using UnityEngine; | ||||
| 	 | ||||
| 	/// <summary> | ||||
| 	/// SKAdNetwork 注入逻辑 | ||||
| 	/// </summary> | ||||
| 	public static class IOSPostBuild_SKAdNetwork | ||||
| 	{ | ||||
| 		private static List<string> NETWORK_IDENTIFIER_ARRAY = new List<string>(); | ||||
| 		public static readonly string SKADNetworkIdentifier = "SKAdNetworkIdentifier"; | ||||
| 		 | ||||
| 		private static readonly char DIR_CHAR = Path.DirectorySeparatorChar; | ||||
| 		public static readonly string OS_PLATFORM_LOCATION = $"Assets/Guru/GuruBuildTool/Editor/IOS_POST_AD/"; | ||||
| 		 | ||||
| 		[PostProcessBuild(10)] | ||||
| 		private static void OnPostProcessBuild(BuildTarget buildTarget, string path) | ||||
| 		{ | ||||
| 			if (buildTarget != BuildTarget.iOS) | ||||
| 			{ | ||||
| 				return; | ||||
| 			} | ||||
| 			 | ||||
| 			var plistPath = Path.Combine(path, "Info.plist"); | ||||
| 			var plist = new PlistDocument(); | ||||
| 			plist.ReadFromFile(plistPath); | ||||
| 			 | ||||
| 			//设置SKAdNetworkItems | ||||
| 			ReadSKADNetworkPlistFile(); | ||||
| 			var plistElementArray = plist.root.CreateArray("SKAdNetworkItems"); | ||||
| 			AddPlatformADNetworkIdentifier(plistElementArray, NETWORK_IDENTIFIER_ARRAY); | ||||
| 			plist.WriteToFile(plistPath); | ||||
| 		} | ||||
| 		 | ||||
| 		public static void ReadSKADNetworkPlistFile() | ||||
| 		{ | ||||
| 			string plistPath = $"{Application.dataPath}/../{OS_PLATFORM_LOCATION}/SKADNetwork.plist"; | ||||
| 			var plist = new PlistDocument(); | ||||
| 			plist.ReadFromFile(plistPath); | ||||
| 			var skADNetworksArr = plist.root["SKAdNetworkItems"].AsArray(); | ||||
| 			if (skADNetworksArr != null) | ||||
| 			{ | ||||
| 				foreach (var plistElement in skADNetworksArr.values) | ||||
| 				{ | ||||
| 					var adNetworkValue = plistElement.AsDict()[SKADNetworkIdentifier].AsString(); | ||||
| 					if(!NETWORK_IDENTIFIER_ARRAY.Contains(adNetworkValue)) | ||||
| 						NETWORK_IDENTIFIER_ARRAY.Add(adNetworkValue); | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 		 | ||||
| 		private static void AddPlatformADNetworkIdentifier(PlistElementArray plistElementArray, List<string> arrays) | ||||
| 		{ | ||||
| 			foreach (var value in arrays) | ||||
| 			{ | ||||
| 				PlistArrayAddDict(plistElementArray, value); | ||||
| 			} | ||||
| 		} | ||||
| 		 | ||||
| 		private static void PlistArrayAddDict(PlistElementArray plistElementArray, string value) | ||||
| 		{ | ||||
| 			plistElementArray.AddDict().SetString(SKADNetworkIdentifier, value); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| #endif | ||||
|  | @ -0,0 +1,3 @@ | |||
| fileFormatVersion: 2 | ||||
| guid: be1ddc59e4ac2416f8174a5611f0c98a | ||||
| timeCreated: 1632375624 | ||||
|  | @ -0,0 +1,925 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||||
| <plist version="1.0"> | ||||
|     <dict> | ||||
|         <key>SKAdNetworkItems</key> | ||||
|         <array> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>cstr6suwn9.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>4fzdc2evr5.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>4pfyvq9l8r.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>2fnua5tdw4.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>ydx93a7ass.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>5a6flpkh64.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>p78axxw29g.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>v72qych5uu.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>ludvb6z3bs.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>cp8zw746q7.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>3sh42y64q3.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>c6k4g5qg8m.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>s39g8k73mm.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>3qy4746246.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>f38h382jlk.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>hs6bdukanm.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>v4nxqhlyqp.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>wzmmz9fp6w.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>yclnxrl5pm.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>t38b2kh725.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>7ug5zh24hu.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>gta9lk7p23.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>vutu7akeur.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>y5ghdn5j9k.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>n6fk4nfna4.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>v9wttpbfk9.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>n38lu8286q.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>47vhws6wlr.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>kbd757ywx3.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>9t245vhmpl.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>eh6m2bh4zr.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>a2p9lx4jpn.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>22mmun2rn5.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>4468km3ulz.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>2u9pt9hc89.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>8s468mfl3y.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>klf5c3l5u5.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>ppxm28t8ap.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>ecpz2srf59.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>uw77j35x4d.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>pwa73g5rt2.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>mlmmfzh3r3.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>578prtvx9j.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>4dzt52r2t5.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>e5fvkxwrpn.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>8c4e2ghe7u.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>zq492l623r.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>3rd42ekr43.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>3qcr597p9d.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>238da6jt44.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>24t9a8vw3c.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>24zw6aqk47.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>252b5q8x7y.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>275upjj5gd.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>294l99pt4k.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>32z4fx6l9h.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>3l6bd9hu43.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>424m5254lk.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>44jx6755aq.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>44n7hlldy6.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>488r3q3dtq.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>4mn522wn87.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>4w7y6s5ca2.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>523jb4fst2.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>52fl2v3hgk.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>54nzkqm89y.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>5l3tpt7t6e.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>5lm9lj6jb7.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>5tjdwbrq8w.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>6964rsfnh4.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>6g9af3uyq4.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>6p4ks3rnbw.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>6v7lgmsu45.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>6xzpu9s2p8.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>737z793b9f.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>74b6s63p6l.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>79pbpufp6p.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>7fmhfwg9en.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>7rz58n8ntl.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>84993kbrcf.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>89z7zv988g.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>8m87ys6875.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>8r8llnkz5a.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>97r2b46745.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>9b89h5y424.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>9nlqeag3gk.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>9rd848q2bz.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>9vvzujtq5s.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>9yg77x724h.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>a7xqa6mtl2.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>a8cz6cu7e5.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>av6w8kgt66.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>b9bk5wbcq9.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>bxvub5ada5.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>c3frkrj4fj.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>cg4yq2srnc.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>cj5566h2ga.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>cs644xg564.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>dbu4b84rxf.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>dkc879ngq3.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>dzg6xy7pwj.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>ejvt5qm6ak.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>f73kdq92p3.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>f7s53z58qe.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>feyaarzu9v.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>g28c52eehv.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>g2y4y55b64.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>ggvn48r87g.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>glqzh8vgby.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>gta8lk7p23.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>hb56zgv37p.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>hdw39hrw9y.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>k674qkevps.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>kbmxgpxpgc.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>krvm3zuq6h.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>lr83yxwka7.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>m297p6643m.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>m5mvw97r93.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>m8dbw4sv7c.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>mls7yz5dvl.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>mp6xlyr22a.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>mtkv5xtk9e.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>n66cz3y3bx.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>n9x2a789qt.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>nzq8sh4pbs.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>prcb7njmu6.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>pwdxu55a5a.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>qqp299437r.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>r45fhb6rf7.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>rvh3l7un93.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>rx5hdcabgc.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>s69wq72ugq.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>su67r6k2v3.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>tl55sbb4fm.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>u679fj5vs4.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>v79kvwwj4g.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>vcra2ehyfk.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>w9q455wk68.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>wg4vff78zm.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>x44k69ngh6.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>x5l83yy675.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>x8jxxk4ff5.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>x8uqf25wch.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>xy9t38ct57.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>y45688jllp.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>zmvfpc5aq8.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>t6d3zquu66.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>9g2aggbj52.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>h65wbv5k3f.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>gvn48r87g.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>bvpn9ufa9b.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>hjevpa356n.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>6yxyv74ff7.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>mqn7fxpca7.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>7953jerfzd.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>qu637u8glc.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>g6gcrrvk4p.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>nu4557a4je.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>cj5566h2ga.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>gvmwg8q7h5.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>pu4na253f3.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>yrqqpx2mcb.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>z4gj7hsk7h.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>z959bm4gru.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>bd757ywx3.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>33r6p7g8nc.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>g69uk9uh2b.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>633vhxswh4.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>tmhh9296z4.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>zh3b7bxvad.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>xmn954pzmp.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>79w64w269u.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>d7g9azk84q.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>866k9ut3g3.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>2q884k2j68.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>gfat3222tu.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>pd25vrrwzn.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>y755zyxw56.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>qlbq5gtkt8.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>67369282zy.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>899vrgt9g8.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>mj797d8u6f.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>88k8774x49.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>t3b3f7n3x8.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>c7g47wypnu.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>z5b3gh5ugf.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>dd3a75yxkv.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>h5jmj969g5.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>dr774724x4.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>t7ky8fmwkd.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>fz2k2k5tej.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>w28pnjg2k4.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>2rq3zucswp.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>vc83br9sjg.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>eqhxz8m8av.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>7k3cvf297u.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>7tnzynbdc7.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>l6nv3x923s.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>h8vml93bkz.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>uzqba5354d.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>8qiegk9qfv.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>xx9sdjej2w.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>au67k4efj4.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>dmv22haz9p.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>7fbxrn65az.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>b55w3d8y8z.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>v7896pgt74.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>5ghnmfs3dh.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>627r9wr2y5.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>sczv5946wb.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>8w3np9l82g.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>nrt9jy4kw9.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>dn942472g5.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>cad8qz2s3j.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>r26jy69rpl.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>jb7bn6koa5.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>fkak3gfpt6.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>2tdux39lx8.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>3cgn6rq224.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>nfqy3847ph.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>dticjx1a9i.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>9wsyqb3ku7.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>x5854y7y24.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>6qx585k4p6.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>l93v5h6a4m.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>axh5283zss.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>5mv394q32t.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>ln5gz23vtd.skadnetwork</string> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>SKAdNetworkIdentifier</key> | ||||
|                 <string>x2jnk7ly8j.skadnetwork</string> | ||||
|             </dict> | ||||
|         </array> | ||||
|     </dict> | ||||
| </plist> | ||||
|  | @ -0,0 +1,7 @@ | |||
| fileFormatVersion: 2 | ||||
| guid: e15412105e424ee0934897a153640a34 | ||||
| DefaultImporter: | ||||
|   externalObjects: {} | ||||
|   userData:  | ||||
|   assetBundleName:  | ||||
|   assetBundleVariant:  | ||||
|  | @ -0,0 +1,3 @@ | |||
| fileFormatVersion: 2 | ||||
| guid: 815571d7e09647a8b91951918d0feb7e | ||||
| timeCreated: 1699597324 | ||||
|  | @ -0,0 +1,110 @@ | |||
| #if UNITY_IOS | ||||
| 
 | ||||
| namespace Guru.Editor | ||||
| { | ||||
|     using System.Collections.Generic; | ||||
|     using UnityEditor; | ||||
|     using UnityEditor.Callbacks; | ||||
|     using UnityEditor.iOS.Xcode; | ||||
|     using UnityEngine; | ||||
|     using System.IO; | ||||
|     using Enumerable = System.Linq.Enumerable; | ||||
| 
 | ||||
|     /// <summary> | ||||
|     /// Fireabse DebugView 开启参数注入 | ||||
|     /// </summary> | ||||
|     public class IOSPostBuild_FireabseDebugView | ||||
|     { | ||||
|         public static readonly string Tag = "[POST]"; | ||||
|         private static readonly string CodeFixMark = "CODE_FIX_BY_GURU"; | ||||
|         private static readonly string CodeCmdArgsFix = $"\t\t//--------- {CodeFixMark} --------------\n\t\tNSMutableArray *newArguments = [NSMutableArray arrayWithArray:[[NSProcessInfo processInfo] arguments]];\n\t\t[newArguments addObject:@\"-FIRAnalyticsDebugEnabled\"];\n\t\t[newArguments addObject:@\"-FIRDebugEnabled\"];\n\t\t[[NSProcessInfo processInfo] setValue:[newArguments copy] forKey:@\"arguments\"];"; | ||||
|         private static readonly string CodeDidFinishedLaunch = | ||||
|             "(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:"; | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// 需要在外部接口调用参数注入 | ||||
|         /// </summary> | ||||
|         public static bool EnableDebugView = false;  // 默认为False, 需要外部注入 | ||||
| 
 | ||||
|         [PostProcessBuild(1)] | ||||
|         public static void PostBuildXcodeArgs(BuildTarget target, string buildPath) | ||||
|         { | ||||
|             Debug.Log($"{Tag} --- Add Firebase debug args: {EnableDebugView}"); | ||||
|              | ||||
|             if (target != BuildTarget.iOS) return; | ||||
|             if (!EnableDebugView) return; | ||||
| 
 | ||||
|             AddLauncherArgsToSchema(buildPath); | ||||
|             InjectLaunchCode(buildPath); | ||||
|         } | ||||
|          | ||||
|         /// <summary> | ||||
|         /// 添加启动参数到Scheme | ||||
|         /// </summary> | ||||
|         /// <param name="buildPath"></param> | ||||
|         private static void AddLauncherArgsToSchema(string buildPath) | ||||
|         { | ||||
|             string schemePath = buildPath + "/Unity-iPhone.xcodeproj/xcshareddata/xcschemes/Unity-iPhone.xcscheme"; | ||||
| 
 | ||||
|             var xcscheme = new XcScheme(); | ||||
|             xcscheme.ReadFromFile(schemePath); | ||||
| 
 | ||||
|             xcscheme.SetMetalValidationOnRun(XcScheme.MetalValidation.Extended); | ||||
|             xcscheme.SetFrameCaptureModeOnRun(XcScheme.FrameCaptureMode.Metal); | ||||
|             xcscheme.AddArgumentPassedOnLaunch("-FIRDebugEnabled"); | ||||
| 
 | ||||
|             xcscheme.WriteToFile(schemePath); | ||||
|         } | ||||
|          | ||||
|         /// <summary> | ||||
|         /// 注入命令行参数 | ||||
|         /// </summary> | ||||
|         /// <param name="buildPath"></param> | ||||
|         private static void InjectLaunchCode(string buildPath) | ||||
|         { | ||||
|             string path = $"{buildPath}/Classes/UnityAppController.mm"; | ||||
| 
 | ||||
|             if (File.Exists(path)) | ||||
|             { | ||||
|                 List<string> lines = Enumerable.ToList(File.ReadAllLines(path)); | ||||
|                 string line = ""; | ||||
|                 int idx = -1; | ||||
|                 for (int i = 0; i < lines.Count; i++) | ||||
|                 { | ||||
|                     line = lines[i]; | ||||
|                     if (line.Contains(CodeDidFinishedLaunch)) | ||||
|                     { | ||||
|                         // 找到注入行 | ||||
|                         idx = i + 1; | ||||
|                         if (lines[idx].Contains("{")) | ||||
|                         { | ||||
|                             idx++; | ||||
|                         } | ||||
|                         if (lines[idx].Contains(@"::printf(""-> applicationDidFinishLaunching()\n"");")) | ||||
|                         { | ||||
|                             idx++; | ||||
|                         } | ||||
| 
 | ||||
|                         if (lines[idx].Contains(CodeFixMark) || lines[idx+1].Contains(CodeFixMark)) | ||||
|                         { | ||||
|                             Debug.Log($"{Tag} <color=orange>---- code has already injected, skip... </color>"); | ||||
|                             return; | ||||
|                         } | ||||
|                          | ||||
|                         break; | ||||
|                     } | ||||
|                 } | ||||
|                 lines.Insert(idx, CodeCmdArgsFix); | ||||
|                 File.WriteAllLines(path, lines.ToArray()); | ||||
|                 Debug.Log($"{Tag} <color=#88ff00>---- code has success injected.</color> path:\n{path}"); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 Debug.Log($"{Tag} <color=red>---- file not found: {path}, inject failed... </color>"); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
|  | @ -0,0 +1,3 @@ | |||
| fileFormatVersion: 2 | ||||
| guid: 7f98aa3ce0d04b2d9f8442a0b288f27e | ||||
| timeCreated: 1699597308 | ||||
|  | @ -0,0 +1,8 @@ | |||
| fileFormatVersion: 2 | ||||
| guid: bf616a5ad654b418281c06863ad401eb | ||||
| folderAsset: yes | ||||
| DefaultImporter: | ||||
|   externalObjects: {} | ||||
|   userData:  | ||||
|   assetBundleName:  | ||||
|   assetBundleVariant:  | ||||
|  | @ -0,0 +1,215 @@ | |||
| #if UNITY_IOS | ||||
| 
 | ||||
| namespace Guru.Editor | ||||
| { | ||||
| 	using System.Collections.Generic; | ||||
| 	using System.IO; | ||||
| 	using UnityEditor; | ||||
| 	using UnityEditor.Callbacks; | ||||
| 	using UnityEditor.iOS.Xcode; | ||||
| 	using UnityEditor.iOS.Xcode.Extensions; | ||||
| 	using UnityEngine; | ||||
| 	 | ||||
| 	public static class IOSPostProcessBuildIPM | ||||
| 	{ | ||||
| 		public static readonly string DEFAULT_PROJECT_TARGET_NAME = "Unity-iPhone"; | ||||
| 		public static readonly string NOTIFICATION_SERVICE_EXTENSION_TARGET_NAME = "U3D2FCM-iOS"; | ||||
| 		public static readonly string NOTIFICATION_SERVICE_EXTENSION_OBJECTIVEC_FILENAME = "NotificationService"; | ||||
| 		 | ||||
| 		private static readonly char DIR_CHAR = Path.DirectorySeparatorChar; | ||||
| 		public static readonly string OS_PLATFORM_LOCATION = $"Assets/Guru/GuruBuildTool/Editor/IOS_POST_IPM/"; | ||||
| 		private static readonly string SKADNetworkIdentifier = "SKAdNetworkIdentifier"; | ||||
| 		private static List<string> NETWORK_IDENTIFIER_ARRAY = new List<string>(); | ||||
| 		 | ||||
| 		private enum EntitlementOptions { | ||||
| 			AppGroups, | ||||
| 		} | ||||
| 		 | ||||
| 		private static readonly string[] FRAMEWORKS_MAIN_TO_ADD = { | ||||
| 		}; | ||||
| 		 | ||||
| 		private static readonly string[] FRAMEWORKS_UNITY_FRAMEWORK_TO_ADD = { | ||||
| 			"GameKit.framework", | ||||
| 		}; | ||||
| 		 | ||||
| 		private static readonly string[] FRAMEWORKS_FCM_TO_ADD = { | ||||
| 			"UserNotifications.framework", | ||||
| 			"UIKit.framework", | ||||
| 		}; | ||||
| 
 | ||||
| 		[PostProcessBuild(1)] | ||||
| 		private static void OnPostProcessBuild(BuildTarget buildTarget, string path) | ||||
| 		{ | ||||
| 			if (buildTarget != BuildTarget.iOS) | ||||
| 			{ | ||||
| 				return; | ||||
| 			} | ||||
| 			 | ||||
| 			var projectPath = PBXProject.GetPBXProjectPath(path); | ||||
| 			var project = new PBXProject(); | ||||
| 			project.ReadFromString(File.ReadAllText(projectPath)); | ||||
| 			 | ||||
| 			var mainTargetName = GetPBXProjectTargetName(project); | ||||
| 			var mainTargetGUID = GetPBXProjectTargetGUID(project); | ||||
| 			var unityFrameworkGUID = GetPBXProjectUnityFrameworkGUID(project); | ||||
| 			 | ||||
| 			foreach(var framework in FRAMEWORKS_MAIN_TO_ADD) { | ||||
| 				project.AddFrameworkToProject(mainTargetGUID, framework, false); | ||||
| 			} | ||||
|          | ||||
| 			foreach(var framework in FRAMEWORKS_UNITY_FRAMEWORK_TO_ADD) { | ||||
| 				project.AddFrameworkToProject(unityFrameworkGUID, framework, false); | ||||
| 			} | ||||
| 			 | ||||
| 			ModifyPlistFile(path); | ||||
| 			 | ||||
| 			// 关闭Bitode | ||||
| 			project.SetBuildProperty(mainTargetGUID, "ENABLE_BITCODE", "NO"); | ||||
| 			project.SetBuildProperty(unityFrameworkGUID, "ENABLE_BITCODE", "NO"); | ||||
| 
 | ||||
| 			// 添加 UnityFramework 版本号 | ||||
| 			project.SetBuildProperty(unityFrameworkGUID, "CURRENT_PROJECT_VERSION", PlayerSettings.bundleVersion); | ||||
| 			project.SetBuildProperty(unityFrameworkGUID, "MARKETING_VERSION", PlayerSettings.iOS.buildNumber); | ||||
| 
 | ||||
| 			AddOrUpdateEntitlements(path, project, mainTargetGUID, mainTargetName, | ||||
| 				new HashSet<EntitlementOptions> | ||||
| 				{ | ||||
| 					EntitlementOptions.AppGroups | ||||
| 				}); | ||||
| 			 | ||||
| 			// AddNotificationServiceExtension(project ,path); // <--- 无需添加Extension了 | ||||
| 			 | ||||
| 			project.WriteToFile(projectPath); | ||||
| 			var contents = File.ReadAllText(projectPath); | ||||
| 			project.ReadFromString(contents); | ||||
| 			 | ||||
| 			// Add push notifications as a capability on the main app target | ||||
| 			AddPushCapability(project, path, mainTargetGUID, mainTargetName); | ||||
| 
 | ||||
| 			project.SetBuildProperty(unityFrameworkGUID, "GCC_ENABLE_OBJC_EXCEPTIONS", "YES"); | ||||
| 			project.SetBuildProperty(mainTargetGUID, "GCC_ENABLE_OBJC_EXCEPTIONS", "YES"); | ||||
| 			File.WriteAllText(projectPath, project.WriteToString()); | ||||
| 		} | ||||
| 		 | ||||
| 		private static void ModifyPlistFile(string pathToBuildProject) | ||||
| 		{ | ||||
| 			var plistPath = Path.Combine(pathToBuildProject, "Info.plist"); | ||||
| 			var plist = new PlistDocument(); | ||||
| 			plist.ReadFromFile(plistPath); | ||||
| 			//设置Google AD GADApplicationIdentifier | ||||
| 			plist.root.SetString("NSCalendarsUsageDescription", "Store calendar events from ads"); | ||||
| 			// plist.root.SetString("GADApplicationIdentifier", "ca-app-pub-2436733915645843~7788635385"); | ||||
| 			// plist.root.SetString("FacebookClientToken", "2414c9079473645856a5ef6b8ac95cf6"); | ||||
| 			// plist.root.SetString("FacebookDisplayName", PlayerSettings.productName); | ||||
| 			//设置Xcode的Att弹窗配置 | ||||
| 			plist.root.SetString("NSUserTrackingUsageDescription","By allowing tracking, we'll be able to better tailor ads served to you on this game."); | ||||
| 			//设置SKAdNetworkItems | ||||
| 			// ReadSKADNetworkPlistFile(); | ||||
| 			// var plistElementArray = plist.root.CreateArray("SKAdNetworkItems"); | ||||
| 			// AddPlatformADNetworkIdentifier(plistElementArray, NETWORK_IDENTIFIER_ARRAY); | ||||
| 			 | ||||
| 			// 设置合规出口证明 | ||||
| 			plist.root.SetBoolean("ITSAppUsesNonExemptEncryption", false); | ||||
| 
 | ||||
| 			var root = plist.root.values; | ||||
| 			PlistElement atsRoot; | ||||
| 			root.TryGetValue("NSAppTransportSecurity", out atsRoot); | ||||
| 
 | ||||
| 			if (atsRoot == null || atsRoot.GetType() != typeof(PlistElementDict)) | ||||
| 			{ | ||||
| 				atsRoot = plist.root.CreateDict("NSAppTransportSecurity"); | ||||
| 				atsRoot.AsDict().SetBoolean("NSAllowsArbitraryLoads", true); | ||||
| 			} | ||||
| 
 | ||||
| 			var atsRootDict = atsRoot.AsDict().values; | ||||
| 			if (atsRootDict.ContainsKey("NSAllowsArbitraryLoadsInWebContent")) | ||||
| 			{ | ||||
| 				atsRootDict.Remove("NSAllowsArbitraryLoadsInWebContent"); | ||||
| 			} | ||||
|          | ||||
| 			plist.WriteToFile(plistPath); | ||||
| 		} | ||||
| 		 | ||||
| 		#region 纯功能函数 | ||||
| 		 | ||||
| 		private static void AddOrUpdateEntitlements(string path, PBXProject project, string targetGUI, | ||||
| 			string targetName, HashSet<EntitlementOptions> options) | ||||
| 		{ | ||||
| 			string entitlementPath = GetEntitlementsPath(path, project, targetGUI, targetName); | ||||
| 			var entitlements = new PlistDocument(); | ||||
| 
 | ||||
| 			// Check if the file already exisits and read it | ||||
| 			if (File.Exists(entitlementPath)) { | ||||
| 				entitlements.ReadFromFile(entitlementPath); | ||||
| 			} | ||||
| 
 | ||||
| 			// TOOD: This can be updated to use project.AddCapability() in the future | ||||
| 			if (options.Contains(EntitlementOptions.AppGroups) && entitlements.root["com.apple.security.application-groups"] == null) { | ||||
| 				var groups = entitlements.root.CreateArray("com.apple.security.application-groups"); | ||||
| 				groups.AddString("group." + PlayerSettings.applicationIdentifier); | ||||
| 			} | ||||
| 
 | ||||
| 			entitlements.WriteToFile(entitlementPath); | ||||
| 
 | ||||
| 			// Copy the entitlement file to the xcode project | ||||
| 			var entitlementFileName = Path.GetFileName(entitlementPath); | ||||
| 			var relativeDestination = targetName + "/" + entitlementFileName; | ||||
| 
 | ||||
| 			// Add the pbx configs to include the entitlements files on the project | ||||
| 			project.AddFile(relativeDestination, entitlementFileName); | ||||
| 			project.AddBuildProperty(targetGUI, "CODE_SIGN_ENTITLEMENTS", relativeDestination); | ||||
| 		} | ||||
| 		 | ||||
| 		private static void AddPushCapability(PBXProject project, string path, string targetGUID, string targetName) | ||||
| 		{ | ||||
| 			var projectPath = PBXProject.GetPBXProjectPath(path); | ||||
| 			//project.AddCapability(targetGUID, PBXCapabilityType.PushNotifications); | ||||
| 			//project.AddCapability(targetGUID, PBXCapabilityType.BackgroundModes); | ||||
| 
 | ||||
| 			var entitlementsPath = GetEntitlementsPath(path, project, targetGUID, targetName); | ||||
| 			// NOTE: ProjectCapabilityManager's 4th constructor param requires Unity 2019.3+ | ||||
| 			var projCapability = new ProjectCapabilityManager(projectPath, entitlementsPath, targetName); | ||||
| 			//projCapability.AddBackgroundModes(BackgroundModesOptions.BackgroundFetch); | ||||
| 			//projCapability.AddBackgroundModes(BackgroundModesOptions.RemoteNotifications); | ||||
| 			projCapability.AddPushNotifications(false); | ||||
| 			projCapability.WriteToFile(); | ||||
| 		} | ||||
| 
 | ||||
| 		 | ||||
| 		private static string GetPBXProjectTargetName(PBXProject project) | ||||
| 		{ | ||||
| 			// var projectUUID = project.GetUnityMainTargetGuid(); | ||||
| 			// return project.GetBuildPhaseName(projectUUID); | ||||
| 			// The above always returns null, using a static value for now. | ||||
| 			return DEFAULT_PROJECT_TARGET_NAME; | ||||
| 		} | ||||
|      | ||||
| 		private static string GetPBXProjectTargetGUID(PBXProject project) | ||||
| 		{ | ||||
| 			return project.GetUnityMainTargetGuid(); | ||||
| 		} | ||||
| 
 | ||||
| 		private static string GetPBXProjectUnityFrameworkGUID(PBXProject project) | ||||
| 		{ | ||||
| 			return project.GetUnityFrameworkTargetGuid(); | ||||
| 		} | ||||
|      | ||||
| 		private static string GetEntitlementsPath(string path, PBXProject project, string targetGUI, string targetName) | ||||
| 		{ | ||||
| 			// Check if there is already an eltitlements file configured in the Xcode project | ||||
| 			var relativeEntitlementPath = project.GetBuildPropertyForConfig(targetGUI, "CODE_SIGN_ENTITLEMENTS"); | ||||
| 			if (relativeEntitlementPath != null) { | ||||
| 				var entitlementPath = path + DIR_CHAR + relativeEntitlementPath; | ||||
| 				if (File.Exists(entitlementPath)) { | ||||
| 					return entitlementPath; | ||||
| 				} | ||||
| 			} | ||||
| 
 | ||||
| 			// No existing file, use a new name | ||||
| 			return path + DIR_CHAR + targetName + DIR_CHAR + targetName + ".entitlements"; | ||||
| 		} | ||||
| 		#endregion | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
|  | @ -0,0 +1,3 @@ | |||
| fileFormatVersion: 2 | ||||
| guid: 963cba5e4a074d208e7d9343acb547dc | ||||
| timeCreated: 1632375624 | ||||
|  | @ -0,0 +1,31 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||||
| <plist version="1.0"> | ||||
|   <dict> | ||||
|     <key>CFBundleDevelopmentRegion</key> | ||||
|     <string>$(DEVELOPMENT_LANGUAGE)</string> | ||||
|     <key>CFBundleDisplayName</key> | ||||
|     <string>U3D2FCM-iOS</string> | ||||
|     <key>CFBundleExecutable</key> | ||||
|     <string>$(EXECUTABLE_NAME)</string> | ||||
|     <key>CFBundleIdentifier</key> | ||||
|     <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> | ||||
|     <key>CFBundleInfoDictionaryVersion</key> | ||||
|     <string>6.0</string> | ||||
|     <key>CFBundleName</key> | ||||
|     <string>$(PRODUCT_NAME)</string> | ||||
|     <key>CFBundlePackageType</key> | ||||
|     <string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string> | ||||
|     <key>CFBundleShortVersionString</key> | ||||
|     <string>1.1.0</string> | ||||
|     <key>CFBundleVersion</key> | ||||
|     <string>8</string> | ||||
|     <key>NSExtension</key> | ||||
|     <dict> | ||||
|       <key>NSExtensionPointIdentifier</key> | ||||
|       <string>com.apple.usernotifications.service</string> | ||||
|       <key>NSExtensionPrincipalClass</key> | ||||
|       <string>NotificationService</string> | ||||
|     </dict> | ||||
|   </dict> | ||||
| </plist> | ||||
|  | @ -0,0 +1,7 @@ | |||
| fileFormatVersion: 2 | ||||
| guid: c76614c2deb1e4591a5f2f0d5cdfabf7 | ||||
| DefaultImporter: | ||||
|   externalObjects: {} | ||||
|   userData:  | ||||
|   assetBundleName:  | ||||
|   assetBundleVariant:  | ||||
|  | @ -0,0 +1,12 @@ | |||
| //
 | ||||
| //  NotificationService.h
 | ||||
| //  U3D2FCM-iOS
 | ||||
| //
 | ||||
| //  Created by Xiaohang Yang on 2021/1/28.
 | ||||
| //
 | ||||
| 
 | ||||
| #import <UserNotifications/UserNotifications.h> | ||||
| 
 | ||||
| @interface NotificationService : UNNotificationServiceExtension | ||||
| 
 | ||||
| @end | ||||
|  | @ -0,0 +1,27 @@ | |||
| fileFormatVersion: 2 | ||||
| guid: 45e43a2e87043417d8f83185b71b4199 | ||||
| PluginImporter: | ||||
|   externalObjects: {} | ||||
|   serializedVersion: 2 | ||||
|   iconMap: {} | ||||
|   executionOrder: {} | ||||
|   defineConstraints: [] | ||||
|   isPreloaded: 0 | ||||
|   isOverridable: 0 | ||||
|   isExplicitlyReferenced: 0 | ||||
|   validateReferences: 1 | ||||
|   platformData: | ||||
|   - first: | ||||
|       Any:  | ||||
|     second: | ||||
|       enabled: 0 | ||||
|       settings: {} | ||||
|   - first: | ||||
|       Editor: Editor | ||||
|     second: | ||||
|       enabled: 1 | ||||
|       settings: | ||||
|         DefaultValueInitialized: true | ||||
|   userData:  | ||||
|   assetBundleName:  | ||||
|   assetBundleVariant:  | ||||
|  | @ -0,0 +1,122 @@ | |||
| // | ||||
| //  NotificationService.m | ||||
| //  U3D2FCM | ||||
| // | ||||
| //  Created by Michael on 2020/11/27. | ||||
| // | ||||
| 
 | ||||
| #import "NotificationService.h" | ||||
| #import <Foundation/Foundation.h> | ||||
| #import <UIKit/UIKit.h> | ||||
| 
 | ||||
|   | ||||
| @interface NotificationService () | ||||
| 
 | ||||
| @property (nonatomic, strong) void (^contentHandler)(UNNotificationContent *contentToDeliver); | ||||
| @property (nonatomic, strong) UNMutableNotificationContent *bestAttemptContent; | ||||
| 
 | ||||
| @end | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| @implementation NotificationService | ||||
| 
 | ||||
| 
 | ||||
| - (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler { | ||||
|     self.contentHandler = contentHandler; | ||||
|     self.bestAttemptContent = [request.content mutableCopy]; | ||||
|      | ||||
|     NSLog(@"EventPush-NotificationService-didReceiveNotificationRequest"); | ||||
| 
 | ||||
|     NSString *packageName = @""; | ||||
|     NSArray *arr = [[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleIdentifier"] componentsSeparatedByString:@"."]; | ||||
|     for(int i=0;i<arr.count-1;i++){ | ||||
|         if(i==arr.count-2){ | ||||
|             packageName = [packageName stringByAppendingString:arr[i]]; | ||||
|         }else{ | ||||
|             packageName = [packageName stringByAppendingString: [NSString stringWithFormat:@"%@.",arr[i]]]; | ||||
|         } | ||||
|     } | ||||
|     NSLog(@"EventPush-NotificationService-packageName: %@", packageName); | ||||
|     NSUserDefaults *defaults = [[NSUserDefaults alloc] initWithSuiteName:  [NSString stringWithFormat: @"group.%@", packageName]]; | ||||
|     NSString *appCountry= [defaults stringForKey:@"appCountry"]; | ||||
|     NSString *appIdentifier = [defaults stringForKey:@"appIdentifier"]; | ||||
|     NSString *appVersion = [defaults stringForKey:@"appVersion"]; | ||||
|     NSString *deviceCountry = [defaults stringForKey:@"deviceCountry"]; | ||||
|     NSString *deviceId = [defaults stringForKey:@"deviceId"]; | ||||
|     NSString *deviceToken = [defaults stringForKey:@"deviceToken"]; | ||||
|     NSString *eventUrl = [defaults stringForKey:@"eventUrl"]; | ||||
|     NSString *IPM_X_APP_ID = [defaults stringForKey:@"IPM_X_APP_ID"]; | ||||
|     NSString *IPM_TOKEN = [defaults stringForKey:@"IPM_TOKEN"]; | ||||
|     NSString *IPM_UID = [defaults stringForKey:@"IPM_UID"]; | ||||
| 
 | ||||
|     //timezone | ||||
|     NSTimeZone *zone = [NSTimeZone localTimeZone]; | ||||
|     NSString *timezone = [zone name]; | ||||
|     //model | ||||
|     UIDevice *currentDevice = [UIDevice currentDevice]; | ||||
|     NSString *model = [currentDevice model]; | ||||
|     //language | ||||
|     NSArray *languageArray = [NSLocale preferredLanguages]; | ||||
|     NSString *language = [languageArray objectAtIndex:0]; | ||||
|     //locale | ||||
|     NSLocale *localeObj = [NSLocale currentLocale]; | ||||
|     NSString *locale = [localeObj localeIdentifier]; | ||||
|      | ||||
|     NSDate *currentDate = [[NSDate alloc] init]; | ||||
|     NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; | ||||
|     [dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]]; | ||||
|     [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"]; | ||||
|     NSString *appEventTime = [dateFormatter stringFromDate:currentDate]; | ||||
| 
 | ||||
|     NSString *deviceData = [NSString stringWithFormat: @"{\"androidId\":null,\"appCountry\":\"%@\",\"appIdentifier\":\"%@\",\"appVersion\":\"%@\",\"brand\":null,\"deviceCoordinates\":{\"latitude\":0,\"longitude\":0},\"deviceCountry\":\"%@\",\"deviceId\":\"%@\",\"deviceToken\":\"%@\",\"deviceType\":\"iOS\",\"gpsCoordinates\":{\"latitude\":0,\"longitude\":0},\"groups\":null,\"language\":\"%@\",\"locale\":\"%@\",\"model\":\"%@\",\"pushDeviceType\":\"iOS\",\"pushNotificationEnable\":true,\"pushNotifications\":null,\"pushType\":\"FCM\",\"timezone\":\"%@\",\"uid\":\"%@\"}", appCountry,appIdentifier,appVersion,deviceCountry,deviceId,deviceToken,language,locale,model,timezone,IPM_UID]; | ||||
|     NSString *postData = [NSString stringWithFormat: @"{\"appEventTime\":\"%@\",\"deviceData\":%@, \"eventType\":\"DeviceReceive\",\"serverParams\":\"{\\\"itemIndex\\\":0,\\\"pushEventId\\\":\\\"test123\\\",\\\"serverPushTime\\\":\\\"2020-11-27T08:48:39Z\\\",\\\"silent\\\":true,\\\"taskName\\\":\\\"pushTest-dof\\\"}\" }",appEventTime,deviceData]; | ||||
| 
 | ||||
| 
 | ||||
|     NSLog(@"EventPush-NotificationService-PlayerPrefs: %@", postData); | ||||
|     NSLog(@"EventPush-NotificationService-eventUrl: %@", eventUrl); | ||||
| 
 | ||||
|     NSURL *url = [NSURL URLWithString:eventUrl]; | ||||
|     NSMutableURLRequest *httpRequest = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0]; | ||||
|     NSData *requestData = [postData dataUsingEncoding:NSUTF8StringEncoding]; | ||||
|     [httpRequest setHTTPMethod:@"POST"]; | ||||
|     [httpRequest setValue:IPM_X_APP_ID forHTTPHeaderField:@"X-APP-ID"]; | ||||
|     [httpRequest setValue:IPM_TOKEN forHTTPHeaderField:@"X-ACCESS-TOKEN"]; | ||||
|     [httpRequest setValue:IPM_UID forHTTPHeaderField:@"X-UID"]; | ||||
|     [httpRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; | ||||
|      | ||||
|     [httpRequest setValue:[NSString stringWithFormat:@"%d", [requestData length]] forHTTPHeaderField:@"Content-Length"]; | ||||
|     [httpRequest setHTTPBody: requestData]; | ||||
| 
 | ||||
|     NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration]; | ||||
|     NSURLSession *session = [NSURLSession sessionWithConfiguration:config]; | ||||
|     __block NSURLSessionDataTask *task = [session dataTaskWithRequest:httpRequest completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { | ||||
|         if (error!=nil) | ||||
|         { | ||||
|             [task suspend]; | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             NSString *requestReply = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]; | ||||
|             NSLog(@"EventPush-NotificationService-response: %@", requestReply); | ||||
|             [task suspend]; | ||||
|         } | ||||
|     }]; | ||||
|     [task resume]; | ||||
|      | ||||
|     // Modify the notification content here... | ||||
|     //self.bestAttemptContent.title = [NSString stringWithFormat:@"%@ [modified]", self.bestAttemptContent.title]; | ||||
|      | ||||
|     self.contentHandler(self.bestAttemptContent); | ||||
| } | ||||
| 
 | ||||
| - (void)serviceExtensionTimeWillExpire { | ||||
|     // Called just before the extension will be terminated by the system. | ||||
|     // Use this as an opportunity to deliver your "best attempt" at modified content, otherwise the original push payload will be used. | ||||
|     self.contentHandler(self.bestAttemptContent); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| @end | ||||
| 
 | ||||
| 
 | ||||
|  | @ -0,0 +1,27 @@ | |||
| fileFormatVersion: 2 | ||||
| guid: 280f79c00824a4499a2ef446aa7d00ca | ||||
| PluginImporter: | ||||
|   externalObjects: {} | ||||
|   serializedVersion: 2 | ||||
|   iconMap: {} | ||||
|   executionOrder: {} | ||||
|   defineConstraints: [] | ||||
|   isPreloaded: 0 | ||||
|   isOverridable: 0 | ||||
|   isExplicitlyReferenced: 0 | ||||
|   validateReferences: 1 | ||||
|   platformData: | ||||
|   - first: | ||||
|       Any:  | ||||
|     second: | ||||
|       enabled: 0 | ||||
|       settings: {} | ||||
|   - first: | ||||
|       Editor: Editor | ||||
|     second: | ||||
|       enabled: 1 | ||||
|       settings: | ||||
|         DefaultValueInitialized: true | ||||
|   userData:  | ||||
|   assetBundleName:  | ||||
|   assetBundleVariant:  | ||||
|  | @ -0,0 +1,8 @@ | |||
| fileFormatVersion: 2 | ||||
| guid: a605997850a6a4ee79efe04dbacff91b | ||||
| folderAsset: yes | ||||
| DefaultImporter: | ||||
|   externalObjects: {} | ||||
|   userData:  | ||||
|   assetBundleName:  | ||||
|   assetBundleVariant:  | ||||
|  | @ -0,0 +1,71 @@ | |||
| #if UNITY_IOS | ||||
| 
 | ||||
| namespace Guru.Editor | ||||
| { | ||||
|     using System.IO; | ||||
|     using UnityEditor; | ||||
|     using UnityEditor.Callbacks; | ||||
|     using Debug = UnityEngine.Debug; | ||||
| 
 | ||||
|     /// <summary> | ||||
|     /// 针对AmazonSDK iOS平台构建后 | ||||
|     /// BitCode报错的问题 | ||||
|     /// </summary> | ||||
|     public class IOSPostProcessBuild_PodFix | ||||
|     { | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// 添加内容 | ||||
|         /// </summary> | ||||
|         private static readonly string MOD_SCRIPT = @"#Compile bugs fixed by HuYufei 2023-11-16
 | ||||
| post_install do |installer| | ||||
|     installer.pods_project.targets.each do |target| | ||||
|         target.build_configurations.each do |config| | ||||
|             config.build_settings['ENABLE_BITCODE'] = 'NO' | ||||
|             config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO' | ||||
| 	        config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '13.0' | ||||
| 	        xcconfig_path = config.base_configuration_reference.real_path | ||||
|             xcconfig = File.read(xcconfig_path) | ||||
|             xcconfig_mod = xcconfig.gsub(/DT_TOOLCHAIN_DIR/, ""TOOLCHAIN_DIR"") | ||||
|             File.open(xcconfig_path, ""w"") { |file| file << xcconfig_mod } | ||||
|         end | ||||
|     end | ||||
| end";
 | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// 构建操作 | ||||
|         /// 构建顺序 45-50 可以保证执行时序在MAX 自身生成podfile之后, 注入需要的逻辑 | ||||
|         /// AmazonSDK使用了45, 工具设为46,确保后发执行 | ||||
|         /// </summary> | ||||
|         /// <param name="target"></param> | ||||
|         /// <param name="projPath"></param> | ||||
|         [PostProcessBuild(46)] | ||||
|         private static void OnPostProcessBuild(BuildTarget target, string projPath) | ||||
|         { | ||||
|             if (target != BuildTarget.iOS) | ||||
|                 return; | ||||
| 
 | ||||
|             string podPath = Path.Combine(projPath, "Podfile"); | ||||
|             if (File.Exists(podPath)) | ||||
|             { | ||||
|                 bool needFix = false; | ||||
|                 string content = File.ReadAllText(podPath); | ||||
|                 if (!content.Contains("#BITCODE")) | ||||
|                 { | ||||
|                     content = content + "\n" + MOD_SCRIPT; | ||||
|                     File.WriteAllText(podPath, content); | ||||
|                     Debug.Log($"<color=#88ff00>=== Fix Pods BitCode bug ===</color>"); | ||||
|                 } | ||||
| 
 | ||||
| 
 | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 Debug.LogError($"=== POD not exists, exit pod hook...==="); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
|  | @ -0,0 +1,11 @@ | |||
| fileFormatVersion: 2 | ||||
| guid: 7418e71e42e99424c9df47a84b05b37c | ||||
| MonoImporter: | ||||
|   externalObjects: {} | ||||
|   serializedVersion: 2 | ||||
|   defaultReferences: [] | ||||
|   executionOrder: 0 | ||||
|   icon: {instanceID: 0} | ||||
|   userData:  | ||||
|   assetBundleName:  | ||||
|   assetBundleVariant:  | ||||
|  | @ -0,0 +1,8 @@ | |||
| fileFormatVersion: 2 | ||||
| guid: a78e5d32ead914b3f9f0a718da8594ea | ||||
| folderAsset: yes | ||||
| DefaultImporter: | ||||
|   externalObjects: {} | ||||
|   userData:  | ||||
|   assetBundleName:  | ||||
|   assetBundleVariant:  | ||||
|  | @ -0,0 +1,53 @@ | |||
| #if UNITY_IOS | ||||
| using UnityEditor; | ||||
| using UnityEditor.iOS.Xcode; | ||||
| using UnityEditor.Callbacks; | ||||
| using UnityEngine; | ||||
| 
 | ||||
| namespace Guru | ||||
| { | ||||
|     /// <summary> | ||||
|     /// SWIFT语言支持 | ||||
|     /// </summary> | ||||
|     public class IOSPostBuildSwift | ||||
|     { | ||||
|         [PostProcessBuild(40)] | ||||
|         public static void OnPostProcessBuild(BuildTarget target, string buildPath) | ||||
|         { | ||||
|             if (target != BuildTarget.iOS) return; | ||||
|              | ||||
|             Debug.Log($"--- Add Swift support to project: {buildPath}"); | ||||
|              | ||||
|             // 更新Swift语言支持 | ||||
|             AddSwiftSupport(buildPath); | ||||
|         } | ||||
|          | ||||
|         /// <summary> | ||||
|         /// 添加Swift Support | ||||
|         /// </summary> | ||||
|         /// <param name="buildPath"></param> | ||||
|         private static void AddSwiftSupport(string buildPath) | ||||
|         { | ||||
|             var projectPath = PBXProject.GetPBXProjectPath(buildPath); | ||||
|             var project = new PBXProject(); | ||||
|             project.ReadFromFile(projectPath); | ||||
|             var mainTargetGuid = project.GetUnityMainTargetGuid(); | ||||
|             var frameworkTargetGuid = project.GetUnityFrameworkTargetGuid(); | ||||
|          | ||||
|             // 关闭BitCode | ||||
|             project.SetBuildProperty(mainTargetGuid, "ENABLE_BITCODE", "NO"); | ||||
|             project.SetBuildProperty(frameworkTargetGuid, "ENABLE_BITCODE", "NO"); | ||||
|              | ||||
|             // 添加搜索路径 | ||||
|             project.AddBuildProperty(frameworkTargetGuid, "LD_RUNPATH_SEARCH_PATHS", "/usr/lib/swift"); | ||||
|              | ||||
|             // 设置主项目的SWIFT构建支持 | ||||
|             project.SetBuildProperty(mainTargetGuid, "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES", "YES"); | ||||
|              | ||||
|              | ||||
|             project.WriteToFile(projectPath); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
|  | @ -0,0 +1,3 @@ | |||
| fileFormatVersion: 2 | ||||
| guid: 661b372db3634542856a44e37664649c | ||||
| timeCreated: 1673406971 | ||||
|  | @ -0,0 +1,3 @@ | |||
| fileFormatVersion: 2 | ||||
| guid: a0af2d1a3be34a4cb6101bd2a40b4c36 | ||||
| timeCreated: 1705373808 | ||||
|  | @ -0,0 +1,28 @@ | |||
| #if UNITY_ANDROID | ||||
| 
 | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using UnityEditor.Android; | ||||
| using UnityEngine; | ||||
| using Debug=UnityEngine.Debug; | ||||
| 
 | ||||
| namespace Guru.Editor | ||||
| { | ||||
|     public class AndroidGradleOutputDeps: IPostGenerateGradleAndroidProject | ||||
|     { | ||||
|         public int callbackOrder => 1; | ||||
|          | ||||
|         /// <summary> | ||||
|         /// 生成Android项目后执行逻辑 | ||||
|         /// </summary> | ||||
|         /// <param name="buildPath"></param> | ||||
|         public void OnPostGenerateGradleAndroidProject(string buildPath) | ||||
|         { | ||||
|             Debug.Log($"<color=#88ff00>---- Android Projct start build {buildPath}</color>"); | ||||
|             DepsOutputHelper.InstallAndRun(buildPath); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| #endif | ||||
|  | @ -0,0 +1,3 @@ | |||
| fileFormatVersion: 2 | ||||
| guid: f8b64715449c4f23a7781dc15f5d38fe | ||||
| timeCreated: 1702349739 | ||||
|  | @ -0,0 +1,142 @@ | |||
| namespace Guru.Editor | ||||
| { | ||||
|     using System; | ||||
|     using UnityEditor; | ||||
|     using System.Diagnostics; | ||||
|     using System.IO; | ||||
|     using UnityEngine; | ||||
|     using Debug=UnityEngine.Debug; | ||||
|     using System.Collections.Generic; | ||||
|      | ||||
|     public class DepsOutputHelper | ||||
|     { | ||||
|         public static readonly string DepsScriptName = "deps.sh"; | ||||
|         public static readonly string EnvScriptName = ".deps_env"; | ||||
|         private static string _scriptFilePath = String.Empty; | ||||
|         public static string ScriptFilePath | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 if(string.IsNullOrEmpty(_scriptFilePath)) | ||||
|                     _scriptFilePath = GetScriptFilePath(); | ||||
|                 return _scriptFilePath; | ||||
|             } | ||||
|         } | ||||
|         /// <summary> | ||||
|         /// 获取脚本路径 | ||||
|         /// </summary> | ||||
|         /// <returns></returns> | ||||
|         private static string GetScriptFilePath() | ||||
|         { | ||||
|             string sc = string.Empty; | ||||
|             var guids = AssetDatabase.FindAssets($"{nameof(DepsOutputHelper)} t:script"); | ||||
|             if (guids.Length > 0) | ||||
|             { | ||||
|                 sc = AssetDatabase.GUIDToAssetPath(guids[0]); | ||||
|                 var fpath = $"{Directory.GetParent(sc).FullName}/files/{DepsScriptName}"; | ||||
|                 if(File.Exists(fpath)) return fpath; | ||||
|             } | ||||
|             return string.Empty; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// 执行脚本 | ||||
|         /// </summary> | ||||
|         /// <param name="projPath"></param> | ||||
|         /// <param name="cmd"></param> | ||||
|         public static void CallDepsScript(string workpath, string cmd = "") | ||||
|         { | ||||
|             if (string.IsNullOrEmpty(cmd)) cmd = DepsScriptName; | ||||
|             RunShellCmd(workpath, cmd); | ||||
|             Debug.Log($"---- running command: {cmd} is over -----"); | ||||
|         } | ||||
| 
 | ||||
|         // 运行命令 | ||||
|         public static void RunShellCmd(string workpath, string cmd) | ||||
|         { | ||||
|             //------ 启动命令 -------- | ||||
|             Process p = new Process(); | ||||
|             p.StartInfo.WorkingDirectory = workpath; | ||||
|             p.StartInfo.FileName = "/bin/bash"; | ||||
|             p.StartInfo.Arguments = cmd; | ||||
|             p.StartInfo.UseShellExecute = false; | ||||
|             p.StartInfo.RedirectStandardOutput = true; | ||||
|             p.Start(); | ||||
|             var log = p.StandardOutput.ReadToEnd(); | ||||
|             p.WaitForExit(); | ||||
|             Debug.Log(log); | ||||
|         } | ||||
| 
 | ||||
|         // 设置ENV文件 | ||||
|         private static void SetupEnvScript(string projPath, string depauditPath = "") | ||||
|         { | ||||
|             string buildName = $"1.0.0-00000000"; | ||||
|             string platform = $"editor"; | ||||
|             string dir = projPath; | ||||
|              | ||||
| #if UNITY_ANDROID | ||||
|             buildName = $"{Application.version}-{PlayerSettings.Android.bundleVersionCode}"; | ||||
|             platform = "android"; | ||||
| #elif UNITY_IOS | ||||
|             buildName = $"{Application.version}-{PlayerSettings.iOS.buildNumber}"; | ||||
|             platform = "ios"; | ||||
| #endif | ||||
|             List<string> lines = new List<string>() | ||||
|             { | ||||
|                 $"export BUILD_NAME={buildName}", | ||||
|                 $"export APP_NAME=\"{PlayerSettings.productName}\"", | ||||
|                 $"export APP_ID={Application.identifier}", | ||||
|                 $"export PLATFORM={platform}", | ||||
|                 $"export DIR={dir}", | ||||
|             }; | ||||
|              | ||||
|             if (!string.IsNullOrEmpty(depauditPath)) | ||||
|             { | ||||
|                 // 本地调试, 需要工具路径 | ||||
|                 lines.Add($"export depaudit={depauditPath}"); | ||||
|             } | ||||
|              | ||||
|             File.WriteAllLines($"{projPath}/{EnvScriptName}", lines.ToArray()); | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// 安装和运行依赖输出器 | ||||
|         /// </summary> | ||||
|         /// <param name="buildPath"></param> | ||||
|         public static void InstallAndRun(string buildPath) | ||||
|         { | ||||
|             if (string.IsNullOrEmpty(ScriptFilePath) || !File.Exists(ScriptFilePath)) | ||||
|             { | ||||
|                 Debug.LogError($"--- deps script file not found, skip output deps..."); | ||||
|                 return; | ||||
|             } | ||||
|              | ||||
|             string projPath = buildPath; | ||||
| #if UNITY_ANDROID | ||||
|             projPath = Directory.GetParent(buildPath).FullName; | ||||
| #elif UNITY_IOS | ||||
|             //TBD | ||||
| #endif | ||||
|             //---- Setup Env ---- | ||||
|             SetupEnvScript(projPath); | ||||
|              | ||||
|             //---- Setup Deps ---- | ||||
|             string to = $"{projPath}/{DepsScriptName}"; | ||||
|             if (File.Exists(to)) File.Delete(to); | ||||
|             FileUtil.CopyFileOrDirectory(ScriptFilePath, to); //拷贝脚本 | ||||
|              | ||||
|             try | ||||
|             { | ||||
|                 Debug.Log($"=== Output build deps data ==="); | ||||
|                 CallDepsScript(projPath); | ||||
|             } | ||||
|             catch (Exception ex) | ||||
|             { | ||||
|                 Debug.LogError(ex); | ||||
|                 Debug.Log($"=== Output pods deps failed: {ex}"); | ||||
|             } | ||||
|              | ||||
|         } | ||||
|          | ||||
|     } | ||||
| } | ||||
|  | @ -0,0 +1,3 @@ | |||
| fileFormatVersion: 2 | ||||
| guid: 831ffddddd78421b8597eac6367fd920 | ||||
| timeCreated: 1702366162 | ||||
|  | @ -0,0 +1,36 @@ | |||
| #if UNITY_IOS | ||||
| 
 | ||||
| using System.IO; | ||||
| using UnityEditor; | ||||
| using UnityEditor.Callbacks; | ||||
| using UnityEngine; | ||||
| 
 | ||||
| namespace Guru.Editor | ||||
| { | ||||
|     public class IOSXcodeOutputDeps | ||||
|     { | ||||
|         // <summary> | ||||
|         /// 构建操作 | ||||
|         /// 构建顺序 45-50 可以保证执行时序在MAX 自身生成podfile之后, 注入需要的逻辑 | ||||
|         /// AmazonSDK使用了45, 工具设为 > 45, 确保后发执行 | ||||
|         /// </summary> | ||||
|         /// <param name="target"></param> | ||||
|         /// <param name="projPath"></param> | ||||
|         [PostProcessBuild(1000)] | ||||
|         private static void OnPostProcessBuild(BuildTarget target, string projPath) | ||||
|         { | ||||
|             string podlock = Path.Combine(projPath, "Podfile.lock"); | ||||
|             if (File.Exists(podlock)) | ||||
|             { | ||||
|                 DepsOutputHelper.InstallAndRun(projPath); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 Debug.LogError($"=== POD install not success, exit deps hook...==="); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| #endif | ||||
|  | @ -0,0 +1,3 @@ | |||
| fileFormatVersion: 2 | ||||
| guid: b2e00c5d9f49480988f78c88fc9d2bac | ||||
| timeCreated: 1702365324 | ||||
|  | @ -0,0 +1,3 @@ | |||
| fileFormatVersion: 2 | ||||
| guid: d7b67912d7d245e0bf67086a8e2f395a | ||||
| timeCreated: 1702349190 | ||||
|  | @ -0,0 +1,40 @@ | |||
| #!/bin/bash | ||||
| 
 | ||||
| GRADLE_VERSION=6.7.1 | ||||
| 
 | ||||
| export PATH="~/.gradle/${GRADLE_VERSION}:$PATH" | ||||
| export PATH="~/.gradle/${GRADLE_VERSION}/bin:$PATH" | ||||
| export GURU_BIN="~/dev/flutter/guru_app/tools/bin" | ||||
| export PATH="$GURU_BIN:$PATH" | ||||
| 
 | ||||
| source .deps_env | ||||
| 
 | ||||
| echo "--- BuildName: ${BUILD_NAME}" | ||||
| echo "--- AppName: ${APP_NAME}" | ||||
| echo "--- APP_ID: ${APP_ID}" | ||||
| echo "--- Platform: ${PLATFORM}" | ||||
| echo "--- DIR: ${DIR}" | ||||
| 
 | ||||
| 
 | ||||
| if [ "${PLATFORM}" = "android" ]; then | ||||
|     gradle w | ||||
| fi | ||||
| 
 | ||||
| echo "----- collect deps start-----" | ||||
| 
 | ||||
| depaudit --platform "${PLATFORM}" --dir "${DIR}" --build_version "${BUILD_NAME}" --app_name "${APP_NAME}" --app_id "${APP_ID}" --engine unity | ||||
| 
 | ||||
| echo "----- collect deps over -----" | ||||
| 
 | ||||
| if [ "${PLATFORM}" = "android" ]; then | ||||
|    | ||||
|   if [ -f ${DIR}/gradlew ]; then | ||||
|       ${DIR}/gradlew --stop | ||||
|       echo "***************** deps collect success! *****************" | ||||
|   else | ||||
|       echo "***************** gradlew not found, deps collect failed! *****************" | ||||
|   fi | ||||
|    | ||||
| else | ||||
|   echo "***************** deps collect success! *****************" | ||||
| fi | ||||
|  | @ -0,0 +1,7 @@ | |||
| fileFormatVersion: 2 | ||||
| guid: d43d22568540f49378be159486b4e1d3 | ||||
| DefaultImporter: | ||||
|   externalObjects: {} | ||||
|   userData:  | ||||
|   assetBundleName:  | ||||
|   assetBundleVariant:  | ||||
		Loading…
	
		Reference in New Issue