in buildSrc/src/main/java/com/uber/okbuck/composer/android/AndroidModuleRuleComposer.java [27:135]
public static Rule compose(
AndroidLibTarget target,
List<String> deps,
List<String> aidlRuleNames,
@Nullable String appClass,
List<String> extraResDeps) {
Set<String> libraryDeps = new HashSet<>(deps);
libraryDeps.addAll(external(target.getExternalDeps(SourceSetType.MAIN)));
libraryDeps.addAll(targets(target.getTargetDeps(SourceSetType.MAIN)));
List<String> libraryAptDeps = new ArrayList<>();
libraryAptDeps.addAll(externalApt(target.getExternalAptDeps(SourceSetType.MAIN)));
libraryAptDeps.addAll(targetsApt(target.getTargetAptDeps(SourceSetType.MAIN)));
Set<String> providedDeps = new HashSet<>();
providedDeps.addAll(external(target.getExternalProvidedDeps(SourceSetType.MAIN)));
providedDeps.addAll(targets(target.getTargetProvidedDeps(SourceSetType.MAIN)));
providedDeps.add(D8Manager.RT_STUB_JAR_RULE);
Set<String> libraryExportedDeps = new HashSet<>();
libraryExportedDeps.addAll(external(target.getExternalExportedDeps(SourceSetType.MAIN)));
libraryExportedDeps.addAll(targets(target.getTargetExportedDeps(SourceSetType.MAIN)));
libraryExportedDeps.addAll(aidlRuleNames);
List<String> testTargets = new ArrayList<>();
if (target.getRobolectricEnabled() && !target.getTest().getSources().isEmpty()) {
testTargets.add(":" + test(target));
}
if (target.getLibInstrumentationTarget() != null
&& !target.getLibInstrumentationTarget().getMain().getSources().isEmpty()) {
testTargets.add(":" + AndroidBuckRuleComposer.bin(target.getLibInstrumentationTarget()));
}
AndroidModuleRule unifiedAndroid =
new AndroidModuleRule()
.srcs(target.getMain().getSources())
.exts(target.getRuleType().getProperties())
.proguardConfig(target.getConsumerProguardConfig())
.apPlugins(getApPlugins(target.getApPlugins()))
.aptDeps(libraryAptDeps)
.providedDeps(providedDeps)
.exportedDeps(libraryExportedDeps)
.resources(target.getMain().getJavaResources())
.resDirs(target.getResDirs())
.sourceCompatibility(target.getSourceCompatibility())
.targetCompatibility(target.getTargetCompatibility())
.testTargets(testTargets)
.excludes(appClass != null ? ImmutableSet.of(appClass) : ImmutableSet.of())
.generateR2(target.getGenerateR2())
.options(target.getMain().getCustomOptions());
if (target.getLintEnabled()) {
String lintConfigPath;
if (target.getLintOptions() != null
&& target.getLintOptions().getLintConfig() != null
&& target.getLintOptions().getLintConfig().exists()) {
lintConfigPath =
FileUtil.getRelativePath(
target.getRootProject().getProjectDir(), target.getLintOptions().getLintConfig());
ProjectUtil.getPlugin(target.getRootProject()).exportedPaths.add(lintConfigPath);
} else {
lintConfigPath = null;
}
Set<String> customLintTargets =
target
.getLint()
.getTargetDeps()
.stream()
.filter(t -> (t instanceof JvmTarget))
.map(BuckRuleComposer::binTargets)
.collect(Collectors.toSet());
if (lintConfigPath != null) {
unifiedAndroid.lintConfigXml(fileRule(lintConfigPath));
}
unifiedAndroid.customLints(customLintTargets).lintOptions(target.getLintOptions());
} else {
unifiedAndroid.disableLint(true);
}
unifiedAndroid
.ruleType(target.getRuleType().getBuckName())
.defaultVisibility()
.deps(libraryDeps)
.name(src(target))
.extraBuckOpts(target.getExtraOpts(RuleType.ANDROID_LIBRARY));
// Manifest related arguments
unifiedAndroid
.manifestDebuggable(target.getDebuggable())
.manifestMinSdk(target.getMinSdk())
.manifestTargetSdk(target.getTargetSdk())
.manifestVersionCode(target.getVersionCode())
.manifestVersionName(target.getVersionName())
.manifestMainManifest(target.getMainManifest())
.manifestSecondaryManifests(target.getSecondaryManifests());
// Resource related arguments
return unifiedAndroid
.pkg(target.getResPackage())
.resRes(target.getResDirs())
.resProjectRes(target.getProjectResDir())
.resAssets(target.getAssetDirs())
.resResourceUnion(target.getOkbuck().useResourceUnion())
.resExtraDeps(extraResDeps);
}