aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar corysmith <corysmith@google.com>2018-04-19 09:16:09 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-04-19 09:17:29 -0700
commitdecb8be0e30355d4fba1987d43f4870a3822fd5b (patch)
tree7056f73d41ad38efbed9645906e180b457237050 /src
parentd8dfd7882585fafc2be60d42ae996a4a536ac469 (diff)
Add the --pseudo-localize flag to resource compilation, gated by the --generatePseudoLocale flag.
Cleaned up the CompileLIbraryResourcesAction to use the Aapt2ConfigOptions. RELNOTES: PiperOrigin-RevId: 193525850
Diffstat (limited to 'src')
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/Aapt2ResourcePackagingAction.java13
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/Aapt2ResourceShrinkingAction.java3
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/CompileLibraryResourcesAction.java38
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/aapt2/Aapt2ConfigOptions.java10
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/aapt2/ResourceCompiler.java66
5 files changed, 64 insertions, 66 deletions
diff --git a/src/tools/android/java/com/google/devtools/build/android/Aapt2ResourcePackagingAction.java b/src/tools/android/java/com/google/devtools/build/android/Aapt2ResourcePackagingAction.java
index 61b1634325..eace6b6dda 100644
--- a/src/tools/android/java/com/google/devtools/build/android/Aapt2ResourcePackagingAction.java
+++ b/src/tools/android/java/com/google/devtools/build/android/Aapt2ResourcePackagingAction.java
@@ -117,12 +117,13 @@ public class Aapt2ResourcePackagingAction {
profiler.startTask("compile");
- final ResourceCompiler compiler =
- ResourceCompiler.create(
- executorService,
- compiledResources,
- aaptConfigOptions.aapt2,
- aaptConfigOptions.buildToolsVersion);
+ final ResourceCompiler compiler =
+ ResourceCompiler.create(
+ executorService,
+ compiledResources,
+ aaptConfigOptions.aapt2,
+ aaptConfigOptions.buildToolsVersion,
+ aaptConfigOptions.generatePseudoLocale);
CompiledResources compiled =
options
diff --git a/src/tools/android/java/com/google/devtools/build/android/Aapt2ResourceShrinkingAction.java b/src/tools/android/java/com/google/devtools/build/android/Aapt2ResourceShrinkingAction.java
index 79a1e78ba3..d515fbbe3b 100644
--- a/src/tools/android/java/com/google/devtools/build/android/Aapt2ResourceShrinkingAction.java
+++ b/src/tools/android/java/com/google/devtools/build/android/Aapt2ResourceShrinkingAction.java
@@ -76,7 +76,8 @@ public class Aapt2ResourceShrinkingAction {
executorService,
workingResourcesDirectory,
aapt2ConfigOptions.aapt2,
- aapt2ConfigOptions.buildToolsVersion);
+ aapt2ConfigOptions.buildToolsVersion,
+ aapt2ConfigOptions.generatePseudoLocale);
profiler.recordEndOf("setup").startTask("compile");
final ResourcesZip resourcesZip =
diff --git a/src/tools/android/java/com/google/devtools/build/android/CompileLibraryResourcesAction.java b/src/tools/android/java/com/google/devtools/build/android/CompileLibraryResourcesAction.java
index ea0306ba40..9b95e54312 100644
--- a/src/tools/android/java/com/google/devtools/build/android/CompileLibraryResourcesAction.java
+++ b/src/tools/android/java/com/google/devtools/build/android/CompileLibraryResourcesAction.java
@@ -14,12 +14,11 @@
package com.google.devtools.build.android;
-import com.android.repository.Revision;
import com.google.common.base.Preconditions;
import com.google.devtools.build.android.Converters.ExistingPathConverter;
import com.google.devtools.build.android.Converters.PathConverter;
-import com.google.devtools.build.android.Converters.RevisionConverter;
import com.google.devtools.build.android.Converters.UnvalidatedAndroidDirectoriesConverter;
+import com.google.devtools.build.android.aapt2.Aapt2ConfigOptions;
import com.google.devtools.build.android.aapt2.ResourceCompiler;
import com.google.devtools.common.options.Option;
import com.google.devtools.common.options.OptionDocumentationCategory;
@@ -62,28 +61,6 @@ public class CompileLibraryResourcesAction {
@Option(
documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
effectTags = {OptionEffectTag.UNKNOWN},
- name = "aapt2",
- defaultValue = "null",
- converter = ExistingPathConverter.class,
- category = "tool",
- help = "Aapt2 tool location for resource compilation."
- )
- public Path aapt2;
-
- @Option(
- documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
- effectTags = {OptionEffectTag.UNKNOWN},
- name = "buildToolsVersion",
- defaultValue = "null",
- converter = RevisionConverter.class,
- category = "config",
- help = "Version of the build tools (e.g. aapt) being used, e.g. 23.0.2"
- )
- public Revision buildToolsVersion;
-
- @Option(
- documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
- effectTags = {OptionEffectTag.UNKNOWN},
name = "packagePath",
defaultValue = "null",
category = "input",
@@ -118,21 +95,24 @@ public class CompileLibraryResourcesAction {
+ " This value is required for processing data binding."
)
public Path dataBindingInfoOut;
+
}
static final Logger logger = Logger.getLogger(CompileLibraryResourcesAction.class.getName());
public static void main(String[] args) throws Exception {
- OptionsParser optionsParser = OptionsParser.newOptionsParser(Options.class);
+ OptionsParser optionsParser =
+ OptionsParser.newOptionsParser(Options.class, Aapt2ConfigOptions.class);
optionsParser.enableParamsFileSupport(
new ShellQuotedParamsFilePreProcessor(FileSystems.getDefault()));
optionsParser.parseAndExitUponError(args);
Options options = optionsParser.getOptions(Options.class);
+ Aapt2ConfigOptions aapt2Options = optionsParser.getOptions(Aapt2ConfigOptions.class);
Preconditions.checkNotNull(options.resources);
Preconditions.checkNotNull(options.output);
- Preconditions.checkNotNull(options.aapt2);
+ Preconditions.checkNotNull(aapt2Options.aapt2);
try (ExecutorServiceCloser executorService = ExecutorServiceCloser.createWithFixedPoolOf(15);
ScopedTemporaryDirectory scopedTmp =
@@ -144,7 +124,11 @@ public class CompileLibraryResourcesAction {
final ResourceCompiler compiler =
ResourceCompiler.create(
- executorService, compiledResources, options.aapt2, options.buildToolsVersion);
+ executorService,
+ compiledResources,
+ aapt2Options.aapt2,
+ aapt2Options.buildToolsVersion,
+ aapt2Options.generatePseudoLocale);
options
.resources
.toData(options.manifest)
diff --git a/src/tools/android/java/com/google/devtools/build/android/aapt2/Aapt2ConfigOptions.java b/src/tools/android/java/com/google/devtools/build/android/aapt2/Aapt2ConfigOptions.java
index c96bd8fc75..3a9aca84c3 100644
--- a/src/tools/android/java/com/google/devtools/build/android/aapt2/Aapt2ConfigOptions.java
+++ b/src/tools/android/java/com/google/devtools/build/android/aapt2/Aapt2ConfigOptions.java
@@ -175,4 +175,14 @@ public class Aapt2ConfigOptions extends OptionsBase {
help = "Generate the resource table as a protocol buffer."
)
public boolean resourceTableAsProto;
+
+ @Option(
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.UNKNOWN},
+ name = "generatePseudoLocale",
+ defaultValue = "false",
+ category = "config",
+ help = "Whether to generate pseudo locales during compilation."
+ )
+ public boolean generatePseudoLocale;
}
diff --git a/src/tools/android/java/com/google/devtools/build/android/aapt2/ResourceCompiler.java b/src/tools/android/java/com/google/devtools/build/android/aapt2/ResourceCompiler.java
index 4d7bb6a492..b845536e21 100644
--- a/src/tools/android/java/com/google/devtools/build/android/aapt2/ResourceCompiler.java
+++ b/src/tools/android/java/com/google/devtools/build/android/aapt2/ResourceCompiler.java
@@ -82,16 +82,19 @@ public class ResourceCompiler {
private final Path compiledResourcesOut;
private final Path aapt2;
private final Revision buildToolsVersion;
+ private final boolean generatePseudoLocale;
private CompileTask(
Path file,
Path compiledResourcesOut,
Path aapt2,
- Revision buildToolsVersion) {
+ Revision buildToolsVersion,
+ boolean generatePseudoLocale) {
this.file = file;
this.compiledResourcesOut = compiledResourcesOut;
this.aapt2 = aapt2;
this.buildToolsVersion = buildToolsVersion;
+ this.generatePseudoLocale = generatePseudoLocale;
}
@Override
@@ -103,6 +106,8 @@ public class ResourceCompiler {
.add("compile")
.add("-v")
.add("--legacy")
+ .when(generatePseudoLocale)
+ .thenAdd("--pseudo-localize")
.add("-o", compiledResourcesOut.toString())
.add(file.toString())
.execute("Compiling " + file));
@@ -150,8 +155,7 @@ public class ResourceCompiler {
XmlResourceValues.iterateAttributesFrom(rootElement);
if (attributeIterator.hasNext()) {
- results.add(
- createAttributesProto(type, filename, attributeIterator));
+ results.add(createAttributesProto(type, filename, attributeIterator));
}
} finally {
if (xmlEventReader != null) {
@@ -171,10 +175,7 @@ public class ResourceCompiler {
}
private Path createAttributesProto(
- String type,
- String filename,
- Iterator<Attribute> attributeIterator)
- throws IOException {
+ String type, String filename, Iterator<Attribute> attributeIterator) throws IOException {
AndroidDataSerializer serializer = AndroidDataSerializer.create();
final Path resourcesAttributesPath =
@@ -188,10 +189,7 @@ public class ResourceCompiler {
QName qName = new QName(namespaceUri, localPart, prefix);
Namespaces namespaces = Namespaces.from(qName);
- String attributeName =
- namespaceUri.isEmpty()
- ? localPart
- : prefix + ":" + localPart;
+ String attributeName = namespaceUri.isEmpty() ? localPart : prefix + ":" + localPart;
final String[] dirNameAndQualifiers = type.split(SdkConstants.RES_QUALIFIER_SEP);
Factory fqnFactory = Factory.fromDirectoryName(dirNameAndQualifiers);
@@ -222,16 +220,19 @@ public class ResourceCompiler {
private final List<ListenableFuture<List<Path>>> tasks = new ArrayList<>();
private final Path aapt2;
private final Revision buildToolsVersion;
+ private final boolean generatePseudoLocale;
public CompilingVisitor(
ListeningExecutorService executorService,
Path compiledResources,
Path aapt2,
- Revision buildToolsVersion) {
+ Revision buildToolsVersion,
+ boolean generatePseudoLocale) {
this.executorService = executorService;
this.compiledResources = compiledResources;
this.aapt2 = aapt2;
this.buildToolsVersion = buildToolsVersion;
+ this.generatePseudoLocale = generatePseudoLocale;
}
@Override
@@ -240,39 +241,38 @@ public class ResourceCompiler {
if (!Files.isDirectory(file) && !file.getFileName().toString().startsWith(".")) {
// Creates a relative output path based on the input path under the
// compiledResources path.
- Path outputDirectory = Files.createDirectories(
- compiledResources.resolve(
- (file.isAbsolute() ? file.getRoot().relativize(file) : file)
- .getParent()
- .getParent()));
+ Path outputDirectory =
+ Files.createDirectories(
+ compiledResources.resolve(
+ (file.isAbsolute() ? file.getRoot().relativize(file) : file)
+ .getParent()
+ .getParent()));
String resFolder = file.getParent().getFileName().toString().toLowerCase();
// Aapt cannot interpret these regions so we rename them to get them to compile
- String renamedResFolder = resFolder
- .replaceFirst("sr[_\\-]r?latn", "b+sr+Latn")
- .replaceFirst("es[_\\-]r?419", "b+es+419");
+ String renamedResFolder =
+ resFolder
+ .replaceFirst("sr[_\\-]r?latn", "b+sr+Latn")
+ .replaceFirst("es[_\\-]r?419", "b+es+419");
if (!renamedResFolder.equals(resFolder)) {
- file = Files.copy(
- file,
- Files.createDirectories(
- outputDirectory.resolve(renamedResFolder))
- .resolve(file.getFileName()));
+ file =
+ Files.copy(
+ file,
+ Files.createDirectories(outputDirectory.resolve(renamedResFolder))
+ .resolve(file.getFileName()));
}
tasks.add(
executorService.submit(
new CompileTask(
- file,
- outputDirectory,
- aapt2,
- buildToolsVersion)));
+ file, outputDirectory, aapt2, buildToolsVersion, generatePseudoLocale)));
}
return super.visitFile(file, attrs);
}
- List<Path> getCompiledArtifacts() throws InterruptedException, ExecutionException {
+ List<Path> getCompiledArtifacts() {
Builder<Path> builder = ImmutableList.builder();
List<Throwable> compilationErrors = new ArrayList<>();
for (ListenableFuture<List<Path>> task : tasks) {
@@ -294,9 +294,11 @@ public class ResourceCompiler {
ListeningExecutorService executorService,
Path compiledResources,
Path aapt2,
- Revision buildToolsVersion) {
+ Revision buildToolsVersion,
+ boolean generatePseudoLocale) {
return new ResourceCompiler(
- new CompilingVisitor(executorService, compiledResources, aapt2, buildToolsVersion));
+ new CompilingVisitor(
+ executorService, compiledResources, aapt2, buildToolsVersion, generatePseudoLocale));
}
private ResourceCompiler(CompilingVisitor compilingVisitor) {