diff --git a/Editor/GuruBuildSuit/AndroidSettingsTemplateFixer.meta b/Editor/GuruBuildSuit/AndroidSettingsTemplateFixer.meta new file mode 100644 index 0000000..d82aa90 --- /dev/null +++ b/Editor/GuruBuildSuit/AndroidSettingsTemplateFixer.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f0cef2fc19b2407381c7163d3a87ddec +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/GuruBuildSuit/AndroidSettingsTemplateFixer/AndroidSettingsGradleFixer.cs b/Editor/GuruBuildSuit/AndroidSettingsTemplateFixer/AndroidSettingsGradleFixer.cs new file mode 100644 index 0000000..067bb6a --- /dev/null +++ b/Editor/GuruBuildSuit/AndroidSettingsTemplateFixer/AndroidSettingsGradleFixer.cs @@ -0,0 +1,56 @@ +#if UNITY_ANDROID + +namespace Guru.BuildTool +{ + using System.IO; + using UnityEditor.Android; + using UnityEngine; + + public class AndroidSettingsGradleFixer: IPostGenerateGradleAndroidProject + { + private const string SettingsGradleName= "settings.gradle"; + private const string K_LINE_UNITYPROJECT = "def unityProjectPath"; + + public int callbackOrder => 1; + + public void OnPostGenerateGradleAndroidProject(string buildPath) + { + FixSettingsInAndroidProject(buildPath); + } + + /// + /// 设置项目中的 Settings 文件 + /// + /// + private void FixSettingsInAndroidProject(string buildPath) + { + var settingsPath = Path.GetFullPath($"{buildPath}/../{SettingsGradleName}"); + + if (File.Exists(settingsPath)) + { + bool isDirty = false; + var lines = File.ReadAllLines(settingsPath); + string projectPath = Path.GetFullPath($"{Application.dataPath}/../").Replace("\\", "/"); // Unity project path + for (int i = 0; i < lines.Length; i++) + { + if (lines[i].Contains(K_LINE_UNITYPROJECT)) + { + lines[i] = $" def unityProjectPath = $/file:////{projectPath}/$.replace(\"\\\\\", \"/\")"; + isDirty = true; + break; + } + } + + if (isDirty) + { + File.WriteAllLines(settingsPath, lines); + Debug.Log($"[SDK] --- Fix Unity Project Path at:{settingsPath}"); + } + + } + } + + } +} + +#endif \ No newline at end of file diff --git a/Editor/GuruBuildSuit/AndroidSettingsTemplateFixer/AndroidSettingsGradleFixer.cs.meta b/Editor/GuruBuildSuit/AndroidSettingsTemplateFixer/AndroidSettingsGradleFixer.cs.meta new file mode 100644 index 0000000..1cc15cc --- /dev/null +++ b/Editor/GuruBuildSuit/AndroidSettingsTemplateFixer/AndroidSettingsGradleFixer.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 125df18a1af243018be105c54ab9bb5b +timeCreated: 1722257677 \ No newline at end of file