internal static PostProcessBuild Load() { PostProcessBuild instance = Resources.Load <PostProcessBuild>("PostProcessBuild"); if (instance == null) { instance = Resources.Load <PostProcessBuild>("PostProcessBuildDefault"); } return(instance); }
public void Test(string fileIdentifier) { string directory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); directory = Path.Combine(directory, "ProjectFixtures"); var input = new LinkedList <string>(File.ReadAllLines(Path.Combine(directory, $"test_{fileIdentifier}_input.pbxproj"))); var output = new LinkedList <string>(File.ReadAllLines(Path.Combine(directory, $"test_{fileIdentifier}_output.pbxproj"))); PostProcessBuild.Apply(input, "186208CC13E64B42A13CCD74"); Assert.AreEqual(output, input); }
public void OnPreprocessBuild(BuildTarget target, string targetPath) { #if UNITY_ANDROID PostProcessBuild build = PostProcessBuild.Load(); string path = "Assets/Plugins/Android/AndroidManifest.xml"; string tools = "xmlns:tools=\"http://schemas.android.com/tools\""; string tag = "<manifest"; try { bool changed = false; string manifest = File.ReadAllText(path); if (manifest.IndexOf(tools) == -1) { int at = manifest.IndexOf(tag) + tag.Length; manifest = manifest.Insert(at, " " + tools); changed = true; } if (build.android.EnableMultidex) { string multidex = "android:name=\"android.support.multidex.MultiDexApplication\""; if (manifest.IndexOf(multidex) == -1) { int at = manifest.IndexOf(tag) + tag.Length; manifest = manifest.Insert(at, " " + multidex); changed = true; } // check enabled project mainTemplate.gradle or remove .DISABLED suffix // android.defaultConfig.multiDexEnabled = true // dependencies.compile 'com.android.support:multidex:1.0.1' } if (changed) { File.WriteAllText(path, manifest); } } catch { } #endif }
// ReSharper restore UnassignedField.Global, MemberCanBeInternal, FieldCanBeMadeReadOnly.Global, InconsistentNaming /// <a href="http://bit.ly/2RezLpo">Called by unity during the build process after the platform specific code has been created and before the platform builder takes over</a> [PostProcessBuild(callbackOrder: 900)] public static void OnPostProcessBuild( BuildTarget buildTarget, string pathToBuiltProject) { #if UNITY_IOS || UNITY_TVOS PostProcessBuild postProcessBuild = Load(); string plistPath = pathToBuiltProject + "/Info.plist"; PlistDocument plist = new PlistDocument(); plist.ReadFromString(text: File.ReadAllText(path: plistPath)); if (postProcessBuild.iOS.RemoveNotifications) { MissingPushNotificationEntitlementRemover(pathToBuiltProject: pathToBuiltProject); } AddPlistEntries(plist: plist, plistEntries: postProcessBuild.iOS.PlistEntries); File.WriteAllText(path: plistPath, contents: plist.WriteToString()); #endif }