PackPlatformAndroidGUI.cs 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using UnityEngine;
  5. using UnityEditor;
  6. using UnityEditorInternal;
  7. namespace Pack
  8. {
  9. public partial class PackPlatformAndroid
  10. {
  11. private List<string> m_NeedFulplugins = new List<string>()
  12. {
  13. "common",
  14. };
  15. private DirectoryReorderableList m_PluginReorderableList;
  16. private List<string> m_NeedFulSDKBridges = new List<string>()
  17. {
  18. };
  19. private DirectoryReorderableList m_SdkBridgeReorderableList;
  20. protected override bool HasPlatformSpecialGUI()
  21. {
  22. return true;
  23. }
  24. protected override void DrawPlatformSpecialGUI(bool editable, PackPlatformBase sourcePackPlatform)
  25. {
  26. base.DrawPlatformSpecialGUI(editable, sourcePackPlatform);
  27. PackPlatformAndroid sourcePackPlatformAndroid = sourcePackPlatform as PackPlatformAndroid;
  28. EditorGUILayout.Space();
  29. if (ArrayUtility.Contains(defineSymbols, "BUGLY"))
  30. {
  31. if (!m_NeedFulplugins.Contains("Bugly"))
  32. {
  33. m_NeedFulplugins.Add("Bugly");
  34. }
  35. if (!m_NeedFulSDKBridges.Contains("Bugly"))
  36. {
  37. m_NeedFulSDKBridges.Add("Bugly");
  38. }
  39. }
  40. for (int i = 0, iMax = m_NeedFulplugins.Count; i < iMax; i++)
  41. {
  42. if (i >= plugins.Count)
  43. {
  44. plugins.Add(m_NeedFulplugins[i]);
  45. }
  46. else if (plugins[i] != m_NeedFulplugins[i])
  47. {
  48. plugins.Remove(m_NeedFulplugins[i]);
  49. plugins.Insert(0, m_NeedFulplugins[i]);
  50. }
  51. }
  52. for (int i = plugins.Count - 1; i >= 0; i--)
  53. {
  54. if (!Directory.Exists(Path.GetFullPath(Application.dataPath + PackConstant.PluginAndroidSrcPath + plugins[i])))
  55. {
  56. plugins.RemoveAt(i);
  57. }
  58. }
  59. if (m_PluginReorderableList == null)
  60. {
  61. m_PluginReorderableList = new DirectoryReorderableList(plugins, sourcePackPlatformAndroid.plugins, m_NeedFulplugins, Application.dataPath + PackConstant.PluginAndroidSrcPath);
  62. }
  63. else
  64. {
  65. m_PluginReorderableList.SetParams(plugins, sourcePackPlatformAndroid.plugins, m_NeedFulplugins, Application.dataPath + PackConstant.PluginAndroidSrcPath);
  66. }
  67. float height = m_PluginReorderableList.GetHeight();
  68. Rect totalPosition = EditorGUILayout.GetControlRect(true, height, PackGUI.styles.label);
  69. Rect labelPosition = new Rect(totalPosition.x + PackGUI.indent, totalPosition.y, EditorGUIUtility.labelWidth - PackGUI.indent, PackGUI.kSingleLineHeight);
  70. int id = GUIUtility.GetControlID(PackGUI.s_DelayedTextFieldHash, FocusType.Keyboard, labelPosition);
  71. EditorGUI.HandlePrefixLabel(totalPosition, labelPosition, EditorGUIUtility.TrTextContent("Android目录替换", PackConstant.PluginAndroidDestPath), id, PackGUI.styles.label);
  72. Rect fieldPosition = new Rect(totalPosition.x + PackGUI.indent + EditorGUIUtility.labelWidth, totalPosition.y, totalPosition.width - PackGUI.indent - EditorGUIUtility.labelWidth - 100, height);
  73. Rect resetPosition = new Rect(totalPosition.x + totalPosition.width - 90, totalPosition.y, 80, PackGUI.kSingleLineHeight);
  74. m_PluginReorderableList.DoList(fieldPosition);
  75. if (!ArrayUtility.ArrayEquals(sourcePackPlatformAndroid.plugins.ToArray(), plugins.ToArray()))
  76. {
  77. if (GUI.Button(resetPosition, EditorGUIUtility.TrTextContent("重置默认", string.Join(";", sourcePackPlatformAndroid.plugins)), PackGUI.styles.miniButton))
  78. {
  79. plugins.Clear();
  80. plugins.AddRange(sourcePackPlatformAndroid.plugins);
  81. }
  82. }
  83. for (int i = 0, iMax = m_NeedFulSDKBridges.Count; i < iMax; i++)
  84. {
  85. if (i >= sdkBridges.Count)
  86. {
  87. sdkBridges.Add(m_NeedFulSDKBridges[i]);
  88. }
  89. else if (sdkBridges[i] != m_NeedFulSDKBridges[i])
  90. {
  91. sdkBridges.Remove(m_NeedFulSDKBridges[i]);
  92. sdkBridges.Insert(0, m_NeedFulSDKBridges[i]);
  93. }
  94. }
  95. for (int i = sdkBridges.Count - 1; i >= 0; i--)
  96. {
  97. if (!Directory.Exists(Path.GetFullPath(Application.dataPath + PackConstant.SDKBridgeSrcPath + sdkBridges[i])))
  98. {
  99. sdkBridges.RemoveAt(i);
  100. }
  101. }
  102. if (m_SdkBridgeReorderableList == null)
  103. {
  104. m_SdkBridgeReorderableList = new DirectoryReorderableList(sdkBridges, sourcePackPlatformAndroid.sdkBridges, m_NeedFulSDKBridges, Application.dataPath + PackConstant.SDKBridgeSrcPath);
  105. }
  106. else
  107. {
  108. m_SdkBridgeReorderableList.SetParams(sdkBridges, sourcePackPlatformAndroid.sdkBridges, m_NeedFulSDKBridges, Application.dataPath + PackConstant.SDKBridgeSrcPath);
  109. }
  110. height = m_SdkBridgeReorderableList.GetHeight();
  111. totalPosition = EditorGUILayout.GetControlRect(true, height, PackGUI.styles.label);
  112. labelPosition = new Rect(totalPosition.x + PackGUI.indent, totalPosition.y, EditorGUIUtility.labelWidth - PackGUI.indent, PackGUI.kSingleLineHeight);
  113. id = GUIUtility.GetControlID(PackGUI.s_DelayedTextFieldHash, FocusType.Keyboard, labelPosition);
  114. EditorGUI.HandlePrefixLabel(totalPosition, labelPosition, EditorGUIUtility.TrTextContent("SDKBridge目录替换", PackConstant.SDKBridgeDestPath), id, PackGUI.styles.label);
  115. fieldPosition = new Rect(totalPosition.x + PackGUI.indent + EditorGUIUtility.labelWidth, totalPosition.y, totalPosition.width - PackGUI.indent - EditorGUIUtility.labelWidth - 100, height);
  116. resetPosition = new Rect(totalPosition.x + totalPosition.width - 90, totalPosition.y, 80, PackGUI.kSingleLineHeight);
  117. m_SdkBridgeReorderableList.DoList(fieldPosition);
  118. if (!ArrayUtility.ArrayEquals(sourcePackPlatformAndroid.sdkBridges.ToArray(), sdkBridges.ToArray()))
  119. {
  120. if (GUI.Button(resetPosition, EditorGUIUtility.TrTextContent("重置默认", string.Join(";", sourcePackPlatformAndroid.sdkBridges)), PackGUI.styles.miniButton))
  121. {
  122. sdkBridges.Clear();
  123. sdkBridges.AddRange(sourcePackPlatformAndroid.sdkBridges);
  124. }
  125. }
  126. if (plugins.Contains("Lebian"))
  127. {
  128. EditorGUILayout.Space();
  129. PackGUI.DrawDelayedTextField("乐变MainChId", sourcePackPlatformAndroid.leBian_MainChId, ref leBian_MainChId, true);
  130. PackGUI.DrawDelayedTextField("乐变ClientChId", sourcePackPlatformAndroid.leBian_ClientChId, ref leBian_ClientChId, true);
  131. PackGUI.DrawDelayedTextField("乐变SECID", sourcePackPlatformAndroid.leBian_SECID, ref leBian_SECID, true);
  132. }
  133. EditorGUILayout.Space();
  134. PackGUI.DrawSelectFileFieldWithFilters("选择KeyStore的文件", Application.dataPath + PackConstant.KeyStorePath, PackConstant.KeyStoreFilters, sourcePackPlatformAndroid.keystoreName, ref keystoreName);
  135. PackGUI.DrawDelayedTextField("KeystorePass", sourcePackPlatformAndroid.keystorePass, ref keystorePass, false);
  136. PackGUI.DrawDelayedTextField("KeyaliasName", sourcePackPlatformAndroid.keyaliasName, ref keyaliasName, false);
  137. PackGUI.DrawDelayedTextField("KeyaliasPass", sourcePackPlatformAndroid.keyaliasPass, ref keyaliasPass, false);
  138. }
  139. }
  140. }