public override void ExportWithCurrentSettings() { string str = Path.Combine(base.m_TargetPath, base.m_ProductName); AndroidProjectExport.CopyFile(base.m_UnityJavaLibrary, Path.Combine(Path.Combine(str, "libs"), "unity-classes.jar")); AndroidProjectExport.CopyFile(Path.Combine(base.m_UnityAndroidBuildTools, "UnityProGuardTemplate.txt"), Path.Combine(str, "proguard-unity.txt")); AndroidProjectExport.CopyDir(Path.Combine(base.m_StagingArea, "res"), Path.Combine(str, "res")); AndroidProjectExport.CopyDir(Path.Combine(base.m_StagingArea, "plugins"), Path.Combine(str, "libs")); AndroidProjectExport.CopyDir(Path.Combine(base.m_StagingArea, "libs"), Path.Combine(str, "libs")); AndroidProjectExport.CopyDir(Path.Combine(base.m_StagingArea, "aar"), Path.Combine(str, "libs")); AndroidProjectExport.CopyDir(Path.Combine(base.m_StagingArea, "assets"), Path.Combine(str, "assets")); GenerateProjectProperties(str, base.m_PlatformApiLevel, base.m_AndroidLibraries); AndroidProjectExport.GenerateAndroidManifest(str, base.m_StagingArea, base.m_PackageName, true); AndroidProjectExport.CopyAndPatchJavaSources(Path.Combine(str, "src"), base.m_UnityJavaSources, base.m_PackageName); foreach (string str2 in base.m_AndroidLibraries) { AndroidProjectExport.CopyDir(str2, Path.Combine(base.m_TargetPath, Path.GetFileName(str2))); } if (base.m_UseObb) { AndroidProjectExport.CopyFile(Path.Combine(base.m_StagingArea, "main.obb"), Path.Combine(base.m_TargetPath, $"{base.m_ProductName}.main.obb")); } else { AndroidProjectExport.CopyDir(Path.Combine(base.m_StagingArea, "raw"), Path.Combine(str, "assets")); } }
private void WriteGradleBuildFiles(string projectPath, string gradleTarget, Dictionary <string, string> templateValues) { string str = Path.Combine(BuildPipeline.GetBuildToolsDirectory(BuildTarget.Android), "GradleTemplates"); string path = Path.Combine(base.m_AndroidPluginsPath, "mainTemplate.gradle"); if (!File.Exists(path)) { path = Path.Combine(str, "mainTemplate.gradle"); } string template = File.ReadAllText(path); string str4 = File.ReadAllText(Path.Combine(str, "libTemplate.gradle")); string str5 = ""; string contents = ""; foreach (string str7 in base.m_AndroidLibraries) { int result = 4; string str8 = Path.Combine(str7, "project.properties"); if (File.Exists(str8)) { string input = File.ReadAllText(str8); MatchCollection matchs = new Regex(@"^\s*target\s*=\s*android-(\d+)\s*$", RegexOptions.Multiline).Matches(input); if (matchs.Count > 0) { int.TryParse(matchs[0].Groups[1].Value, out result); } } templateValues["LIBSDKTARGET"] = result.ToString(); string fileName = Path.GetFileName(str7); str5 = str5 + $" compile project(':{fileName}') "; contents = contents + $"include '{fileName}' "; string target = Path.Combine(projectPath, fileName); AndroidProjectExport.CopyDir(str7, target); string str13 = TemplateReplace(str4, templateValues); File.WriteAllText(Path.Combine(target, "build.gradle"), str13); } string str14 = templateValues["DEPS"]; templateValues["DEPS"] = str14 + str5; if (PlayerSettings.Android.keyaliasName.Length != 0) { string str15 = !Path.IsPathRooted(PlayerSettings.Android.keystoreName) ? Path.Combine(Directory.GetCurrentDirectory(), PlayerSettings.Android.keystoreName).Replace('\\', '/') : PlayerSettings.Android.keystoreName; string str16 = $" storeFile file('{str15}') storePassword '{PlayerSettings.Android.keystorePass}' keyAlias '{PlayerSettings.Android.keyaliasName}' keyPassword '{PlayerSettings.Android.keyaliasPass}'" ; templateValues["SIGN"] = "\tsigningConfigs { release {\n" + str16 + "\n\t} }\n"; templateValues["SIGNCONFIG"] = "signingConfig signingConfigs.release"; } string str17 = TemplateReplace(template, templateValues); File.WriteAllText(gradleTarget, str17); if (contents != "") { File.WriteAllText(Path.Combine(projectPath, "settings.gradle"), contents); } }
public override void ExportWithCurrentSettings() { string str; bool flag = false; if (base.m_TargetPath == null) { str = Path.Combine("Temp", "gradleOut"); flag = true; Directory.CreateDirectory(str); string[] strArray = AndroidFileLocator.Find(Path.Combine(str, "*")); foreach (string str2 in strArray) { string fileName = Path.GetFileName(str2); if ((fileName != "build") && (fileName != ".gradle")) { try { FileUtil.DeleteFileOrDirectory(str2); } catch (IOException) { } } } } else { str = Path.Combine(base.m_TargetPath, base.m_ProductName); } int targetSDKVersion = base.m_TargetSDKVersion; Dictionary <string, string> templateValues = new Dictionary <string, string> { { "BUILDTOOLS", base.m_GoogleBuildTools.ToString() }, { "APIVERSION", targetSDKVersion.ToString() }, { "TARGETSDKVERSION", targetSDKVersion.ToString() } }; string[] components = new string[] { str, "src", "main" }; string str4 = Paths.Combine(components); string target = Path.Combine(str, "libs"); Directory.CreateDirectory(str); string sDKRootDir = AndroidSDKTools.GetInstance().SDKRootDir; string path = Path.Combine(str, "local.properties"); if (!File.Exists(path) || flag) { File.WriteAllText(path, $"sdk.dir={sDKRootDir.Replace(@"\", @"\\")} "); } AndroidProjectExport.CopyFile(base.m_UnityJavaLibrary, Path.Combine(Path.Combine(str, "libs"), "unity-classes.jar")); AndroidProjectExport.CopyFile(Path.Combine(base.m_UnityAndroidBuildTools, "UnityProGuardTemplate.txt"), Path.Combine(str, "proguard-unity.txt")); try { string[] textArray2 = new string[] { str4, "assets", "bin", "Data" }; Directory.Delete(Paths.Combine(textArray2), true); } catch (IOException) { } try { Directory.Delete(Path.Combine(str4, "res"), true); } catch (IOException) { } AndroidProjectExport.CopyDir(Path.Combine(base.m_StagingArea, "res"), Path.Combine(str4, "res")); AndroidProjectExport.CopyDir(Path.Combine(base.m_StagingArea, "plugins"), target); AndroidProjectExport.CopyDir(Path.Combine(base.m_StagingArea, "libs"), Path.Combine(str4, "jniLibs")); AndroidProjectExport.CopyDir(Path.Combine(base.m_StagingArea, "assets"), Path.Combine(str4, "assets")); string[] strArray3 = AndroidFileLocator.Find(Path.Combine(Path.Combine(base.m_StagingArea, "aar"), "*.aar")); string str9 = ""; foreach (string str10 in strArray3) { string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(str10); string str12 = Path.GetFileName(str10); str9 = str9 + $" compile(name: '{fileNameWithoutExtension}', ext:'aar') "; AndroidProjectExport.CopyFile(str10, Path.Combine(target, str12)); } templateValues["DEPS"] = str9; if (flag) { AndroidProjectExport.CopyFile(Path.Combine(base.m_StagingArea, "AndroidManifest.xml"), Path.Combine(str4, "AndroidManifest.xml")); } else { AndroidProjectExport.GenerateAndroidManifest(str4, base.m_StagingArea, base.m_PackageName, false); AndroidProjectExport.CopyAndPatchJavaSources(Path.Combine(str4, "java"), base.m_UnityJavaSources, base.m_PackageName); } string str13 = Path.Combine(str, "build.gradle"); if (File.Exists(str13) && !File.ReadAllText(str13).StartsWith("// GENERATED BY UNITY")) { str13 = Path.Combine(str, "build.gradle.NEW"); } this.WriteGradleBuildFiles(str, str13, templateValues); if (base.m_UseObb) { AndroidProjectExport.CopyFile(Path.Combine(base.m_StagingArea, "main.obb"), Path.Combine(str, $"{base.m_ProductName}.main.obb")); } else { AndroidProjectExport.CopyDir(Path.Combine(base.m_StagingArea, "raw"), Path.Combine(str4, "assets")); } }