aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/tools/android/java/com/google/devtools/build/android/RClassGeneratorAction.java
diff options
context:
space:
mode:
authorGravatar corysmith <corysmith@google.com>2017-04-14 21:31:43 +0200
committerGravatar Klaus Aehlig <aehlig@google.com>2017-04-18 11:28:00 +0200
commitf87b7080a399906bdf9b3a1ecdf8694eca22498e (patch)
treea2ff63c06a4122090feb81b125b4697d0e87373a /src/tools/android/java/com/google/devtools/build/android/RClassGeneratorAction.java
parent4c8959092b44ab1359f2e2ddd0a7552baadc35b8 (diff)
Teach the RClassGenerator to merge all library symbols and reconcile ids.
Refactoring: Wrapped the SymbolLoader and SymbolWriter in a single class. RELNOTES: None PiperOrigin-RevId: 153194543
Diffstat (limited to 'src/tools/android/java/com/google/devtools/build/android/RClassGeneratorAction.java')
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/RClassGeneratorAction.java33
1 files changed, 18 insertions, 15 deletions
diff --git a/src/tools/android/java/com/google/devtools/build/android/RClassGeneratorAction.java b/src/tools/android/java/com/google/devtools/build/android/RClassGeneratorAction.java
index 1e97859311..6ed0d8ff05 100644
--- a/src/tools/android/java/com/google/devtools/build/android/RClassGeneratorAction.java
+++ b/src/tools/android/java/com/google/devtools/build/android/RClassGeneratorAction.java
@@ -15,7 +15,6 @@ package com.google.devtools.build.android;
import com.android.builder.core.VariantConfiguration;
import com.android.builder.dependency.SymbolFileProvider;
-import com.android.builder.internal.SymbolLoader;
import com.android.utils.StdLogger;
import com.google.common.base.Preconditions;
import com.google.common.base.Stopwatch;
@@ -23,14 +22,13 @@ import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Multimap;
import com.google.devtools.build.android.Converters.DependencySymbolFileProviderListConverter;
import com.google.devtools.build.android.Converters.PathConverter;
+import com.google.devtools.build.android.resources.ResourceSymbols;
import com.google.devtools.common.options.Option;
import com.google.devtools.common.options.OptionsBase;
import com.google.devtools.common.options.OptionsParser;
-import java.nio.charset.StandardCharsets;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
-import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
@@ -106,11 +104,6 @@ public class RClassGeneratorAction {
final Stopwatch timer = Stopwatch.createStarted();
OptionsParser optionsParser = OptionsParser.newOptionsParser(Options.class);
optionsParser.enableParamsFileSupport(FileSystems.getDefault());
- if (args.length == 1 && args[0].startsWith("@")) {
- args = Files.readAllLines(Paths.get(args[0].substring(1)), StandardCharsets.UTF_8)
- .toArray(new String[0]);
- }
-
optionsParser.parseAndExitUponError(args);
Options options = optionsParser.getOptions(Options.class);
Preconditions.checkNotNull(options.classJarOutput);
@@ -133,18 +126,28 @@ public class RClassGeneratorAction {
appPackageName = VariantConfiguration
.getManifestPackage(options.primaryManifest.toFile());
}
- Multimap<String, SymbolLoader> libSymbolMap = ArrayListMultimap.create();
- SymbolLoader fullSymbolValues = resourceProcessor.loadResourceSymbolTable(
- libraries, appPackageName, options.primaryRTxt, libSymbolMap);
+ Multimap<String, ResourceSymbols> libSymbolMap = ArrayListMultimap.create();
+ ResourceSymbols fullSymbolValues =
+ resourceProcessor.loadResourceSymbolTable(
+ libraries, appPackageName, options.primaryRTxt, libSymbolMap);
logger.fine(
String.format("Load symbols finished at %sms", timer.elapsed(TimeUnit.MILLISECONDS)));
// For now, assuming not used for libraries and setting final access for fields.
- if (fullSymbolValues != null) {
resourceProcessor.writePackageRClasses(libSymbolMap, fullSymbolValues, appPackageName,
classOutPath, true /* finalFields */);
- logger.fine(
- String.format("Finished R.class at %sms", timer.elapsed(TimeUnit.MILLISECONDS)));
- }
+ logger.fine(
+ String.format("Finished R.class at %sms", timer.elapsed(TimeUnit.MILLISECONDS)));
+ } else if (!libraries.isEmpty()) {
+ Multimap<String, ResourceSymbols> libSymbolMap = ArrayListMultimap.create();
+ ResourceSymbols fullSymbolValues =
+ resourceProcessor.loadResourceSymbolTable(libraries, null, null, libSymbolMap);
+ logger.fine(
+ String.format("Load symbols finished at %sms", timer.elapsed(TimeUnit.MILLISECONDS)));
+ // For now, assuming not used for libraries and setting final access for fields.
+ resourceProcessor.writePackageRClasses(
+ libSymbolMap, fullSymbolValues, null, classOutPath, true /* finalFields */);
+ logger.fine(
+ String.format("Finished R.class at %sms", timer.elapsed(TimeUnit.MILLISECONDS)));
} else {
Files.createDirectories(classOutPath);
}