export.cpp 4.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. /**************************************************************************/
  2. /* export.cpp */
  3. /**************************************************************************/
  4. /* This file is part of: */
  5. /* GODOT ENGINE */
  6. /* https://godotengine.org */
  7. /**************************************************************************/
  8. /* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */
  9. /* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */
  10. /* */
  11. /* Permission is hereby granted, free of charge, to any person obtaining */
  12. /* a copy of this software and associated documentation files (the */
  13. /* "Software"), to deal in the Software without restriction, including */
  14. /* without limitation the rights to use, copy, modify, merge, publish, */
  15. /* distribute, sublicense, and/or sell copies of the Software, and to */
  16. /* permit persons to whom the Software is furnished to do so, subject to */
  17. /* the following conditions: */
  18. /* */
  19. /* The above copyright notice and this permission notice shall be */
  20. /* included in all copies or substantial portions of the Software. */
  21. /* */
  22. /* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
  23. /* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
  24. /* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */
  25. /* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
  26. /* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
  27. /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
  28. /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
  29. /**************************************************************************/
  30. #include "export.h"
  31. #include "export_plugin.h"
  32. #include "core/os/os.h"
  33. #include "editor/export/editor_export.h"
  34. #include "editor/file_system/editor_paths.h"
  35. #include "editor/settings/editor_settings.h"
  36. String get_default_android_sdk_path();
  37. void register_android_exporter_types() {
  38. GDREGISTER_VIRTUAL_CLASS(EditorExportPlatformAndroid);
  39. }
  40. void register_android_exporter() {
  41. // TODO: Move to editor_settings.cpp
  42. EDITOR_DEF_BASIC("export/android/debug_keystore", EditorPaths::get_singleton()->get_debug_keystore_path());
  43. EditorSettings::get_singleton()->add_property_hint(PropertyInfo(Variant::STRING, "export/android/debug_keystore", PROPERTY_HINT_GLOBAL_FILE, "*.keystore,*.jks"));
  44. EDITOR_DEF_BASIC("export/android/debug_keystore_user", DEFAULT_ANDROID_KEYSTORE_DEBUG_USER);
  45. EDITOR_DEF_BASIC("export/android/debug_keystore_pass", DEFAULT_ANDROID_KEYSTORE_DEBUG_PASSWORD);
  46. EditorSettings::get_singleton()->add_property_hint(PropertyInfo(Variant::STRING, "export/android/debug_keystore_pass", PROPERTY_HINT_PASSWORD));
  47. #ifdef ANDROID_ENABLED
  48. EDITOR_DEF_BASIC("export/android/install_exported_apk", !OS::get_singleton()->has_feature("horizonos"));
  49. #else
  50. EDITOR_DEF_BASIC("export/android/java_sdk_path", OS::get_singleton()->get_environment("JAVA_HOME"));
  51. EditorSettings::get_singleton()->add_property_hint(PropertyInfo(Variant::STRING, "export/android/java_sdk_path", PROPERTY_HINT_GLOBAL_DIR));
  52. EDITOR_DEF_BASIC("export/android/android_sdk_path", OS::get_singleton()->has_environment("ANDROID_HOME") ? OS::get_singleton()->get_environment("ANDROID_HOME") : get_default_android_sdk_path());
  53. EditorSettings::get_singleton()->add_property_hint(PropertyInfo(Variant::STRING, "export/android/android_sdk_path", PROPERTY_HINT_GLOBAL_DIR));
  54. EDITOR_DEF("export/android/force_system_user", false);
  55. EDITOR_DEF("export/android/shutdown_adb_on_exit", true);
  56. EDITOR_DEF("export/android/one_click_deploy_clear_previous_install", false);
  57. EDITOR_DEF("export/android/use_wifi_for_remote_debug", false);
  58. EDITOR_DEF("export/android/wifi_remote_debug_host", "localhost");
  59. #endif
  60. Ref<EditorExportPlatformAndroid> exporter = Ref<EditorExportPlatformAndroid>(memnew(EditorExportPlatformAndroid));
  61. EditorExport::get_singleton()->add_export_platform(exporter);
  62. }
  63. inline String get_default_android_sdk_path() {
  64. #ifdef WINDOWS_ENABLED
  65. return OS::get_singleton()->get_environment("LOCALAPPDATA").path_join("Android/Sdk");
  66. #elif LINUXBSD_ENABLED
  67. return OS::get_singleton()->get_environment("HOME").path_join("Android/Sdk");
  68. #elif MACOS_ENABLED
  69. return OS::get_singleton()->get_environment("HOME").path_join("Library/Android/sdk");
  70. #else
  71. return String();
  72. #endif
  73. }