@Override protected BaseVariant getBaseVariant() { LibraryExtension libraryExtension = (LibraryExtension) getAndroidExtension(); Optional<LibraryVariant> baseVariantOptional = libraryExtension .getLibraryVariants() .stream() .filter(variant -> variant.getName().equals(getName())) .findFirst(); Preconditions.checkArgument(baseVariantOptional.isPresent()); return baseVariantOptional.get(); }
private BaseVariant getVariant(Context context) throws TransformException { TransformTask transformTask = (TransformTask)context; Project project = transformTask.getProject(); List<BaseVariant> variants = new ArrayList<>(); if (project.getPlugins().hasPlugin(LibraryPlugin.class)) { LibraryExtension android = project.getExtensions().getByType(LibraryExtension.class); variants.addAll(android.getLibraryVariants()); variants.addAll(android.getTestVariants()); variants.addAll(android.getUnitTestVariants()); } else if (project.getPlugins().hasPlugin(AppPlugin.class)) { AppExtension android = project.getExtensions().getByType(AppExtension.class); variants.addAll(android.getApplicationVariants()); variants.addAll(android.getTestVariants()); variants.addAll(android.getUnitTestVariants()); } else if (project.getPlugins().hasPlugin(TestPlugin.class)) { TestExtension android = project.getExtensions().getByType(TestExtension.class); variants.addAll(android.getApplicationVariants()); } else { throw new TransformException(project.getName() + " isn't an Android project"); } Optional<BaseVariant> variant = variants.stream().filter(v -> transformTask.getVariantName().equals(v.getName())).findFirst(); if (!variant.isPresent()) { throw new TransformException("Variant not found: " + project.getName() + " / " + transformTask.getVariantName()); } return variant.get(); }
} else { LibraryExtension libraryExtension = project.getExtensions().findByType(LibraryExtension.class); mainRes = libraryExtension.getSourceSets().getByName("main").getRes(); } else if(project.getPlugins().hasPlugin(LibraryPlugin.class)) { LibraryExtension android1 = project.getExtensions().getByType(LibraryExtension.class); android1.getLibraryVariants().all(variant -> addGeneratorTask(variant, generatorTask, genDir));
@Nullable private static String getTestBuildType(Project project) { PluginCollection<AppPlugin> appPlugins = project.getPlugins().withType(AppPlugin.class); if (!appPlugins.isEmpty()) { AppExtension androidExtension = project.getExtensions().getByType(AppExtension.class); return androidExtension.getTestBuildType(); } PluginCollection<LibraryPlugin> libPlugins = project.getPlugins().withType(LibraryPlugin.class); if (!libPlugins.isEmpty()) { LibraryExtension androidExtension = project.getExtensions().getByType(LibraryExtension.class); return androidExtension.getTestBuildType(); } return null; }
@Nullable private static List<File> getBootClasspath(Project project) { PluginCollection<AppPlugin> appPlugins = project.getPlugins().withType(AppPlugin.class); if (!appPlugins.isEmpty()) { AppExtension androidExtension = project.getExtensions().getByType(AppExtension.class); return androidExtension.getBootClasspath(); } PluginCollection<LibraryPlugin> libPlugins = project.getPlugins().withType(LibraryPlugin.class); if (!libPlugins.isEmpty()) { LibraryExtension androidExtension = project.getExtensions().getByType(LibraryExtension.class); return androidExtension.getBootClasspath(); } PluginCollection<TestPlugin> testPlugins = project.getPlugins().withType(TestPlugin.class); if (!testPlugins.isEmpty()) { TestExtension androidExtension = project.getExtensions().getByType(TestExtension.class); return androidExtension.getBootClasspath(); } return null; }
private void addSourceSetToPath(Project project, String path) { LibraryExtension androidLibraryExtension = (LibraryExtension)project.getProperties().get("android"); androidLibraryExtension.getSourceSets().getByName("main").getJava().srcDirs(new File(path)); }
private void useHackedAndroidJar(BaseExtension android) { if (android instanceof LibraryExtension) { ((LibraryExtension)android).getLibraryVariants().all(libraryVariant -> useHackedAndroidJar(libraryVariant)); ((LibraryExtension)android).getTestVariants().all(testVariant -> useHackedAndroidJar(testVariant)); ((LibraryExtension)android).getUnitTestVariants().all(unitTestVariant -> useHackedAndroidJar(unitTestVariant)); } else if (android instanceof AppExtension) { ((AppExtension)android).getApplicationVariants().all(applicationVariant -> useHackedAndroidJar(applicationVariant)); ((AppExtension)android).getTestVariants().all(testVariant -> useHackedAndroidJar(testVariant)); ((AppExtension)android).getUnitTestVariants().all(unitTestVariant -> useHackedAndroidJar(unitTestVariant)); } else if (android instanceof TestExtension) { ((TestExtension)android).getApplicationVariants().all(applicationVariant -> useHackedAndroidJar(applicationVariant)); } else { System.err.println("Skipping extension of type " + android.getClass().getSimpleName()); } }
@Nullable private static String getTestBuildType(Project project) { PluginCollection<AppPlugin> appPlugins = project.getPlugins().withType(AppPlugin.class); if (!appPlugins.isEmpty()) { AppExtension androidExtension = project.getExtensions().getByType(AppExtension.class); return androidExtension.getTestBuildType(); } PluginCollection<LibraryPlugin> libPlugins = project.getPlugins().withType(LibraryPlugin.class); if (!libPlugins.isEmpty()) { LibraryExtension androidExtension = project.getExtensions().getByType(LibraryExtension.class); return androidExtension.getTestBuildType(); } return null; }
@Nullable private static List<File> getBootClasspath(Project project) { PluginCollection<AppPlugin> appPlugins = project.getPlugins().withType(AppPlugin.class); if (!appPlugins.isEmpty()) { AppExtension androidExtension = project.getExtensions().getByType(AppExtension.class); return androidExtension.getBootClasspath(); } PluginCollection<LibraryPlugin> libPlugins = project.getPlugins().withType(LibraryPlugin.class); if (!libPlugins.isEmpty()) { LibraryExtension androidExtension = project.getExtensions().getByType(LibraryExtension.class); return androidExtension.getBootClasspath(); } PluginCollection<TestPlugin> testPlugins = project.getPlugins().withType(TestPlugin.class); if (!testPlugins.isEmpty()) { TestExtension androidExtension = project.getExtensions().getByType(TestExtension.class); return androidExtension.getBootClasspath(); } return null; }
private LibraryVariant getLibraryVariant() { LibraryExtension libraryExtension = (LibraryExtension) getAndroidExtension(); Set<LibraryVariant> libraryVariants = libraryExtension .getLibraryVariants() .matching( libraryVariant -> libraryVariant.getName().equals(getMainTargetName(getName()))); Preconditions.checkArgument(libraryVariants.size() > 0); return libraryVariants.iterator().next(); } }
.getExtensions() .getByType(LibraryExtension.class) .getLibraryVariants() .stream() .collect(
@SuppressWarnings("WeakerAccess") public DomainObjectSet<? extends BaseVariant> getAndroidVariants() { if (androidExtension == null || projectType == null) { throw new IllegalStateException("No android plugin found"); } switch (projectType) { case APP: return ((AppExtension)androidExtension).getApplicationVariants(); case LIBRARY: return ((LibraryExtension)androidExtension).getLibraryVariants(); case FEATURE: return ((FeatureExtension)androidExtension).getFeatureVariants(); default: throw new IllegalStateException("Unexpected project type: " + projectType); } }
@Nullable static BaseVariant findVariant(Project project, @Nullable String userConfiguredBuildVariantName) { String testBuildType = getTestBuildType(project); PluginCollection<AppPlugin> appPlugins = project.getPlugins().withType(AppPlugin.class); if (!appPlugins.isEmpty()) { AppExtension androidExtension = project.getExtensions().getByType(AppExtension.class); return findVariant(new ArrayList<>(androidExtension.getApplicationVariants()), testBuildType, userConfiguredBuildVariantName); } PluginCollection<LibraryPlugin> libPlugins = project.getPlugins().withType(LibraryPlugin.class); if (!libPlugins.isEmpty()) { LibraryExtension androidExtension = project.getExtensions().getByType(LibraryExtension.class); return findVariant(new ArrayList<>(androidExtension.getLibraryVariants()), testBuildType, userConfiguredBuildVariantName); } PluginCollection<TestPlugin> testPlugins = project.getPlugins().withType(TestPlugin.class); if (!testPlugins.isEmpty()) { TestExtension androidExtension = project.getExtensions().getByType(TestExtension.class); return findVariant(new ArrayList<>(androidExtension.getApplicationVariants()), testBuildType, userConfiguredBuildVariantName); } return null; }
@Nullable static BaseVariant findVariant(Project project, @Nullable String userConfiguredBuildVariantName) { String testBuildType = getTestBuildType(project); PluginCollection<AppPlugin> appPlugins = project.getPlugins().withType(AppPlugin.class); if (!appPlugins.isEmpty()) { AppExtension androidExtension = project.getExtensions().getByType(AppExtension.class); return findVariant(new ArrayList<>(androidExtension.getApplicationVariants()), testBuildType, userConfiguredBuildVariantName); } PluginCollection<LibraryPlugin> libPlugins = project.getPlugins().withType(LibraryPlugin.class); if (!libPlugins.isEmpty()) { LibraryExtension androidExtension = project.getExtensions().getByType(LibraryExtension.class); return findVariant(new ArrayList<>(androidExtension.getLibraryVariants()), testBuildType, userConfiguredBuildVariantName); } PluginCollection<TestPlugin> testPlugins = project.getPlugins().withType(TestPlugin.class); if (!testPlugins.isEmpty()) { TestExtension androidExtension = project.getExtensions().getByType(TestExtension.class); return findVariant(new ArrayList<>(androidExtension.getApplicationVariants()), testBuildType, userConfiguredBuildVariantName); } return null; }
public static void forEachVariant(BaseExtension extension, Action<BaseVariant> action) { if (extension instanceof AppExtension) { ((AppExtension)extension).getApplicationVariants().all(action); } else if (extension instanceof LibraryExtension) { ((LibraryExtension)extension).getLibraryVariants().all(action); if (extension instanceof FeatureExtension) { ((FeatureExtension)extension).getFeatureVariants().all(action); } } else if (extension instanceof TestExtension) { ((TestExtension)extension).getApplicationVariants().all(action); } if (extension instanceof TestedExtension) { ((TestedExtension)extension).getTestVariants().all(action); ((TestedExtension)extension).getUnitTestVariants().all(action); } }
: ((LibraryExtension) extension).getLibraryVariants();
@Override protected void configurePlugin() { getProject().getDependencies().add(CONFIGURATION, "org.aspectj:aspectjrt:" + ASPECTJ_VERSION); getProject().getDependencies().add(CONFIGURATION, "com.quanturium.bouquet:bouquet-runtime:" + BOUQUET_VERSION); getProject().getDependencies().add(CONFIGURATION, "com.quanturium.bouquet:bouquet-runtime-android:" + BOUQUET_VERSION); BaseExtension androidExtension = (BaseExtension) getProject().getExtensions().getByName("android"); if (!((BouquetExtension) getProject().getExtensions().getByName(BOUQUET_EXTENSION)).isEnabled()) { getProject().getLogger().debug("Skipping weaving. Bouquet is not enabled"); return; } AspectJAndroidTransform aspectJAndroidTransform = new AspectJAndroidTransform(getProject(), androidExtension); androidExtension.registerTransform(aspectJAndroidTransform); // Add variants that we want to weave if (getProjectType() == ProjectType.ANDROID_APP) { ((AppExtension) androidExtension).getApplicationVariants().all(applicationVariant -> { if (applicationVariant.getBuildType().isDebuggable()) { aspectJAndroidTransform.addVariant(applicationVariant); } }); } else if (getProjectType() == ProjectType.ANDROID_LIBRARY) { ((LibraryExtension) androidExtension).getLibraryVariants().all(libraryVariant -> { if (libraryVariant.getBuildType().isDebuggable()) { aspectJAndroidTransform.addVariant(libraryVariant); } }); } }