Example #1
0
        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);
            }
        }
Example #2
0
 public string GetSdkPath(IPhoneSdkVersion version, bool sim)
 {
     return(GetSdkPath(version.ToString(), sim));
 }