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(); }
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()); } }