@NonNull @Override public List<File> getJavaClassFolders() { if (mJavaClassFolders == null) { mJavaClassFolders = new ArrayList<File>(1); File outputClassFolder = mVariant.getMainArtifact().getClassesFolder(); if (outputClassFolder.exists()) { mJavaClassFolders.add(outputClassFolder); } } return mJavaClassFolders; }
@NonNull @Override public List<File> getResourceFolders() { if (resourceFolders == null) { resourceFolders = Lists.newArrayList(); for (SourceProvider provider : getSourceProviders()) { Collection<File> resDirs = provider.getResDirectories(); // model returns path whether or not it exists resourceFolders.addAll(resDirs.stream() .filter(File::exists) .collect(Collectors.toList())); } resourceFolders.addAll( mVariant.getMainArtifact().getGeneratedResourceFolders().stream() .filter(File::exists) .collect(Collectors.toList())); } return resourceFolders; }
@NonNull @Override public List<File> getJavaSourceFolders() { if (javaSourceFolders == null) { javaSourceFolders = Lists.newArrayList(); for (SourceProvider provider : getSourceProviders()) { Collection<File> srcDirs = provider.getJavaDirectories(); // model returns path whether or not it exists javaSourceFolders.addAll(srcDirs.stream() .filter(File::exists) .collect(Collectors.toList())); } javaSourceFolders.addAll( mVariant.getMainArtifact().getGeneratedSourceFolders().stream() .filter(File::exists) .collect(Collectors.toList())); } return javaSourceFolders; }
@NonNull @Override public List<File> getJavaLibraries() { if (mJavaLibraries == null) { Collection<JavaLibrary> libs = mVariant.getMainArtifact().getDependencies().getJavaLibraries(); mJavaLibraries = Lists.newArrayListWithExpectedSize(libs.size()); for (JavaLibrary lib : libs) { File jar = lib.getJarFile(); if (jar.exists()) { mJavaLibraries.add(jar); } } } return mJavaLibraries; }
@NonNull @Override public List<File> getJavaClassFolders() { if (javaClassFolders == null) { javaClassFolders = new ArrayList<>(1); File outputClassFolder = mVariant.getMainArtifact().getClassesFolder(); if (outputClassFolder.exists()) { javaClassFolders.add(outputClassFolder); } else if (isLibrary()) { // For libraries we build the release variant instead for (Variant variant : mProject.getVariants()) { if (variant != mVariant) { outputClassFolder = variant.getMainArtifact().getClassesFolder(); if (outputClassFolder.exists()) { javaClassFolders.add(outputClassFolder); break; } } } } } return javaClassFolders; }
@NonNull @Override public List<File> getResourceFolders() { if (mResourceFolders == null) { mResourceFolders = Lists.newArrayList(); for (SourceProvider provider : getSourceProviders()) { Collection<File> resDirs = provider.getResDirectories(); for (File res : resDirs) { if (res.exists()) { // model returns path whether or not it exists mResourceFolders.add(res); } } } for (File file : mVariant.getMainArtifact().getGeneratedResourceFolders()) { if (file.exists()) { mResourceFolders.add(file); } } } return mResourceFolders; }
@NonNull @Override public List<File> getJavaSourceFolders() { if (mJavaSourceFolders == null) { mJavaSourceFolders = Lists.newArrayList(); for (SourceProvider provider : getSourceProviders()) { Collection<File> srcDirs = provider.getJavaDirectories(); for (File srcDir : srcDirs) { if (srcDir.exists()) { // model returns path whether or not it exists mJavaSourceFolders.add(srcDir); } } } for (File file : mVariant.getMainArtifact().getGeneratedSourceFolders()) { if (file.exists()) { mJavaSourceFolders.add(file); } } } return mJavaSourceFolders; }
if (includeProvided) { if (javaLibraries == null) { Dependencies dependencies = mVariant.getMainArtifact().getDependencies(); Collection<JavaLibrary> libs = dependencies.getJavaLibraries(); javaLibraries = Lists.newArrayListWithExpectedSize(libs.size()); Dependencies dependencies = mVariant.getMainArtifact().getDependencies(); Collection<JavaLibrary> libs = dependencies.getJavaLibraries(); nonProvidedJavaLibraries = Lists.newArrayListWithExpectedSize(libs.size());
@Nullable @Override public Boolean dependsOn(@NonNull String artifact) { if (SUPPORT_LIB_ARTIFACT.equals(artifact)) { if (mSupportLib == null) { Dependencies dependencies = mVariant.getMainArtifact().getDependencies(); mSupportLib = dependsOn(dependencies, artifact); } return mSupportLib; } else if (APPCOMPAT_LIB_ARTIFACT.equals(artifact)) { if (mAppCompat == null) { Dependencies dependencies = mVariant.getMainArtifact().getDependencies(); mAppCompat = dependsOn(dependencies, artifact); } return mAppCompat; } else { return super.dependsOn(artifact); } } }
@Nullable @Override public Boolean dependsOn(@NonNull String artifact) { if (SUPPORT_LIB_ARTIFACT.equals(artifact)) { if (supportLib == null) { Dependencies dependencies = mVariant.getMainArtifact().getDependencies(); supportLib = dependsOn(dependencies, artifact); } return supportLib; } else if (APPCOMPAT_LIB_ARTIFACT.equals(artifact)) { if (appCompat == null) { Dependencies dependencies = mVariant.getMainArtifact().getDependencies(); appCompat = dependsOn(dependencies, artifact); } return appCompat; } else { return super.dependsOn(artifact); } } }
private AppGradleProject( @NonNull LintGradleClient client, @NonNull File dir, @NonNull File referenceDir, @NonNull AndroidProject project, @NonNull Variant variant) { //TODO FIXME: handle multi-apk super(client, dir, referenceDir, variant.getMainArtifact().getOutputs().iterator().next().getGeneratedManifest()); mProject = project; mVariant = variant; }
private AppGradleProject( @NonNull LintGradleClient client, @NonNull File dir, @NonNull File referenceDir, @NonNull AndroidProject project, @NonNull Variant variant) { //TODO FIXME: handle multi-apk super(client, dir, referenceDir, variant.getMainArtifact().getOutputs().iterator().next().getGeneratedManifest()); mProject = project; mVariant = variant; }
@Nullable @Override public Dependencies getDependencies() { Project project = context.getProject(); if (project.isAndroidProject()) { Variant variant = project.getCurrentVariant(); if (variant != null) { return variant.getMainArtifact().getDependencies(); } } return null; }
@Nullable public static Dependencies getCompileDependencies(@NonNull Project project) { if (!project.isGradleProject()) { return null; } Variant variant = project.getCurrentVariant(); if (variant == null) { return null; } AndroidArtifact artifact = variant.getMainArtifact(); return artifact.getDependencies(); } }
private List<SourceProvider> getSourceProviders() { if (mProviders == null) { List<SourceProvider> providers = Lists.newArrayList(); AndroidArtifact mainArtifact = mVariant.getMainArtifact();
private List<SourceProvider> getSourceProviders() { if (mProviders == null) { List<SourceProvider> providers = Lists.newArrayList(); AndroidArtifact mainArtifact = mVariant.getMainArtifact();
Dependencies dependencies = variant.getMainArtifact().getDependencies(); for (AndroidLibrary library : dependencies.getLibraries()) { lintProject.addDirectLibrary(createLibrary(client, library, libraries, customRules));
Dependencies dependencies = variant.getMainArtifact().getDependencies(); for (AndroidLibrary library : dependencies.getLibraries()) { lintProject.addDirectLibrary(createLibrary(client, library, libraries, customRules));
@Nullable private static GradleCoordinate resolveCoordinate(@NonNull Context context, @NonNull GradleCoordinate gc) { assert gc.getFullRevision().contains("$") : gc.getFullRevision(); Variant variant = context.getProject().getCurrentVariant(); if (variant != null) { Dependencies dependencies = variant.getMainArtifact().getDependencies(); for (AndroidLibrary library : dependencies.getLibraries()) { MavenCoordinates mc = library.getResolvedCoordinates(); if (mc != null && mc.getGroupId().equals(gc.getGroupId()) && mc.getArtifactId().equals(gc.getArtifactId())) { List<RevisionComponent> revisions = GradleCoordinate.parseRevisionNumber(mc.getVersion()); if (!revisions.isEmpty()) { return new GradleCoordinate(mc.getGroupId(), mc.getArtifactId(), revisions, null); } break; } } } return null; }
@Nullable private static GradleCoordinate resolveCoordinate(@NonNull Context context, @NonNull GradleCoordinate gc) { assert gc.getRevision().contains("$") : gc.getRevision(); Project project = context.getProject(); Variant variant = project.getCurrentVariant(); if (variant != null) { Dependencies dependencies = variant.getMainArtifact().getDependencies(); for (AndroidLibrary library : dependencies.getLibraries()) { MavenCoordinates mc = library.getResolvedCoordinates(); // Even though the method is annotated as non-null, this code can run // after a failed sync and there are observed scenarios where it returns // null in that ase //noinspection ConstantConditions if (mc != null && mc.getGroupId().equals(gc.getGroupId()) && mc.getArtifactId().equals(gc.getArtifactId())) { List<RevisionComponent> revisions = GradleCoordinate.parseRevisionNumber(mc.getVersion()); if (!revisions.isEmpty()) { return new GradleCoordinate(mc.getGroupId(), mc.getArtifactId(), revisions, null); } break; } } } return null; }