コード例 #1
0
    internal static PostProcessBuild Load()
    {
        PostProcessBuild instance = Resources.Load <PostProcessBuild>("PostProcessBuild");

        if (instance == null)
        {
            instance = Resources.Load <PostProcessBuild>("PostProcessBuildDefault");
        }
        return(instance);
    }
コード例 #2
0
        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);
        }
コード例 #3
0
    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
    }
コード例 #4
0
    // 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
    }