@Override public void apply(Project project) { WMRouterExtension extension = project.getExtensions() .create(Const.NAME, WMRouterExtension.class); WMRouterLogger.info("register transform"); project.getExtensions().findByType(BaseExtension.class) .registerTransform(new WMRouterTransform()); project.afterEvaluate(p -> WMRouterLogger.setConfig(extension)); } }
@Override public void execute(Project project) { BaseExtension android = null; if (project.getPlugins().hasPlugin(LibraryPlugin.class)) { android = project.getExtensions().getByType(LibraryExtension.class); } else if (project.getPlugins().hasPlugin(AppPlugin.class)) { android = project.getExtensions().getByType(AppExtension.class); } else if (project.getPlugins().hasPlugin(TestPlugin.class)) { android = project.getExtensions().getByType(TestExtension.class); } if (android != null) { System.err.println("Hacking project " + project.getName()); useHackedAndroidJar(android); android.registerTransform(new ReflectionAccessorTransform()); android.registerTransform(new IncludeWrapperTransform()); } else { System.err.println("Skipping project " + project.getName()); } } });
@Override public void apply(Project project) { project.getPlugins().matching(p -> p instanceof AppPlugin || p instanceof LibraryPlugin) .all(c -> { BaseExtension baseExtension = (BaseExtension) project.getExtensions().getByName("android"); project.getExtensions().create(NAME, GradleCaptExtension.class, project.container(CaptPluginExtension.class)); VariantManager variantManager = new VariantManager(createGlobalResource(project, baseExtension), baseExtension, project); // callCreate configurations for separate variant variantManager.createConfigurationForVariant(); CaptTransform captTransform = new CaptTransform(variantManager); baseExtension.registerTransform(captTransform); }); }
@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); } }); } }