Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
 public string GetSdkPath(IPhoneSdkVersion version, bool sim)
 {
     return(GetSdkPath(version.ToString(), sim));
 }
Exemplo n.º 4
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);
            }
        }