AppleDTSdkSettings LoadSdkSettings(IPhoneSdkVersion sdk, bool isSim) { var settings = new AppleDTSdkSettings(); var plist = PDictionary.FromFile(GetSdkPlistFilename(sdk.ToString(), isSim)); if (!isSim) { settings.AlternateSDK = plist.GetString("AlternateSDK").Value; } settings.CanonicalName = plist.GetString("CanonicalName").Value; var props = plist.Get <PDictionary> ("DefaultProperties"); PString gcc; if (!props.TryGetValue <PString> ("GCC_VERSION", out gcc)) { settings.DTCompiler = "com.apple.compilers.llvm.clang.1_0"; } else { settings.DTCompiler = gcc.Value; } settings.DeviceFamilies = props.GetUIDeviceFamily("SUPPORTED_DEVICE_FAMILIES"); if (!isSim) { var plstPlist = Path.Combine(GetPlatformPath(isSim), PLATFORM_VERSION_PLIST); settings.DTSDKBuild = GrabRootString(plstPlist, "ProductBuildVersion"); } return(settings); }
public AppleDTSdkSettings GetSdkSettings(IPhoneSdkVersion sdk, bool isSim) { var cache = isSim ? simSettingsCache : sdkSettingsCache; AppleDTSdkSettings settings; if (cache.TryGetValue(sdk.ToString(), out settings)) { return(settings); } try { settings = LoadSdkSettings(sdk, isSim); } catch (Exception ex) { var sdkName = isSim ? SimulatorPlatformName : DevicePlatformName; LoggingService.LogError(string.Format("Error loading settings for SDK {0} {1}", sdkName, sdk), ex); } cache[sdk.ToString()] = settings; return(settings); }
public string GetSdkPath(IPhoneSdkVersion version, bool sim) { return(GetSdkPath(version.ToString(), sim)); }
void Init() { string currentLocation = IsInstalled ? Path.Combine(BinDir, "mtouch") : null; IsInstalled = false; versions = null; if (string.IsNullOrEmpty(SdkDir)) { foreach (var loc in DefaultLocations) { if (IsInstalled = ValidateSdkLocation(loc, out hasUsrSubdir)) { SdkDir = loc; break; } } } else { IsInstalled = ValidateSdkLocation(SdkDir, out hasUsrSubdir); } string mtouch = null; if (IsInstalled) { mtouch = Path.Combine(BinDir, "mtouch"); lastMTExeWrite = File.GetLastWriteTimeUtc(mtouch); Version = ReadVersion(); if (Version.CompareTo(requiredXI) >= 0) { LoggingService.LogInfo("Found Xamarin.iOS, version {0}.", Version); var path = Path.Combine(SdkDir, "Versions.plist"); if (File.Exists(path)) { try { versions = PDictionary.FromFile(path); } catch { LoggingService.LogWarning("Xamarin.iOS installation is corrupt: invalid Versions.plist at {0}.", path); } } if (versions == null) { versions = CreateDefaultVersionsPlist(); } } else { SdkNotInstalledReason = string.Format("Found unsupported Xamarin.iOS, version {0}.\nYou need Xamarin.iOS {1} or above.", Version, requiredXI.ToString()); LoggingService.LogWarning(SdkNotInstalledReason); Version = new IPhoneSdkVersion(); versions = new PDictionary(); IsInstalled = false; } AnalyticsService.ReportSdkVersion("XS.Core.SDK.iOS.Version", Version.ToString()); } else { lastMTExeWrite = DateTime.MinValue; Version = new IPhoneSdkVersion(); versions = new PDictionary(); SdkNotInstalledReason = string.Format("Xamarin.iOS not installed.\nCan't find mtouch or the Version file at {0}.", SdkDir); LoggingService.LogInfo(SdkNotInstalledReason); AnalyticsService.ReportSdkVersion("XS.Core.SDK.iOS.Version", string.Empty); } if (Changed != null && currentLocation != mtouch) { Changed(this, EventArgs.Empty); } }