PackPlatformWeiDuanAndroidBuild.cs 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Reflection;
  4. using UnityEngine;
  5. namespace Pack
  6. {
  7. public partial class PackPlatformWeiDuanAndroid
  8. {
  9. public override void ChangePlatform()
  10. {
  11. base.ChangePlatform();
  12. BuildApp();
  13. }
  14. public override void BuildAssetBundles()
  15. {
  16. base.BuildAssetBundles();
  17. BuildApp();
  18. }
  19. public override void BuildApp()
  20. {
  21. base.BuildApp();
  22. try
  23. {
  24. Action<string, Type> findPath = (tag, type) =>
  25. {
  26. var methodInfo = type.GetMethod("GetInstance", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static);
  27. if (methodInfo != null)
  28. {
  29. var root = methodInfo.Invoke(null, null);
  30. if (root != null)
  31. {
  32. methodInfo = type.GetMethod("ReadDirectoryPreference", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);
  33. if (methodInfo != null)
  34. {
  35. string path = (string)methodInfo.Invoke(root, null);
  36. if (string.IsNullOrEmpty(path))
  37. {
  38. methodInfo = type.GetMethod("GetDefaultDirectory", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);
  39. if (methodInfo != null)
  40. {
  41. path = (string)methodInfo.Invoke(root, null);
  42. }
  43. }
  44. PackLog.Log(tag + path);
  45. }
  46. }
  47. }
  48. };
  49. var assemblies = AppDomain.CurrentDomain.GetAssemblies();
  50. foreach (var a in assemblies)
  51. {
  52. if (a.GetName().Name == "UnityEditor.Android.Extensions")
  53. {
  54. foreach (var type in a.GetTypes())
  55. {
  56. if (type.FullName == "UnityEditor.Android.AndroidJavaRoot")
  57. {
  58. findPath(PackConstant.TAG_ANDROID_JAVA_ROOT, type);
  59. }
  60. else if (type.FullName == "UnityEditor.Android.AndroidSDKRoot")
  61. {
  62. findPath(PackConstant.TAG_ANDROID_SDK_ROOT, type);
  63. }
  64. else if (type.FullName == "UnityEditor.Android.AndroidNDKRoot")
  65. {
  66. findPath(PackConstant.TAG_ANDROID_NDK_ROOT, type);
  67. }
  68. }
  69. }
  70. }
  71. PackLog.Log(PackConstant.TAG_ICON_PATH + GetAppIconPath());
  72. PackLog.Log(PackConstant.TAG_AppOutPath + GetBuildOutputPath());
  73. PackLog.Log(PackConstant.TAG_KEYSTORE_PATH + Application.dataPath + PackConstant.KeyStorePath + keystoreName);
  74. PackLog.Log(PackConstant.TAG_OTHER_BUILD_PROJECT_PATH + Application.dataPath + PackConstant.OtherBuildProjectAndroid + otherBuildProject);
  75. }
  76. catch (Exception e)
  77. {
  78. PackLog.LogException(e);
  79. throw e;
  80. }
  81. }
  82. }
  83. }