コード例 #1
0
    static SmartAdServerDependencies()
    {
        PlayServicesSupport svcSupport = PlayServicesSupport.CreateInstance(PluginName, EditorPrefs.GetString("AndroidSdkRoot"), "ProjectSettings");

        svcSupport.DependOn("com.google.android.gms", "play-services-ads", "9.8.0");
        svcSupport.DependOn("com.google.android.gms", "play-services-location", "9.8.0");
    }
コード例 #2
0
ファイル: FBJarDependencies.cs プロジェクト: boolks/MenuAR
 static FBJarDependencies()
 {
     svcSupport = PlayServicesSupport.CreateInstance(PluginName, EditorPrefs.GetString("AndroidSdkRoot"), "ProjectSettings");
     svcSupport.DependOn("com.google.firebase", "firebase-database", "11.8.0");
     svcSupport.DependOn("com.android.support", "support-v13", "23.4.0");
     svcSupport.DependOn("com.google.gms", "google-services", "3.1.1");
 }
コード例 #3
0
        /// <summary>
        /// Initializes static members of the <see cref="SampleDependencies"/> class.
        /// </summary>
        static GPGSDependencies()
        {
            PlayServicesSupport svcSupport = PlayServicesSupport.CreateInstance(
                PluginName,
                EditorPrefs.GetString("AndroidSdkRoot"),
                "ProjectSettings");

            svcSupport.DependOn("com.google.android.gms",
                                "play-services-games",
                                PluginVersion.PlayServicesVersionConstraint);

            // need nearby too, even if it is not used.
            svcSupport.DependOn("com.google.android.gms",
                                "play-services-nearby",
                                PluginVersion.PlayServicesVersionConstraint);

            // Plus is needed if Token support is enabled.
            svcSupport.DependOn("com.google.android.gms",
                                "play-services-plus",
                                PluginVersion.PlayServicesVersionConstraint);

            // Marshmallow permissions requires app-compat
            svcSupport.DependOn("com.android.support",
                                "support-v4",
                                "23.1.0+");


            // GA
            svcSupport.DependOn("com.google.android.gms",
                                "play-services-analytics",
                                PluginVersion.PlayServicesVersionConstraint);
        }
コード例 #4
0
 static DriveJarDependencies()
 {
     // this only handles google player services api stuff, not the raw google api jars... those have to be added manually.. ugh
     svcSupport = PlayServicesSupport.CreateInstance(PluginName, EditorPrefs.GetString("AndroidSdkRoot"), "ProjectSettings");
     svcSupport.DependOn("com.google.android.gms", "play-services-auth", "9.2.1");
     svcSupport.DependOn("com.android.support", "support-v13", "23.4.0");
 }
コード例 #5
0
 /// <summary>
 /// Initializes the <see cref="GooglePlayServices.PlayServicesResolver"/> class.
 /// </summary>
 static PlayServicesResolver()
 {
     svcSupport = PlayServicesSupport.CreateInstance(
         "PlayServicesResolver",
         EditorPrefs.GetString("AndroidSdkRoot"),
         "ProjectSettings");
     svcSupport.DependOn("com.google.android.gms", "play-services-ads", "9+");
     svcSupport.DependOn("com.google.android.gms", "play-services-analytics", "9+");
 }
コード例 #6
0
    /// Initializes static members of the class.
    static AdMobDependencies()
    {
        PlayServicesSupport svcSupport =
            PlayServicesSupport.CreateInstance(PluginName, EditorPrefs.GetString("AndroidSdkRoot"),
                                               "ProjectSettings");

        svcSupport.DependOn("com.google.android.gms", "play-services-ads", "LATEST");

        // Marshmallow permissions requires app-compat.
        svcSupport.DependOn("com.android.support", "appcompat-v7", "LATEST");
    }
コード例 #7
0
    /// Initializes static members of the class.
    static AdMobDependencies()
    {
        PlayServicesSupport svcSupport =
            PlayServicesSupport.CreateInstance(PluginName, EditorPrefs.GetString("AndroidSdkRoot"),
                                               "ProjectSettings");

        svcSupport.DependOn("com.google.android.gms", "play-services-ads", "LATEST");

        // Marshmallow permissions requires app-compat.
        try {
            svcSupport.DependOn("com.android.support", "appcompat-v7", "23.1.0+");
        } catch (System.Exception e) {
            Debug.LogWarning(e.Message);
        }
    }
コード例 #8
0
    /// <summary>
    /// Initializes static members of the <see cref="SampleDependencies"/> class.
    /// </summary>
    static LocationDependencies()
    {
        PlayServicesSupport svcSupport = PlayServicesSupport.CreateInstance(
            PluginName,
            EditorPrefs.GetString("AndroidSdkRoot"),
            "ProjectSettings");

        // add your dependencies here

        //svcSupport.DependOn("com.google.android.gms", "play-services-base", "8.1+");
        svcSupport.DependOn("com.google.android.gms", "play-services-location", "LATEST");

        // Marshmallow permissions requires app-compat.
        svcSupport.DependOn("com.android.support", "appcompat-v7", "23.1.0+");
    }
コード例 #9
0
        /// <summary>
        /// Registers the dependencies.
        /// </summary>
        public static void RegisterDependencies()
        {
            svcSupport.DependOn("com.google.android.gms",
                                "play-services-games",
                                PluginVersion.PlayServicesVersionConstraint);

            // need nearby too, even if it is not used.
            svcSupport.DependOn("com.google.android.gms",
                                "play-services-nearby",
                                PluginVersion.PlayServicesVersionConstraint);

            // Marshmallow permissions requires app-compat
            svcSupport.DependOn("com.android.support",
                                "support-v4",
                                "23.1+");
        }
コード例 #10
0
        /// <summary>
        /// Extension method for PlayServicesSupport that calls DependOn with the specified
        /// artifact ID.
        /// </summary>
        internal static void DependOn(this PlayServicesSupport instance, PackageId artifactId,
                                      string versionSpecifier)
        {
            var info = artifactId.Info();

            instance.DependOn(info.group, info.artifact, versionSpecifier);
        }
コード例 #11
0
        public void TestCustomRepoPath()
        {
            string[]            repos   = { "../../testData/extras/google/m2repository" };
            PlayServicesSupport support = PlayServicesSupport.CreateInstance(
                "testInstance",
                "..",
                repos,
                Path.GetTempPath());

            Assert.True(Directory.Exists(support.SDK));

            // happy path
            support.ResetDependencies();
            support.DependOn("test", "artifact", "LATEST");

            Dictionary <string, Dependency> deps = support.ResolveDependencies(false);

            Assert.NotNull(deps);

            // should be only 1 and version 8.1
            Assert.True(deps.Count == 1);
            IEnumerator <Dependency> iter = deps.Values.GetEnumerator();

            iter.MoveNext();
            Assert.True(iter.Current.BestVersion == "8.2.0-alpha");
        }
コード例 #12
0
    /// Initializes static members of the class.
    static AnalyticsDependencies()
    {
        PlayServicesSupport svcSupport =
            PlayServicesSupport.CreateInstance(PluginName, EditorPrefs.GetString("AndroidSdkRoot"),
                                               "ProjectSettings");

        svcSupport.DependOn("com.google.android.gms", "play-services-analytics", "LATEST");
    }
コード例 #13
0
    // /// <summary>
    // /// Initializes static members of the <see cref="KongregateGPSDependencies"/> class.
    // /// </summary>
    static KongregateGPSDependencies()
    {
        Debug.Log("Loading Kongregate GPS dependencies");

        PlayServicesSupport svcSupport = PlayServicesSupport.CreateInstance(
            PluginName,
            EditorPrefs.GetString("AndroidSdkRoot"),
            "ProjectSettings");


        // add your dependencies here
        svcSupport.DependOn("com.google.android.gms", "play-services-gcm", "8.1+");
        svcSupport.DependOn("com.google.android.gms", "play-services-ads", "8.1+");
        svcSupport.DependOn("com.android.support", "support-v4", "23.0+");
        svcSupport.DependOn("com.android.support", "appcompat-v7", "23.0+");

        Debug.Log("Kongregate GPS dependencies loaded");
    }
コード例 #14
0
    static AppodealDependencies()
    {
        PlayServicesSupport svcSupport = PlayServicesSupport.CreateInstance(
            PluginName,
            EditorPrefs.GetString("AndroidSdkRoot"),
            "ProjectSettings");

        svcSupport.DependOn("com.google.android.gms",
                            "play-services-ads",
                            "LATEST");

        svcSupport.DependOn("com.google.android.gms",
                            "play-services-location",
                            "LATEST");

        svcSupport.DependOn("com.android.support",
                            "support-v4",
                            "23.1+");
    }
コード例 #15
0
        public void TestUseLatest()
        {
            PlayServicesSupport support = TestData.CreateInstance();

            Assert.True(Directory.Exists(support.SDK));

            support.DependOn(TestData.PackageId.Artifact, "1+");
            support.DependOn(TestData.PackageId.SubDep, "1.1.0");
            support.DependOn(TestData.PackageId.TransDep, "LATEST");

            Dictionary <string, Dependency> deps =
                support.ResolveDependencies(true);

            Assert.NotNull(deps);
            Dependency d = deps[TestData.PackageId.Artifact.VersionlessKey()];

            Assert.AreEqual(TestData.PackageId.Artifact.Info().bestVersion, d.BestVersion);
            d = deps[TestData.PackageId.SubDep.VersionlessKey()];
            Assert.AreEqual("1.1.0", d.BestVersion);
        }
コード例 #16
0
    private static void addGMSLibrary()
    {
        svcSupport = PlayServicesSupport.CreateInstance(PluginName,
                                                        EditorPrefs.GetString("AndroidSdkRoot"),
                                                        "ProjectSettings");

        svcSupport.DependOn("com.google.android.gms", "play-services-gcm", PLAY_SERVICES_VERSION);
        svcSupport.DependOn("com.google.android.gms", "play-services-location", PLAY_SERVICES_VERSION);
        // Adds play-services-base, play-services-basement, play-services-iid, and support-v4 will be automaticly added.
        // Also adds play-services-tasks but this isn't used by OneSignal, it just added as a depency from the above.


        // Setting 8.3+ does not work with unity-jar-resolver-1.2.0 and GooglePlayGamesPlugin-0.9.34.
        //   It creates conflicting aar files with mismatched version of 8.4 and 9.4
        // svcSupport.DependOn("com.google.android.gms", "play-services-gcm", "8.3+");
        // svcSupport.DependOn("com.google.android.gms", "play-services-location", "8.3+");
        // play-services-base, play-services-basement, and support-v4 will be automaticly added.
        // play-services-maps and play-services-measurement are not used by OneSignal
        //    but are included as depencies from the other parts of play-services.
    }
コード例 #17
0
        /// <summary>
        /// Adds the dependencies needed by the plugin.
        /// </summary>
        private static void AddDependencies()
        {
            svcSupport.DependOn("com.google.android.gms",
                                "play-services-games",
                                PluginVersion.PlayServicesVersionConstraint);

            // need nearby too, even if it is not used.
            svcSupport.DependOn("com.google.android.gms",
                                "play-services-nearby",
                                PluginVersion.PlayServicesVersionConstraint);

            // Plus is needed if Token support is enabled.
            svcSupport.DependOn("com.google.android.gms",
                                "play-services-plus",
                                PluginVersion.PlayServicesVersionConstraint);

            //Marshmallow permissions requires app-compat
            svcSupport.DependOn("com.android.support",
                                "appcompat-v7",
                                "23.1.0+");
        }
コード例 #18
0
        private static void CreateDependencies()
        {
            PlayServicesSupport svcSupport = PlayServicesSupport.CreateInstance(
                PluginName,
                EditorPrefs.GetString("AndroidSdkRoot"),
                DependencyFileDirectory);

            svcSupport.ClearDependencies();

            if (NPSettings.Application.SupportedFeatures.UsesGameServices)
            {
                svcSupport.DependOn("com.google.android.gms",
                                    "play-services-games",
                                    "LATEST");

                // need nearby too, even if it is not used.
                svcSupport.DependOn("com.google.android.gms",
                                    "play-services-nearby",
                                    "LATEST");
            }

            if (NPSettings.Application.SupportedFeatures.UsesNotificationService)
            {
                svcSupport.DependOn("com.google.android.gms",
                                    "play-services-gcm",
                                    "LATEST");
            }

            // Marshmallow permissions requires app-compat. Also used by some old API's for compatibility.
            svcSupport.DependOn("com.android.support",
                                "support-v4",
                                "23.+");

            // If not enabled by default, resolve manually.
            if (!PlayServicesResolver.Resolver.AutomaticResolutionEnabled())
            {
                PlayServicesResolver.Resolver.DoResolution(svcSupport, "Assets/Plugins/Android", PlayServicesResolver.HandleOverwriteConfirmation);
                AssetDatabase.Refresh();
            }
        }
コード例 #19
0
        public void TestMultiClient()
        {
            PlayServicesSupport client1 = PlayServicesSupport.CreateInstance(
                "client1",
                "../../testData",
                Path.GetTempPath());

            PlayServicesSupport client2 = PlayServicesSupport.CreateInstance(
                "client2",
                "../../testData",
                Path.GetTempPath());

            client1.ResetDependencies();
            client2.ResetDependencies();

            client1.DependOn("test", "artifact", "1+");
            client2.DependOn("test", "subdep", "1.1.0");

            Dictionary <string, Dependency> deps =
                client1.ResolveDependencies(true);

            Assert.NotNull(deps);
            Dependency d = deps["test:artifact"];

            Assert.True(d.BestVersion == "8.1.0");

            // client 1 needs to see client 2 deps
            d = deps["test:subdep"];
            Assert.True(d.BestVersion == "1.1.0");

            // now check that client 2 sees them also
            deps =
                client2.ResolveDependencies(true);
            Assert.NotNull(deps);
            d = deps["test:artifact"];
            Assert.True(d.BestVersion == "8.1.0");

            d = deps["test:subdep"];
            Assert.True(d.BestVersion == "1.1.0");

            // Now clear client2's deps, and client1 should not see subdep
            client2.ClearDependencies();

            deps = client1.ResolveDependencies(true);
            Assert.NotNull(deps);
            d = deps["test:artifact"];
            Assert.True(d.BestVersion == "8.1.0");

            Assert.False(deps.ContainsKey("test:subdep"));
        }
コード例 #20
0
        public void TestUseLatest()
        {
            PlayServicesSupport support = PlayServicesSupport.CreateInstance(
                "testInstance",
                "../../testData",
                Path.GetTempPath());

            Assert.True(Directory.Exists(support.SDK));

            support.DependOn("test", "artifact", "1+");
            support.DependOn("test", "subdep", "1.1.0");
            support.DependOn("test", "transdep", "LATEST");

            Dictionary <string, Dependency> deps =
                support.ResolveDependencies(true);

            Assert.NotNull(deps);
            Dependency d = deps["test:artifact"];

            Assert.True(d.BestVersion == "8.1.0");
            d = deps["test:subdep"];
            Assert.True(d.BestVersion == "1.1.0");
        }
コード例 #21
0
        public void TestSimpleResolveDependencies()
        {
            PlayServicesSupport support = TestData.CreateInstance();

            Assert.True(Directory.Exists(support.SDK));

            support.DependOn(TestData.PackageId.Artifact, "LATEST");

            Dictionary <string, Dependency> deps = support.ResolveDependencies(false);

            Assert.NotNull(deps);

            // Verify one single dependency is returned at the expected version.
            Assert.AreEqual(1, deps.Count);
            IEnumerator <Dependency> iter = deps.Values.GetEnumerator();

            iter.MoveNext();
            Assert.AreEqual(TestData.PackageId.Artifact.Info().bestVersion,
                            iter.Current.BestVersion);
        }
コード例 #22
0
        public void TestMultiClient()
        {
            PlayServicesSupport client1 = TestData.CreateInstance(instanceName: "client1");
            PlayServicesSupport client2 = TestData.CreateInstance(instanceName: "client2");

            client1.DependOn(TestData.PackageId.Artifact, "1+");
            client2.DependOn(TestData.PackageId.SubDep, "1.1.0");

            Dictionary <string, Dependency> deps =
                client1.ResolveDependencies(true);

            Assert.NotNull(deps);
            Dependency d = deps[TestData.PackageId.Artifact.VersionlessKey()];

            Assert.AreEqual(TestData.PackageId.Artifact.Info().bestVersion, d.BestVersion);

            // client 1 needs to see client 2 deps
            d = deps[TestData.PackageId.SubDep.VersionlessKey()];
            Assert.AreEqual("1.1.0", d.BestVersion);

            // now check that client 2 sees them also
            deps =
                client2.ResolveDependencies(true);
            Assert.NotNull(deps);
            d = deps[TestData.PackageId.Artifact.VersionlessKey()];
            Assert.AreEqual(TestData.PackageId.Artifact.Info().bestVersion, d.BestVersion);

            d = deps[TestData.PackageId.SubDep.VersionlessKey()];
            Assert.AreEqual("1.1.0", d.BestVersion);

            // Now clear client2's deps, and client1 should not see subdep
            client2.ClearDependencies();

            deps = client1.ResolveDependencies(true);
            Assert.NotNull(deps);
            d = deps[TestData.PackageId.Artifact.VersionlessKey()];
            Assert.AreEqual(TestData.PackageId.Artifact.Info().bestVersion, d.BestVersion);

            Assert.False(deps.ContainsKey(TestData.PackageId.SubDep.VersionlessKey()));
        }
コード例 #23
0
        public void TestCustomRepoPath()
        {
            string[]            repos   = { Path.Combine(TestData.PATH, "extras/google/m2repository") };
            PlayServicesSupport support = TestData.CreateInstance(
                sdkPath: "..", additionalRepositories: repos);

            Assert.True(Directory.Exists(support.SDK));

            support.ClearDependencies();
            support.DependOn(TestData.PackageId.Artifact, "LATEST");

            Dictionary <string, Dependency> deps = support.ResolveDependencies(false);

            Assert.NotNull(deps);

            // Verify one dependency is returned at the expected version.
            Assert.AreEqual(1, deps.Count);
            IEnumerator <Dependency> iter = deps.Values.GetEnumerator();

            iter.MoveNext();
            Assert.AreEqual(TestData.PackageId.Artifact.Info().bestVersion,
                            iter.Current.BestVersion);
        }
コード例 #24
0
        public void TestNonActiveClient()
        {
            PlayServicesSupport client1 = TestData.CreateInstance(instanceName: "client1");
            PlayServicesSupport client2 = TestData.CreateInstance(instanceName: "client2");

            client1.DependOn(TestData.PackageId.Artifact, "1+");
            client2.DependOn(TestData.PackageId.SubDep, "1.1.0");

            // now make a third client with no dependencies and make sure it
            // sees client1 & 2
            PlayServicesSupport client3 = TestData.CreateInstance(instanceName: "client3");

            // now check that client 2 sees them also
            Dictionary <string, Dependency> deps = client3.ResolveDependencies(true);

            Assert.NotNull(deps);
            Dependency d = deps[TestData.PackageId.Artifact.VersionlessKey()];

            Assert.AreEqual(TestData.PackageId.Artifact.Info().bestVersion, d.BestVersion);

            d = deps[TestData.PackageId.SubDep.VersionlessKey()];
            Assert.AreEqual("1.1.0", d.BestVersion);
        }
コード例 #25
0
        public void TestNonActiveClient()
        {
            PlayServicesSupport client1 = PlayServicesSupport.CreateInstance(
                "client1",
                "../../testData",
                Path.GetTempPath());

            PlayServicesSupport client2 = PlayServicesSupport.CreateInstance(
                "client2",
                "../../testData",
                Path.GetTempPath());

            client1.ResetDependencies();
            client2.ResetDependencies();

            client1.DependOn("test", "artifact", "1+");
            client2.DependOn("test", "subdep", "1.1.0");

            // now make a third client with no dependencies and make sure it
            // sees client1 & 2
            PlayServicesSupport client3 = PlayServicesSupport.CreateInstance(
                "client3",
                "../../testData",
                Path.GetTempPath());

            // now check that client 2 sees them also
            Dictionary <string, Dependency> deps =
                client3.ResolveDependencies(true);

            Assert.NotNull(deps);
            Dependency d = deps["test:artifact"];

            Assert.True(d.BestVersion == "8.1.0");

            d = deps["test:subdep"];
            Assert.True(d.BestVersion == "1.1.0");
        }
コード例 #26
0
        public void TestLatestResolution()
        {
            PlayServicesSupport client1 = TestData.CreateInstance();

            // TransDep needs SubDep 0.9.
            client1.DependOn(TestData.PackageId.TransDep, "1.0.0");

            // We'll set the top level dependency to require SubDep 1.0 or greater.
            client1.DependOn(TestData.PackageId.SubDep, "1.0+");

            Dictionary <string, Dependency> deps = null;

            // The following should fail since we need SubDep 0.9 and SubDep 1.1.0.
            ResolutionException ex = null;

            try
            {
                deps = client1.ResolveDependencies(false);
            }
            catch (ResolutionException e)
            {
                ex = e;
            }

            Assert.NotNull(ex, "Expected exception, but got none");

            // now try with useLatest == true, should have no exception
            ex = null;
            try
            {
                deps = client1.ResolveDependencies(true);
            }
            catch (ResolutionException e)
            {
                ex = e;
            }
            Assert.Null(ex, "unexpected exception");

            Assert.NotNull(deps);

            // Should have TransDep and SubDep.
            Assert.AreEqual(2, deps.Count,
                            String.Join(", ", new List <string>(deps.Keys).ToArray()));

            // Now check that that all the dependencies have the correct best version.
            Dependency d = deps[TestData.PackageId.TransDep.VersionlessKey()];

            Assert.NotNull(d, "could not find transdep");
            Assert.AreEqual(TestData.PackageId.TransDep.Info().bestVersion, d.BestVersion);

            d = deps[TestData.PackageId.SubDep.VersionlessKey()];
            Assert.NotNull(d, "could not find subdep");
            Assert.AreEqual("1.1.0", d.BestVersion);

            // Try without version wildcard.
            client1.ClearDependencies();

            // TransDep needs subdep 0.9.
            client1.DependOn(TestData.PackageId.TransDep, "1.0.0");

            // Configure top level dependency to require exactly subdep 1.1.0.
            client1.DependOn(TestData.PackageId.SubDep, "1.1.0");

            ex = null;
            try
            {
                deps = client1.ResolveDependencies(false);
            }
            catch (ResolutionException e)
            {
                ex = e;
            }

            Assert.NotNull(ex, "Expected exception, but got none");

            ex = null;
            try
            {
                deps = client1.ResolveDependencies(true);
            }
            catch (ResolutionException e)
            {
                ex = e;
            }
            Assert.Null(ex, "unexpected exception");

            Assert.NotNull(deps);

            // Should contain TransDep and SubDep.
            Assert.AreEqual(2, deps.Count);

            // now check that that all the dependencies have the correct
            // best version
            d = deps[TestData.PackageId.TransDep.VersionlessKey()];
            Assert.NotNull(d, "could not find transdep");
            Assert.AreEqual(TestData.PackageId.TransDep.Info().bestVersion, d.BestVersion);

            d = deps[TestData.PackageId.SubDep.VersionlessKey()];
            Assert.NotNull(d, "could not find subdep");
            Assert.AreEqual("1.1.0", d.BestVersion);
        }
コード例 #27
0
 public static void RegisterDependencies()
 {
     svcSupport.DependOn("com.google.android.gms", "play-services-analytics", "9.4");
 }
コード例 #28
0
        public void TestResolveDependencies()
        {
            PlayServicesSupport support = PlayServicesSupport.CreateInstance(
                "testInstance",
                "../../testData",
                Path.GetTempPath());

            Assert.True(Directory.Exists(support.SDK));

            support.ResetDependencies();

            // happy path
            support.DependOn("test", "artifact", "LATEST");

            Dictionary <string, Dependency> deps =
                support.ResolveDependencies(false);

            Assert.NotNull(deps);

            // should be only 1 and version 8.1
            Assert.True(deps.Count == 1);
            IEnumerator <Dependency> iter = deps.Values.GetEnumerator();

            iter.MoveNext();
            Assert.True(iter.Current.BestVersion == "8.1.0");

            // check dependency that has transitive dependencies
            support.DependOn("test", "transdep", "1.0");

            deps = support.ResolveDependencies(false);
            Assert.NotNull(deps);

            // 1 is the previous test, then 2 for transdep and subdep.
            Assert.True(deps.Count == 3);
            Dependency d = deps["test:artifact"];

            Assert.True(d.BestVersion == "8.1.0");
            d = deps["test:transdep"];
            Assert.AreEqual(d.BestVersion, "1.0.0");
            d = deps["test:subdep"];
            Assert.True(d.BestVersion == "0.9");

            // check constraining down to a later version - the LATEST
            // will make this fail.
            support.DependOn("test", "artifact", "7.0.0");

            ResolutionException ex = null;

            try
            {
                deps = support.ResolveDependencies(false);
            }
            catch (ResolutionException e)
            {
                ex = e;
            }

            Assert.NotNull(ex);

            // Now add it as 7+ and LATEST and it will work.
            support.ResetDependencies();

            support.DependOn("test", "artifact", "LATEST");
            support.DependOn("test", "artifact", "7+");
            deps = support.ResolveDependencies(false);
            Assert.NotNull(deps);
            d = deps["test:artifact"];
            Assert.True(d.BestVersion == "8.1.0");

            // Test downversioning.
            support.ResetDependencies();

            support.DependOn("test", "artifact", "1+");
            support.DependOn("test", "artifact", "2+");
            support.DependOn("test", "artifact", "7.0.0");

            deps = support.ResolveDependencies(false);
            Assert.NotNull(deps);
            d = deps["test:artifact"];
            Assert.True(d.BestVersion == "7.0.0");

            // test the transitive dep influencing a top level
            support.ResetDependencies();

            support.DependOn("test", "artifact", "1+");
            support.DependOn("test", "subdep", "0+");
            support.DependOn("test", "transdep", "LATEST");

            deps = support.ResolveDependencies(false);
            Assert.NotNull(deps);
            d = deps["test:artifact"];
            Assert.True(d.BestVersion == "8.1.0");
            d = deps["test:subdep"];
            Assert.True(d.BestVersion == "0.9");
        }
コード例 #29
0
        public void TestLatestResolution()
        {
            PlayServicesSupport client1 = PlayServicesSupport.CreateInstance(
                "client1",
                "../../testData",
                Path.GetTempPath());

            client1.ResetDependencies();

            //trans dep needs subdep 0.9
            client1.DependOn("test", "transdep", "1.0.0");

            // so top level require subdep 1.0 or greater
            client1.DependOn("test", "subdep", "1.0+");

            Dictionary <string, Dependency> deps = null;
            // this should fail since we need 0.9 and 1.1.0

            ResolutionException ex = null;

            try
            {
                deps = client1.ResolveDependencies(false);
            }
            catch (ResolutionException e)
            {
                ex = e;
            }

            Assert.NotNull(ex, "Expected exception, but got none");

            // now try with useLatest == true, should have no exception
            ex = null;
            try
            {
                deps = client1.ResolveDependencies(true);
            }
            catch (ResolutionException e)
            {
                ex = e;
            }
            Assert.Null(ex, "unexpected exception");

            Assert.NotNull(deps);

            Assert.IsTrue(deps.Count == 2, "Expected 2 dependencies, got " + deps.Count);

            // now check that that all the dependencies have the correct
            // best version
            Dependency d = deps["test:transdep"];

            Assert.NotNull(d, "could not find transdep");
            Assert.IsTrue(d.BestVersion == "1.0.0", "Expected version 1.0.0, got " + d.BestVersion);

            d = deps["test:subdep"];
            Assert.NotNull(d, "could not find subdep");
            Assert.IsTrue(d.BestVersion == "1.1.0", "Expected version 1.1.0, got " + d.BestVersion);

            // try without wildcard
            client1.ResetDependencies();

            //trans dep needs subdep 0.9
            client1.DependOn("test", "transdep", "1.0.0");

            // so top level requires exactly subdep 1.1.0.
            client1.DependOn("test", "subdep", "1.1.0");

            ex = null;
            try
            {
                deps = client1.ResolveDependencies(false);
            }
            catch (ResolutionException e)
            {
                ex = e;
            }

            Assert.NotNull(ex, "Expected exception, but got none");

            ex = null;
            try
            {
                deps = client1.ResolveDependencies(true);
            }
            catch (ResolutionException e)
            {
                ex = e;
            }
            Assert.Null(ex, "unexpected exception");

            Assert.NotNull(deps);

            Assert.IsTrue(deps.Count == 2, "Expected 2 dependencies, got " + deps.Count);

            // now check that that all the dependencies have the correct
            // best version
            d = deps["test:transdep"];
            Assert.NotNull(d, "could not find transdep");
            Assert.IsTrue(d.BestVersion == "1.0.0", "Expected version 1.0.0, got " + d.BestVersion);

            d = deps["test:subdep"];
            Assert.NotNull(d, "could not find subdep");
            Assert.IsTrue(d.BestVersion == "1.1.0", "Expected version 1.1.0, got " + d.BestVersion);
        }
コード例 #30
0
        /// <summary>
        /// Read XML declared dependencies.
        /// </summary>
        /// <param name="filename">File to read.</param>
        /// <param name="logger">Logger instance to log with.</param>
        ///
        /// Parses dependencies in the form:
        ///
        /// <dependencies>
        ///   <androidPackages>
        ///     <androidPackage spec="some:package:1.2.3">
        ///       <androidSdkPackageIds>
        ///         <androidSdkPackageId>androidPackageManagerPackageId</androidSdkPackageId>
        ///       </androidSdkPackageIds>
        ///       <repositories>
        ///         <repository>uriToRepositoryToSearchForPackage</repository>
        ///       </repositories>
        ///     </androidPackage>
        ///   </androidPackages>
        /// </dependencies>
        protected override bool Read(string filename, Logger logger)
        {
            List <string> androidSdkPackageIds = null;
            string        group        = null;
            string        artifact     = null;
            string        versionSpec  = null;
            List <string> repositories = null;

            logger.Log(
                String.Format("Reading Android dependency XML file {0}", filename),
                level: LogLevel.Verbose);

            if (!XmlUtilities.ParseXmlTextFileElements(
                    filename, logger,
                    (reader, elementName, isStart, parentElementName, elementNameStack) => {
                if (elementName == "dependencies" && parentElementName == "")
                {
                    return(true);
                }
                else if (elementName == "androidPackages" &&
                         (parentElementName == "dependencies" ||
                          parentElementName == ""))
                {
                    return(true);
                }
                else if (elementName == "androidPackage" &&
                         parentElementName == "androidPackages")
                {
                    if (isStart)
                    {
                        androidSdkPackageIds = new List <string>();
                        group = null;
                        artifact = null;
                        versionSpec = null;
                        repositories = new List <string>();
                        // Parse a package specification in the form:
                        // group:artifact:version_spec
                        var spec = reader.GetAttribute("spec") ?? "";
                        var specComponents = spec.Split(new [] { ':' });
                        if (specComponents.Length != 3)
                        {
                            logger.Log(
                                String.Format(
                                    "Ignoring invalid package specification '{0}' " +
                                    "while reading {1}:{2}\n",
                                    spec, filename, reader.LineNumber),
                                level: LogLevel.Warning);
                            return(false);
                        }
                        group = specComponents[0];
                        artifact = specComponents[1];
                        versionSpec = specComponents[2];
                        return(true);
                    }
                    else if (!(String.IsNullOrEmpty(group) ||
                               String.IsNullOrEmpty(artifact) ||
                               String.IsNullOrEmpty(versionSpec)))
                    {
                        svcSupport.DependOn(group, artifact, versionSpec,
                                            packageIds: androidSdkPackageIds.ToArray(),
                                            repositories: repositories.ToArray(),
                                            createdBy: String.Format("{0}:{1}", filename,
                                                                     reader.LineNumber));
                    }
                }
                else if (elementName == "androidSdkPackageIds" &&
                         parentElementName == "androidPackage")
                {
                    return(true);
                }
                else if (elementName == "androidSdkPackageId" &&
                         parentElementName == "androidSdkPackageIds")
                {
                    // Parse package manager ID associated with this package.
                    if (isStart && reader.Read() && reader.NodeType == XmlNodeType.Text)
                    {
                        androidSdkPackageIds.Add(reader.ReadContentAsString());
                    }
                    return(true);
                }
                else if (elementName == "repositories" &&
                         parentElementName == "androidPackage")
                {
                    return(true);
                }
                else if (elementName == "repository" &&
                         parentElementName == "repositories")
                {
                    if (isStart && reader.Read() && reader.NodeType == XmlNodeType.Text)
                    {
                        repositories.Add(reader.ReadContentAsString());
                    }
                    return(true);
                }
                return(false);
            }))
            {
                return(false);
            }
            return(true);
        }