Exemple #1
0
        /// <summary>
        /// For additional Project file *PROJECTNAME*-AndroidRun.androidproj.user that needs to be written out.  This is currently used only on Android.
        /// </summary>
        /// <param name="ProjectFile">ProjectFile object</param>
        public override void WriteAdditionalProjUserFile(ProjectFile ProjectFile)
        {
            if (!IsVSAndroidSupportInstalled() || ProjectFile.SourceFiles.Count == 0)
            {
                return;
            }

            string BaseDirectory = ProjectFile.SourceFiles[0].BaseFolder.FullName;

            string ProjectName = ProjectFile.ProjectFilePath.GetFileNameWithoutExtension();

            string FileName = ProjectName + "-AndroidRun.androidproj.user";

            string FileText = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + ProjectFileGenerator.NewLine +
                              "<Project ToolsVersion=\"14.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">" + ProjectFileGenerator.NewLine +
                              "	<PropertyGroup Condition=\"\'$(Configuration)|$(Platform)\'==\'Debug|ARM\'\">" + ProjectFileGenerator.NewLine +
                              "		<PackagePath>"+ BaseDirectory + "\\Binaries\\Android\\" + ProjectName + "-armv7-es2.apk</PackagePath>" + ProjectFileGenerator.NewLine +
                              "		<LaunchActivity>"+ ProjectFileGenerator.NewLine +
                              "		</LaunchActivity>"+ ProjectFileGenerator.NewLine +
                              "		<AdditionalSymbolSearchPaths>"+ BaseDirectory + "\\Intermediate\\Android\\APK\\obj\\local\\armeabi-v7a;" + BaseDirectory + "\\Intermediate\\Android\\APK\\jni\\armeabi-v7a;" + BaseDirectory + "\\Binaries\\Android;$(AdditionalSymbolSearchPaths)</AdditionalSymbolSearchPaths>" + ProjectFileGenerator.NewLine +
                              "		<DebuggerFlavor>AndroidDebugger</DebuggerFlavor>"+ ProjectFileGenerator.NewLine +
                              "	</PropertyGroup>" + ProjectFileGenerator.NewLine +
                              "</Project>";

            ProjectFileGenerator.WriteFileIfChanged(ProjectFileGenerator.IntermediateProjectFilesPath + "\\" + FileName, FileText);
        }
Exemple #2
0
        public override bool WriteProjectFile(List <UnrealTargetPlatform> InPlatforms, List <UnrealTargetConfiguration> InConfigurations)
        {
            bool bSuccess = false;

            string TargetName = ProjectFilePath.GetFileNameWithoutExtension();

            FileReference GameProjectPath = null;

            foreach (ProjectTarget Target in ProjectTargets)
            {
                if (Target.UnrealProjectFilePath != null)
                {
                    GameProjectPath = Target.UnrealProjectFilePath;
                    break;
                }
            }

            StringBuilder ProjectFileContent = new StringBuilder();

            ProjectFileContent.Append("# @Eddie Workset@" + ProjectFileGenerator.NewLine);
            ProjectFileContent.Append("AddWorkset \"" + this.ToString() + ".wkst\" \"" + ProjectFilePath.FullName + "\"" + ProjectFileGenerator.NewLine);

            ParseSourceFilesIntoGroups();
            EmitProject(ProjectFileContent, Folders);

            bSuccess = ProjectFileGenerator.WriteFileIfChanged(ProjectFilePath.FullName, ProjectFileContent.ToString(), new UTF8Encoding());

            return(bSuccess);
        }
        public override bool WriteProjectFile(List <UnrealTargetPlatform> InPlatforms, List <UnrealTargetConfiguration> InConfigurations)
        {
            bool bSuccess = false;

            var TargetName = ProjectFilePath.GetFileNameWithoutExtension();

            FileReference             GameProjectPath = null;
            List <DirectoryReference> GameFolders     = UEBuildTarget.DiscoverAllGameFolders();

            foreach (var GameFolder in GameFolders)
            {
                FileReference UProjectPath = FileReference.Combine(GameFolder, TargetName + ".uproject");
                if (FileReference.Exists(UProjectPath))
                {
                    GameProjectPath = UProjectPath;
                    break;
                }
            }

            var ProjectFileContent = new StringBuilder();

            ProjectFileContent.Append("# @Eddie Workset@" + ProjectFileGenerator.NewLine);
            ProjectFileContent.Append("AddWorkset \"" + this.ToString() + ".wkst\" \"" + ProjectFilePath.FullName + "\"" + ProjectFileGenerator.NewLine);

            ParseSourceFilesIntoGroups();
            EmitProject(ProjectFileContent, Folders);

            bSuccess = ProjectFileGenerator.WriteFileIfChanged(ProjectFilePath.FullName, ProjectFileContent.ToString(), new UTF8Encoding());

            return(bSuccess);
        }
        /// <summary>
        /// For Additional Project Property file  VSAndroidUnreal.props file that need to be written out.  This is currently used only on Android.
        /// </summary>
        public override void WriteAdditionalPropFile()
        {
            if (!IsVSAndroidSupportInstalled())
            {
                return;
            }

            //This file only needs to be written once and doesn't change.
            if (VSPropsFileWritten)
            {
                return;
            }
            VSPropsFileWritten = true;


            string FileName = "VSAndroidUnreal.props";

            // Change the path to the Android SDK based on if we are using the Visual Studio Sandboxed SDK or not
            string vsAndroidSDKPath;

            if (VSSandboxedSDK)
            {
                vsAndroidSDKPath = "$(ProgramData)\\Microsoft\\AndroidSDK\\25";
            }
            else
            {
                vsAndroidSDKPath = "$(VS_AndroidHome)";
            }

            string FileText = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + ProjectFileGenerator.NewLine +
                              "<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">" + ProjectFileGenerator.NewLine +
                              "	<ImportGroup Label=\"PropertySheets\" />" + ProjectFileGenerator.NewLine +
                              "	<PropertyGroup Label=\"UserMacros\">" + ProjectFileGenerator.NewLine +
                              "		<ANDROID_HOME>"+ vsAndroidSDKPath + "</ANDROID_HOME>" + ProjectFileGenerator.NewLine +
                              "		<JAVA_HOME>$(VS_JavaHome)</JAVA_HOME>"+ ProjectFileGenerator.NewLine +
                              "		<NDKROOT>$(VS_NdkRoot)</NDKROOT>"+ ProjectFileGenerator.NewLine +
                              "	</PropertyGroup>" + ProjectFileGenerator.NewLine +
                              "	<PropertyGroup />" + ProjectFileGenerator.NewLine +
                              "	<ItemDefinitionGroup />" + ProjectFileGenerator.NewLine +
                              "	<ItemGroup>" + ProjectFileGenerator.NewLine +
                              "		<BuildMacro Include=\"ANDROID_HOME\">"+ ProjectFileGenerator.NewLine +
                              "			<Value>$(ANDROID_HOME)</Value>"+ ProjectFileGenerator.NewLine +
                              "			<EnvironmentVariable>true</EnvironmentVariable>"+ ProjectFileGenerator.NewLine +
                              "		</BuildMacro>"+ ProjectFileGenerator.NewLine +
                              "		<BuildMacro Include=\"JAVA_HOME\">"+ ProjectFileGenerator.NewLine +
                              "			<Value>$(JAVA_HOME)</Value>"+ ProjectFileGenerator.NewLine +
                              "			<EnvironmentVariable>true</EnvironmentVariable>"+ ProjectFileGenerator.NewLine +
                              "		</BuildMacro>"+ ProjectFileGenerator.NewLine +
                              "		<BuildMacro Include=\"NDKROOT\">"+ ProjectFileGenerator.NewLine +
                              "			<Value>$(NDKROOT)</Value>"+ ProjectFileGenerator.NewLine +
                              "			<EnvironmentVariable>true</EnvironmentVariable>"+ ProjectFileGenerator.NewLine +
                              "		</BuildMacro>"+ ProjectFileGenerator.NewLine +
                              "	</ItemGroup>" + ProjectFileGenerator.NewLine +
                              "</Project>";

            ProjectFileGenerator.WriteFileIfChanged(ProjectFileGenerator.IntermediateProjectFilesPath + "\\" + FileName, FileText);
        }
Exemple #5
0
        private void EmitProject(StringBuilder Content, Dictionary <string, EddieFolder> Folders)
        {
            foreach (KeyValuePair <string, EddieFolder> CurGroup in Folders)
            {
                if (Path.GetFileName(CurGroup.Key) != "Documentation")
                {
                    Content.Append("AddFileGroup \"" + Path.GetFileName(CurGroup.Key) + "\" \"" + (CurGroup.Value.FullPath != null ? CurGroup.Value.FullPath : CurGroup.Value.Path) + "\"" + ProjectFileGenerator.NewLine);

                    if (CurGroup.Value.bIsModuleFolder)
                    {
                        StringBuilder ProjectFileContent = new StringBuilder();

                        ProjectFileContent.Append("# @Eddie Workset@" + ProjectFileGenerator.NewLine);
                        ProjectFileContent.Append("AddWorkset \"" + Path.GetFileName(CurGroup.Key) + ".wkst\" \"" + CurGroup.Value.WorksetPath + "\"" + ProjectFileGenerator.NewLine);

                        ProjectFileContent.Append("AddFileGroup \"" + Path.GetFileName(CurGroup.Key) + "\" \"" + (CurGroup.Value.FullPath != null ? CurGroup.Value.FullPath : CurGroup.Value.Path) + "\"" + ProjectFileGenerator.NewLine);

                        EmitProject(ProjectFileContent, CurGroup.Value.Folders);

                        foreach (EddieSourceFile File in CurGroup.Value.Files)
                        {
                            ProjectFileContent.Append("AddFile \"" + File.Reference.GetFileName() + "\" \"" + File.Reference.FullName + "\"" + ProjectFileGenerator.NewLine);
                        }


                        ProjectFileContent.Append("EndFileGroup \"" + Path.GetFileName(CurGroup.Key) + "\"" + ProjectFileGenerator.NewLine);

                        ProjectFileGenerator.WriteFileIfChanged(CurGroup.Value.WorksetPath, ProjectFileContent.ToString(), new UTF8Encoding());

                        Content.Append("AddFile \"" + Path.GetFileName(CurGroup.Key) + "\" \"" + CurGroup.Value.WorksetPath + "\"" + ProjectFileGenerator.NewLine);
                    }
                    else
                    {
                        EmitProject(Content, CurGroup.Value.Folders);

                        foreach (EddieSourceFile File in CurGroup.Value.Files)
                        {
                            Content.Append("AddFile \"" + File.Reference.GetFileName() + "\" \"" + File.Reference.FullName + "\"" + ProjectFileGenerator.NewLine);
                        }
                    }

                    Content.Append("EndFileGroup \"" + Path.GetFileName(CurGroup.Key) + "\"" + ProjectFileGenerator.NewLine);
                }
            }
        }
        protected override void WriteDebugSolutionFiles(PlatformProjectGeneratorCollection PlatformProjectGenerators, DirectoryReference IntermediateProjectFilesPath)
        {
            //build and collect UnrealVS configuration
            StringBuilder UnrealVSContent = new StringBuilder();

            foreach (UnrealTargetPlatform SupportedPlatform in SupportedPlatforms)
            {
                PlatformProjectGenerator ProjGenerator = PlatformProjectGenerators.GetPlatformProjectGenerator(SupportedPlatform, true);
                if (ProjGenerator != null)
                {
                    ProjGenerator.GetUnrealVSConfigurationEntries(UnrealVSContent);
                }
            }
            if (UnrealVSContent.Length > 0)
            {
                UnrealVSContent.Insert(0, "<UnrealVS>" + ProjectFileGenerator.NewLine);
                UnrealVSContent.Append("</UnrealVS>" + ProjectFileGenerator.NewLine);

                string ConfigFilePath = FileReference.Combine(IntermediateProjectFilesPath, "UnrealVS.xml").FullName;
                bool   bSuccess       = ProjectFileGenerator.WriteFileIfChanged(ConfigFilePath, UnrealVSContent.ToString());
            }
        }
Exemple #7
0
        /// <summary>
        /// For additional Project file *PROJECTNAME*-AndroidRun.androidproj that needs to be written out.  This is currently used only on Android.
        /// </summary>
        /// <param name="ProjectFile">ProjectFile object</param>
        public override Tuple <ProjectFile, string> WriteAdditionalProjFile(ProjectFile ProjectFile)
        {
            if (!IsVSAndroidSupportInstalled())
            {
                return(null);
            }

            string ProjectName = ProjectFile.ProjectFilePath.GetFileNameWithoutExtension() + "-AndroidRun";

            string FileName = ProjectName + ".androidproj";

            string FileText = "<?xml version=\"1.0\" encoding=\"utf-8\"?> " + ProjectFileGenerator.NewLine +
                              "<Project DefaultTargets=\"Build\" ToolsVersion=\"14.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"> " + ProjectFileGenerator.NewLine +
                              "	<ItemGroup Label=\"ProjectConfigurations\"> " + ProjectFileGenerator.NewLine +
                              "		<ProjectConfiguration Include=\"Debug|ARM\"> "+ ProjectFileGenerator.NewLine +
                              "			<Configuration>Debug</Configuration> "+ ProjectFileGenerator.NewLine +
                              "			<Platform>ARM</Platform> "+ ProjectFileGenerator.NewLine +
                              "		</ProjectConfiguration> "+ ProjectFileGenerator.NewLine +
                              "		<ProjectConfiguration Include=\"Release|ARM\"> "+ ProjectFileGenerator.NewLine +
                              "			<Configuration>Release</Configuration> "+ ProjectFileGenerator.NewLine +
                              "			<Platform>ARM</Platform> "+ ProjectFileGenerator.NewLine +
                              "		</ProjectConfiguration> "+ ProjectFileGenerator.NewLine +
                              "		<ProjectConfiguration Include=\"Debug|ARM64\"> "+ ProjectFileGenerator.NewLine +
                              "			<Configuration>Debug</Configuration> "+ ProjectFileGenerator.NewLine +
                              "			<Platform>ARM64</Platform> "+ ProjectFileGenerator.NewLine +
                              "		</ProjectConfiguration> "+ ProjectFileGenerator.NewLine +
                              "		<ProjectConfiguration Include=\"Release|ARM64\"> "+ ProjectFileGenerator.NewLine +
                              "			<Configuration>Release</Configuration> "+ ProjectFileGenerator.NewLine +
                              "			<Platform>ARM64</Platform> "+ ProjectFileGenerator.NewLine +
                              "		</ProjectConfiguration> "+ ProjectFileGenerator.NewLine +
                              "		<ProjectConfiguration Include=\"Debug|x64\"> "+ ProjectFileGenerator.NewLine +
                              "			<Configuration>Debug</Configuration> "+ ProjectFileGenerator.NewLine +
                              "			<Platform>x64</Platform> "+ ProjectFileGenerator.NewLine +
                              "		</ProjectConfiguration> "+ ProjectFileGenerator.NewLine +
                              "		<ProjectConfiguration Include=\"Release|x64\"> "+ ProjectFileGenerator.NewLine +
                              "			<Configuration>Release</Configuration> "+ ProjectFileGenerator.NewLine +
                              "			<Platform>x64</Platform> "+ ProjectFileGenerator.NewLine +
                              "		</ProjectConfiguration> "+ ProjectFileGenerator.NewLine +
                              "		<ProjectConfiguration Include=\"Debug|x86\"> "+ ProjectFileGenerator.NewLine +
                              "			<Configuration>Debug</Configuration> "+ ProjectFileGenerator.NewLine +
                              "			<Platform>x86</Platform> "+ ProjectFileGenerator.NewLine +
                              "		</ProjectConfiguration> "+ ProjectFileGenerator.NewLine +
                              "		<ProjectConfiguration Include=\"Release|x86\"> "+ ProjectFileGenerator.NewLine +
                              "			<Configuration>Release</Configuration> "+ ProjectFileGenerator.NewLine +
                              "			<Platform>x86</Platform> "+ ProjectFileGenerator.NewLine +
                              "		</ProjectConfiguration> "+ ProjectFileGenerator.NewLine +
                              "	</ItemGroup> " + ProjectFileGenerator.NewLine +
                              "	<PropertyGroup Label=\"Globals\"> " + ProjectFileGenerator.NewLine +
                              "		<RootNamespace>"+ ProjectName + "</RootNamespace> " + ProjectFileGenerator.NewLine +
                              "		<MinimumVisualStudioVersion>14.0</MinimumVisualStudioVersion> "+ ProjectFileGenerator.NewLine +
                              "		<ProjectVersion>1.0</ProjectVersion> "+ ProjectFileGenerator.NewLine +

                              //Set the project guid
                              "		<ProjectGuid>"+ System.Guid.NewGuid().ToString("B").ToUpper() + "</ProjectGuid> " + ProjectFileGenerator.NewLine +

                              "		<ConfigurationType>Application</ConfigurationType> "+ ProjectFileGenerator.NewLine +
                              "		<_PackagingProjectWithoutNativeComponent>true</_PackagingProjectWithoutNativeComponent> "+ ProjectFileGenerator.NewLine +
                              "		<LaunchActivity Condition=\"\'$(LaunchActivity)\' == \'\'\">com."+ ProjectName + "." + ProjectName + "</LaunchActivity> " + ProjectFileGenerator.NewLine +
                              "		<JavaSourceRoots>src</JavaSourceRoots> "+ ProjectFileGenerator.NewLine +
                              "	</PropertyGroup> " + ProjectFileGenerator.NewLine +
                              "	<Import Project=\"$(AndroidTargetsPath)\\Android.Default.props\" /> " + ProjectFileGenerator.NewLine +
                              "	<PropertyGroup Condition=\"\'$(Configuration)|$(Platform)\'==\'Debug|ARM\'\" Label=\"Configuration\"> " + ProjectFileGenerator.NewLine +
                              "		<UseDebugLibraries>true</UseDebugLibraries> "+ ProjectFileGenerator.NewLine +
                              "		<TargetName>$(RootNamespace)</TargetName> "+ ProjectFileGenerator.NewLine +
                              "	</PropertyGroup> " + ProjectFileGenerator.NewLine +
                              "	<PropertyGroup Condition=\"\'$(Configuration)|$(Platform)\'==\'Release|ARM\'\" Label=\"Configuration\"> " + ProjectFileGenerator.NewLine +
                              "		<UseDebugLibraries>false</UseDebugLibraries> "+ ProjectFileGenerator.NewLine +
                              "		<TargetName>$(RootNamespace)</TargetName> "+ ProjectFileGenerator.NewLine +
                              "	</PropertyGroup> " + ProjectFileGenerator.NewLine +
                              "	<PropertyGroup Condition=\"\'$(Configuration)|$(Platform)\'==\'Debug|ARM64\'\" Label=\"Configuration\"> " + ProjectFileGenerator.NewLine +
                              "		<UseDebugLibraries>true</UseDebugLibraries> "+ ProjectFileGenerator.NewLine +
                              "		<TargetName>$(RootNamespace)</TargetName> "+ ProjectFileGenerator.NewLine +
                              "	</PropertyGroup> " + ProjectFileGenerator.NewLine +
                              "	<PropertyGroup Condition=\"\'$(Configuration)|$(Platform)\'==\'Release|ARM64\'\" Label=\"Configuration\"> " + ProjectFileGenerator.NewLine +
                              "		<UseDebugLibraries>false</UseDebugLibraries> "+ ProjectFileGenerator.NewLine +
                              "		<TargetName>$(RootNamespace)</TargetName> "+ ProjectFileGenerator.NewLine +
                              "	</PropertyGroup> " + ProjectFileGenerator.NewLine +
                              "	<PropertyGroup Condition=\"\'$(Configuration)|$(Platform)\'==\'Debug|x64\'\" Label=\"Configuration\"> " + ProjectFileGenerator.NewLine +
                              "		<UseDebugLibraries>true</UseDebugLibraries> "+ ProjectFileGenerator.NewLine +
                              "		<TargetName>$(RootNamespace)</TargetName> "+ ProjectFileGenerator.NewLine +
                              "	</PropertyGroup> " + ProjectFileGenerator.NewLine +
                              "	<PropertyGroup Condition=\"\'$(Configuration)|$(Platform)\'==\'Release|x64\'\" Label=\"Configuration\"> " + ProjectFileGenerator.NewLine +
                              "		<UseDebugLibraries>false</UseDebugLibraries> "+ ProjectFileGenerator.NewLine +
                              "		<TargetName>$(RootNamespace)</TargetName> "+ ProjectFileGenerator.NewLine +
                              "	</PropertyGroup> " + ProjectFileGenerator.NewLine +
                              "	<PropertyGroup Condition=\"\'$(Configuration)|$(Platform)\'==\'Debug|x86\'\" Label=\"Configuration\"> " + ProjectFileGenerator.NewLine +
                              "		<UseDebugLibraries>true</UseDebugLibraries> "+ ProjectFileGenerator.NewLine +
                              "		<TargetName>$(RootNamespace)</TargetName> "+ ProjectFileGenerator.NewLine +
                              "	</PropertyGroup> " + ProjectFileGenerator.NewLine +
                              "	<PropertyGroup Condition=\"\'$(Configuration)|$(Platform)\'==\'Release|x86\'\" Label=\"Configuration\"> " + ProjectFileGenerator.NewLine +
                              "		<UseDebugLibraries>false</UseDebugLibraries> "+ ProjectFileGenerator.NewLine +
                              "		<TargetName>$(RootNamespace)</TargetName> "+ ProjectFileGenerator.NewLine +
                              "	</PropertyGroup> " + ProjectFileGenerator.NewLine +
                              "	<Import Project=\"$(AndroidTargetsPath)\\Android.props\" /> " + ProjectFileGenerator.NewLine +
                              "	<ImportGroup Label=\"ExtensionSettings\" /> " + ProjectFileGenerator.NewLine +
                              "	<PropertyGroup Label=\"UserMacros\" /> " + ProjectFileGenerator.NewLine +
                              "	<PropertyGroup Condition=\"\'$(Configuration)|$(Platform)\'==\'Debug|ARM\'\"> " + ProjectFileGenerator.NewLine +
                              "	</PropertyGroup> " + ProjectFileGenerator.NewLine +
                              "	<PropertyGroup Condition=\"\'$(Configuration)|$(Platform)\'==\'Release|ARM\'\"> " + ProjectFileGenerator.NewLine +
                              "	</PropertyGroup> " + ProjectFileGenerator.NewLine +
                              "	<PropertyGroup Condition=\"\'$(Configuration)|$(Platform)\'==\'Debug|ARM64\'\"> " + ProjectFileGenerator.NewLine +
                              "	</PropertyGroup> " + ProjectFileGenerator.NewLine +
                              "	<PropertyGroup Condition=\"\'$(Configuration)|$(Platform)\'==\'Release|ARM64\'\"> " + ProjectFileGenerator.NewLine +
                              "	</PropertyGroup> " + ProjectFileGenerator.NewLine +
                              "	<PropertyGroup Condition=\"\'$(Configuration)|$(Platform)\'==\'Debug|x64\'\"> " + ProjectFileGenerator.NewLine +
                              "	</PropertyGroup> " + ProjectFileGenerator.NewLine +
                              "	<PropertyGroup Condition=\"\'$(Configuration)|$(Platform)\'==\'Release|x64\'\"> " + ProjectFileGenerator.NewLine +
                              "	</PropertyGroup> " + ProjectFileGenerator.NewLine +
                              "	<PropertyGroup Condition=\"\'$(Configuration)|$(Platform)\'==\'Debug|x86\'\"> " + ProjectFileGenerator.NewLine +
                              "	</PropertyGroup> " + ProjectFileGenerator.NewLine +
                              "	<PropertyGroup Condition=\"\'$(Configuration)|$(Platform)\'==\'Release|x86\'\"> " + ProjectFileGenerator.NewLine +
                              "	</PropertyGroup> " + ProjectFileGenerator.NewLine +
                              "	<ItemDefinitionGroup Condition=\"\'$(Configuration)|$(Platform)\'==\'Debug|ARM\'\"> " + ProjectFileGenerator.NewLine +
                              "		<AntPackage> "+ ProjectFileGenerator.NewLine +
                              "			<AndroidAppLibName /> "+ ProjectFileGenerator.NewLine +
                              "		</AntPackage> "+ ProjectFileGenerator.NewLine +
                              "	</ItemDefinitionGroup> " + ProjectFileGenerator.NewLine +
                              "	<ItemDefinitionGroup Condition=\"\'$(Configuration)|$(Platform)\'==\'Release|ARM\'\"> " + ProjectFileGenerator.NewLine +
                              "		<AntPackage> "+ ProjectFileGenerator.NewLine +
                              "			<AndroidAppLibName /> "+ ProjectFileGenerator.NewLine +
                              "		</AntPackage> "+ ProjectFileGenerator.NewLine +
                              "	</ItemDefinitionGroup> " + ProjectFileGenerator.NewLine +
                              "	<ItemDefinitionGroup Condition=\"\'$(Configuration)|$(Platform)\'==\'Debug|ARM64\'\"> " + ProjectFileGenerator.NewLine +
                              "		<AntPackage> "+ ProjectFileGenerator.NewLine +
                              "			<AndroidAppLibName /> "+ ProjectFileGenerator.NewLine +
                              "		</AntPackage> "+ ProjectFileGenerator.NewLine +
                              "	</ItemDefinitionGroup> " + ProjectFileGenerator.NewLine +
                              "	<ItemDefinitionGroup Condition=\"\'$(Configuration)|$(Platform)\'==\'Release|ARM64\'\"> " + ProjectFileGenerator.NewLine +
                              "		<AntPackage> "+ ProjectFileGenerator.NewLine +
                              "			<AndroidAppLibName /> "+ ProjectFileGenerator.NewLine +
                              "		</AntPackage> "+ ProjectFileGenerator.NewLine +
                              "	</ItemDefinitionGroup> " + ProjectFileGenerator.NewLine +
                              "	<ItemDefinitionGroup Condition=\"\'$(Configuration)|$(Platform)\'==\'Debug|x64\'\"> " + ProjectFileGenerator.NewLine +
                              "		<AntPackage> "+ ProjectFileGenerator.NewLine +
                              "			<AndroidAppLibName /> "+ ProjectFileGenerator.NewLine +
                              "		</AntPackage> "+ ProjectFileGenerator.NewLine +
                              "	</ItemDefinitionGroup> " + ProjectFileGenerator.NewLine +
                              "	<ItemDefinitionGroup Condition=\"\'$(Configuration)|$(Platform)\'==\'Release|x64\'\"> " + ProjectFileGenerator.NewLine +
                              "		<AntPackage> "+ ProjectFileGenerator.NewLine +
                              "			<AndroidAppLibName /> "+ ProjectFileGenerator.NewLine +
                              "		</AntPackage> "+ ProjectFileGenerator.NewLine +
                              "	</ItemDefinitionGroup> " + ProjectFileGenerator.NewLine +
                              "	<ItemDefinitionGroup Condition=\"\'$(Configuration)|$(Platform)\'==\'Debug|x86\'\"> " + ProjectFileGenerator.NewLine +
                              "		<AntPackage> "+ ProjectFileGenerator.NewLine +
                              "			<AndroidAppLibName /> "+ ProjectFileGenerator.NewLine +
                              "		</AntPackage> "+ ProjectFileGenerator.NewLine +
                              "	</ItemDefinitionGroup> " + ProjectFileGenerator.NewLine +
                              "	<ItemDefinitionGroup Condition=\"\'$(Configuration)|$(Platform)\'==\'Release|x86\'\"> " + ProjectFileGenerator.NewLine +
                              "		<AntPackage> "+ ProjectFileGenerator.NewLine +
                              "			<AndroidAppLibName /> "+ ProjectFileGenerator.NewLine +
                              "		</AntPackage> "+ ProjectFileGenerator.NewLine +
                              "	</ItemDefinitionGroup> " + ProjectFileGenerator.NewLine +
                              "	<Import Project=\"$(AndroidTargetsPath)\\Android.targets\" /> " + ProjectFileGenerator.NewLine +
                              "	<ImportGroup Label=\"ExtensionTargets\" /> " + ProjectFileGenerator.NewLine +
                              "</Project>";

            bool Success = ProjectFileGenerator.WriteFileIfChanged(ProjectFileGenerator.IntermediateProjectFilesPath + "\\" + FileName, FileText);

            FileReference           ProjectFilePath = FileReference.Combine(ProjectFileGenerator.IntermediateProjectFilesPath, FileName);
            AndroidDebugProjectFile Project         = new AndroidDebugProjectFile(ProjectFilePath);

            Project.ShouldBuildForAllSolutionTargets       = false;
            Project.ShouldBuildByDefaultForSolutionTargets = false;

            return(Success ? new Tuple <ProjectFile, string>(Project, "UE4 Android Debug Projects") : null);
        }