Пример #1
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"));
        }
Пример #2
0
        public static void Resolve()
        {
            svcSupport.ClearDependencies();

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

            svcSupport.CopyDependencies(deps, "Assets/Plugins/Android",
                                        HandleOverwriteConfirmation);

            AssetDatabase.Refresh();
            EditorUtility.DisplayDialog("Android Jar Dependencies",
                                        "Resolution Complete", "OK");
        }
Пример #3
0
        /// <summary>
        /// Find and read all XML declared dependencies.
        /// </summary>
        /// <param name="logger">Logger to log with.</param>
        public override bool ReadAll(Logger logger)
        {
            const string XML_DEPENDENCIES_INSTANCE = "InternalXmlDependencies";

            if (PlayServicesSupport.instances.TryGetValue(XML_DEPENDENCIES_INSTANCE,
                                                          out svcSupport))
            {
                svcSupport.ClearDependencies();
            }
            else
            {
                svcSupport = PlayServicesSupport.CreateInstance(
                    XML_DEPENDENCIES_INSTANCE, EditorPrefs.GetString("AndroidSdkRoot"),
                    "ProjectSettings", logMessageWithLevel: PlayServicesResolver.LogDelegate);
            }
            return(base.ReadAll(logger));
        }
        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();
            }
        }
Пример #5
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()));
        }
Пример #6
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);
        }
Пример #7
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);
        }
Пример #8
0
        public void TestResolveDependencies()
        {
            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 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);

            // Check dependency with has transitive dependencies.
            support.DependOn(TestData.PackageId.TransDep, "1.0");

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

            // One dependency should be present from the previous test and an additional two
            // for the transdep and subdep.
            Assert.AreEqual(3, deps.Count);
            Dependency d = deps[TestData.PackageId.Artifact.VersionlessKey()];

            Assert.AreEqual(TestData.PackageId.Artifact.Info().bestVersion, d.BestVersion);
            d = deps[TestData.PackageId.TransDep.VersionlessKey()];
            Assert.AreEqual(TestData.PackageId.TransDep.Info().bestVersion, d.BestVersion);
            d = deps[TestData.PackageId.SubDep.VersionlessKey()];
            Assert.AreEqual(TestData.PackageId.SubDep.Info().bestVersion, d.BestVersion);

            // check constraining down to a later version - the LATEST
            // will make this fail.
            support.DependOn(TestData.PackageId.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.ClearDependencies();

            support.DependOn(TestData.PackageId.Artifact, "LATEST");
            support.DependOn(TestData.PackageId.Artifact, "7+");
            deps = support.ResolveDependencies(false);
            Assert.NotNull(deps);
            d = deps[TestData.PackageId.Artifact.VersionlessKey()];
            Assert.AreEqual(TestData.PackageId.Artifact.Info().bestVersion, d.BestVersion);

            // Test downversioning.
            support.ClearDependencies();

            support.DependOn(TestData.PackageId.Artifact, "1+");
            support.DependOn(TestData.PackageId.Artifact, "2+");
            support.DependOn(TestData.PackageId.Artifact, "7.0.0");

            deps = support.ResolveDependencies(false);
            Assert.NotNull(deps);
            d = deps[TestData.PackageId.Artifact.VersionlessKey()];
            Assert.AreEqual("7.0.0", d.BestVersion);

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

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

            deps = support.ResolveDependencies(false);
            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(TestData.PackageId.SubDep.Info().bestVersion, d.BestVersion);
        }
Пример #9
0
 /// <summary>
 /// Registers the android dependencies.
 /// </summary>
 public static void RegisterAndroidDependencies()
 {
     svcSupport = PlayServicesSupport.CreateInstance("FuseSDK", EditorPrefs.GetString("AndroidSdkRoot"), "ProjectSettings");
     svcSupport.ClearDependencies();
     svcSupport.DependOn("com.google.android.gms", "play-services-basement", "10+", packageIds: new string[] { "extra-google-m2repository" });
 }