From 6d3e94cf2f5898ce7aa1f80b31a3bd9cf87826b7 Mon Sep 17 00:00:00 2001 From: huyufei Date: Mon, 29 Jul 2024 21:05:13 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=AE=8C=E5=96=84=20Android=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E8=87=AA=E5=8A=A8=E4=BF=AE=E6=94=B9=20Unity=20Project?= =?UTF-8?q?=20=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: huyufei --- .../AndroidSettingsTemplateFixer.meta | 3 + .../AndroidSettingsGradleFixer.cs | 56 +++++++++++++++++++ .../AndroidSettingsGradleFixer.cs.meta | 3 + Runtime/GuruCore/Runtime/FB/FBService.cs | 2 +- 4 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 Editor/GuruBuildSuit/AndroidSettingsTemplateFixer.meta create mode 100644 Editor/GuruBuildSuit/AndroidSettingsTemplateFixer/AndroidSettingsGradleFixer.cs create mode 100644 Editor/GuruBuildSuit/AndroidSettingsTemplateFixer/AndroidSettingsGradleFixer.cs.meta diff --git a/Editor/GuruBuildSuit/AndroidSettingsTemplateFixer.meta b/Editor/GuruBuildSuit/AndroidSettingsTemplateFixer.meta new file mode 100644 index 0000000..ed9a846 --- /dev/null +++ b/Editor/GuruBuildSuit/AndroidSettingsTemplateFixer.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: f0cef2fc19b2407381c7163d3a87ddec +timeCreated: 1722257668 \ No newline at end of file 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 diff --git a/Runtime/GuruCore/Runtime/FB/FBService.cs b/Runtime/GuruCore/Runtime/FB/FBService.cs index 74b4aba..ba45e63 100644 --- a/Runtime/GuruCore/Runtime/FB/FBService.cs +++ b/Runtime/GuruCore/Runtime/FB/FBService.cs @@ -12,7 +12,7 @@ namespace Guru private bool _isInitOnce; private Action _onInitComplete; - public void StartService(Action onInitComplete) + public void StartService(Action onInitComplete = null) { if(_isInitOnce) return; _isInitOnce = true;