// Copyright 1998-2014 Epic Games, Inc. All Rights Reserved. #include "AndroidPlatformEditorPrivatePCH.h" #include "AndroidSDKSettingsCustomization.h" #include "DetailLayoutBuilder.h" #include "DetailCategoryBuilder.h" #include "PropertyEditing.h" #include "ScopedTransaction.h" #include "SExternalImageReference.h" #include "SHyperlinkLaunchURL.h" #include "SPlatformSetupMessage.h" #include "SFilePathPicker.h" #include "PlatformIconInfo.h" #include "SourceControlHelpers.h" #include "ManifestUpdateHelper.h" #include "SNotificationList.h" #include "NotificationManager.h" #include "ITargetPlatformManagerModule.h" #define LOCTEXT_NAMESPACE "AndroidSDKSettings" ////////////////////////////////////////////////////////////////////////// // FAndroidSDKSettingsCustomization TSharedRef FAndroidSDKSettingsCustomization::MakeInstance() { return MakeShareable(new FAndroidSDKSettingsCustomization); } FAndroidSDKSettingsCustomization::FAndroidSDKSettingsCustomization() { TargetPlatformManagerModule = &FModuleManager::LoadModuleChecked("TargetPlatform"); SetupSDKPaths(); } void FAndroidSDKSettingsCustomization::CustomizeDetails(IDetailLayoutBuilder& DetailLayout) { SavedLayoutBuilder = &DetailLayout; BuildSDKPathSection(DetailLayout); } void FAndroidSDKSettingsCustomization::BuildSDKPathSection(IDetailLayoutBuilder& DetailLayout) { SetupSDKPaths(); #if PLATFORM_MAC IDetailCategoryBuilder& SDKConfigCategory = DetailLayout.EditCategory(TEXT("SDKConfig")); // hide the property on Mac only TSharedRef JavaPathProperty = DetailLayout.GetProperty(GET_MEMBER_NAME_CHECKED(UAndroidSDKSettings, JavaPath)); SDKConfigCategory.AddProperty(JavaPathProperty) .Visibility(EVisibility::Hidden); #endif } void FAndroidSDKSettingsCustomization::SetupSDKPaths() { // Try and query the env vars UAndroidSDKSettings * settings = GetMutableDefault(); bool changed = false; if (settings->SDKPath.Path.IsEmpty()) { TCHAR AndroidSDKPath[256]; FPlatformMisc::GetEnvironmentVariable(TEXT("ANDROID_HOME"), AndroidSDKPath, ARRAY_COUNT(AndroidSDKPath)); if (AndroidSDKPath[0]) { settings->SDKPath.Path = AndroidSDKPath; changed |= true; } } if (settings->NDKPath.Path.IsEmpty()) { TCHAR AndroidNDKPath[256]; FPlatformMisc::GetEnvironmentVariable(TEXT("NDKROOT"), AndroidNDKPath, ARRAY_COUNT(AndroidNDKPath)); if (AndroidNDKPath[0]) { settings->NDKPath.Path = AndroidNDKPath; changed |= true; } } if (settings->ANTPath.Path.IsEmpty()) { TCHAR AndroidANTPath[256]; FPlatformMisc::GetEnvironmentVariable(TEXT("ANT_HOME"), AndroidANTPath, ARRAY_COUNT(AndroidANTPath)); if (AndroidANTPath[0]) { settings->ANTPath.Path = AndroidANTPath; changed |= true; } } #if PLATFORM_MAC == 0 if (settings->JavaPath.Path.IsEmpty()) { TCHAR AndroidJavaPath[256]; FPlatformMisc::GetEnvironmentVariable(TEXT("JAVA_HOME"), AndroidJavaPath, ARRAY_COUNT(AndroidJavaPath)); if (AndroidJavaPath[0]) { settings->JavaPath.Path = AndroidJavaPath; changed |= true; } } #endif if (changed) { settings->Modify(); settings->SaveConfig(); } settings->UpdateTargetModulePaths(false); } ////////////////////////////////////////////////////////////////////////// #undef LOCTEXT_NAMESPACE