public override bool Execute()
        {
            if (!File.Exists(CacheFile))
            {
                Log.LogDebugMessage("{0} does not exist. No Additional Resources found", CacheFile);
                return(!Log.HasLoggedErrors);
            }
            var doc = XDocument.Load(CacheFile);

            AdditionalAndroidResourcePaths = doc.GetPaths("AdditionalAndroidResourcePaths",
                                                          "AdditionalAndroidResourcePath");
            AdditionalJavaLibraryReferences = doc.GetPaths("AdditionalJavaLibraryReferences",
                                                           "AdditionalJavaLibraryReference");
            AdditionalNativeLibraryReferences = doc.GetPaths("AdditionalNativeLibraryReferences",
                                                             "AdditionalNativeLibraryReference");

            Log.LogDebugTaskItems("  AdditionalAndroidResourcePaths: ", AdditionalAndroidResourcePaths);
            Log.LogDebugTaskItems("  AdditionalJavaLibraryReferences: ", AdditionalJavaLibraryReferences);
            Log.LogDebugTaskItems("  AdditionalNativeLibraryReferences: ", AdditionalNativeLibraryReferences);

            IsResourceCacheValid = AdditionalAndroidResourcePaths.All(x => Directory.Exists(x)) &&
                                   AdditionalJavaLibraryReferences.All(x => File.Exists(x)) &&
                                   AdditionalNativeLibraryReferences.All(x => File.Exists(x));

            Log.LogDebugMessage("  IsValid: {0}", IsResourceCacheValid);

            return(!Log.HasLoggedErrors);
        }
Пример #2
0
        public override bool Execute()
        {
            Log.LogDebugMessage("DetermineJavaLibrariesToCompile");
            Log.LogDebugMessage("  EnableInstantRun: {0}", EnableInstantRun);
            Log.LogDebugMessage("  MonoPlatformJarPath: {0}", MonoPlatformJarPath);
            Log.LogDebugTaskItems("  JavaSourceFiles:", JavaSourceFiles);
            Log.LogDebugTaskItems("  JavaLibraries:", JavaLibraries);
            Log.LogDebugTaskItems("  ExternalJavaLibraries:", ExternalJavaLibraries);
            Log.LogDebugTaskItems("  LibraryProjectJars:", LibraryProjectJars);
            Log.LogDebugTaskItems("  AdditionalJavaLibraryReferences:", AdditionalJavaLibraryReferences);
            Log.LogDebugTaskItems("  DoNotPackageJavaLibraries:", DoNotPackageJavaLibraries);

            var jars = new List <ITaskItem> ();

            if (!EnableInstantRun)
            {
                jars.Add(new TaskItem(MonoPlatformJarPath));
            }
            if (JavaSourceFiles != null)
            {
                foreach (var jar in JavaSourceFiles.Where(p => Path.GetExtension(p.ItemSpec) == ".jar"))
                {
                    jars.Add(jar);
                }
            }
            if (JavaLibraries != null)
            {
                foreach (var jarfile in JavaLibraries)
                {
                    jars.Add(jarfile);
                }
            }
            if (LibraryProjectJars != null)
            {
                foreach (var jar in LibraryProjectJars)
                {
                    if (!MonoAndroidHelper.IsEmbeddedReferenceJar(jar.ItemSpec))
                    {
                        jars.Add(jar);
                    }
                }
            }
            if (AdditionalJavaLibraryReferences != null)
            {
                foreach (var jar in AdditionalJavaLibraryReferences.Distinct(TaskItemComparer.DefaultComparer))
                {
                    jars.Add(jar);
                }
            }

            var distinct = MonoAndroidHelper.DistinctFilesByContent(jars);

            jars = jars.Where(j => distinct.Contains(j)).ToList();

            JavaLibrariesToCompile = jars.Where(j => !IsExcluded(j.ItemSpec)).ToArray();
            ReferenceJavaLibraries = jars.Except(JavaLibrariesToCompile).ToArray();

            Log.LogDebugTaskItems("  JavaLibrariesToCompile:", JavaLibrariesToCompile);
            Log.LogDebugTaskItems("  ReferenceJavaLibraries:", ReferenceJavaLibraries);

            return(true);
        }
        public override bool RunTask()
        {
            var jars = new List <ITaskItem> ();

            if (!EnableInstantRun)
            {
                jars.AddRange(MonoPlatformJarPaths);
            }
            if (JavaSourceFiles != null)
            {
                foreach (var jar in JavaSourceFiles.Where(p => Path.GetExtension(p.ItemSpec) == ".jar"))
                {
                    jars.Add(jar);
                }
            }
            if (JavaLibraries != null)
            {
                foreach (var jarfile in JavaLibraries)
                {
                    jars.Add(jarfile);
                }
            }
            if (LibraryProjectJars != null)
            {
                foreach (var jar in LibraryProjectJars)
                {
                    if (!MonoAndroidHelper.IsEmbeddedReferenceJar(jar.ItemSpec))
                    {
                        jars.Add(jar);
                    }
                }
            }
            if (AdditionalJavaLibraryReferences != null)
            {
                foreach (var jar in AdditionalJavaLibraryReferences.Distinct(TaskItemComparer.DefaultComparer))
                {
                    jars.Add(jar);
                }
            }

            var distinct = MonoAndroidHelper.DistinctFilesByContent(jars);

            var javaLibrariesToCompile = new List <ITaskItem> ();
            var referenceJavaLibraries = new List <ITaskItem> ();

            if (ExternalJavaLibraries != null)
            {
                referenceJavaLibraries.AddRange(ExternalJavaLibraries);
            }

            foreach (var item in distinct)
            {
                if (!HasClassFiles(item.ItemSpec))
                {
                    continue;
                }
                if (IsExcluded(item.ItemSpec))
                {
                    referenceJavaLibraries.Add(item);
                }
                else
                {
                    javaLibrariesToCompile.Add(item);
                }
            }
            JavaLibrariesToCompile = javaLibrariesToCompile.ToArray();
            ReferenceJavaLibraries = referenceJavaLibraries.ToArray();

            Log.LogDebugTaskItems("  JavaLibrariesToCompile:", JavaLibrariesToCompile);
            Log.LogDebugTaskItems("  ReferenceJavaLibraries:", ReferenceJavaLibraries);

            return(true);
        }