Stop writing unused symbols.bin in Aapt2ResourcePackagingAction The AAPT2 packaging action previously declared and wrote an out_symbols file (merged.bin) that was never actually read or packaged anywhere. This change stops generating the file entirely and removes the dead starlark parameters and java code that mapped to it. out_symbols was used during the AAPT1 era. PiperOrigin-RevId: 981855694 Change-Id: Ia996d82a2aba0dd2eb407659070eb90eca889615
diff --git a/rules/android_application/android_application_rule.bzl b/rules/android_application/android_application_rule.bzl index 8f7b764..47a7dc4 100644 --- a/rules/android_application/android_application_rule.bzl +++ b/rules/android_application/android_application_rule.bzl
@@ -115,7 +115,6 @@ ctx, out_r_src_jar = ctx.actions.declare_file("R.srcjar", sibling = manifest), out_r_txt = ctx.actions.declare_file("R.txt", sibling = manifest), - out_symbols = ctx.actions.declare_file("merged.bin", sibling = manifest), out_manifest = ctx.actions.declare_file("AndroidManifest_processed.xml", sibling = manifest), out_proguard_cfg = ctx.actions.declare_file("proguard.cfg", sibling = manifest), out_main_dex_proguard_cfg = ctx.actions.declare_file(
diff --git a/rules/android_local_test/impl.bzl b/rules/android_local_test/impl.bzl index a6094cd..9983d8a 100644 --- a/rules/android_local_test/impl.bzl +++ b/rules/android_local_test/impl.bzl
@@ -116,7 +116,6 @@ java_package = java_package, shrink_resources = attrs.tristate.no, build_java_with_final_resources = True, - generate_out_symbols = False, generate_resource_files_zip = False, crunch_png = False, aapt = get_android_toolchain(ctx).aapt2.files_to_run,
diff --git a/rules/busybox.bzl b/rules/busybox.bzl index 41c3e49..b232183 100644 --- a/rules/busybox.bzl +++ b/rules/busybox.bzl
@@ -206,7 +206,6 @@ ctx, out_r_src_jar = None, out_r_txt = None, - out_symbols = None, out_manifest = None, out_proguard_cfg = None, out_main_dex_proguard_cfg = None, @@ -253,7 +252,6 @@ ctx: The context. out_r_src_jar: A File. The R.java outputted by linking resources in a srcjar. out_r_txt: A File. The resource IDs outputted by linking resources in text. - out_symbols: A File. The output zip containing compiled resources. out_manifest: A File. The output processed manifest. out_proguard_cfg: A File. The proguard config to be generated. out_main_dex_proguard_cfg: A File. The main dex proguard config to be generated. @@ -380,9 +378,6 @@ input_files.append(android_jar) args.add("--rOutput", out_r_txt) output_files.append(out_r_txt) - if out_symbols: - args.add("--symbolsOut", out_symbols) - output_files.append(out_symbols) args.add("--srcJarOutput", out_r_src_jar) output_files.append(out_r_src_jar) if out_proguard_cfg:
diff --git a/rules/resources.bzl b/rules/resources.bzl index 0362cc2..97c6588 100644 --- a/rules/resources.bzl +++ b/rules/resources.bzl
@@ -496,7 +496,6 @@ should_compile_java_srcs = True, generate_minsdk_proguard_config = False, build_java_with_final_resources = False, - generate_out_symbols = True, generate_resource_files_zip = True, feature_flags = "", crunch_png = True, @@ -568,7 +567,6 @@ non-final resources for linking against when building any srcs. This is generally only desirable for test targets that aren't potentially running compile-time optimizations. - generate_out_symbols: boolean. Whether to generate the merged symbols binary file. generate_resource_files_zip: boolean. Whether to generate resource_files.zip. feature_flags: string. The string value for --feature-flags to pass to aapt2. crunch_png: boolean. Determines whether `aapt2 compile` should crunch PNG files. @@ -743,13 +741,11 @@ resource_files_zip = ctx.actions.declare_file( "_migrated/" + ctx.label.name + "_files/resource_files.zip", ) if generate_resource_files_zip else None - out_symbols = ctx.actions.declare_file("_migrated/" + ctx.label.name + "_symbols/merged.bin") if generate_out_symbols else None _busybox.package( ctx, out_file = resource_apk, out_r_src_jar = r_java, out_r_txt = r_txt, - out_symbols = out_symbols, out_manifest = processed_manifest, out_proguard_cfg = proguard_cfg, out_main_dex_proguard_cfg = main_dex_proguard_cfg,
diff --git a/src/tools/java/com/google/devtools/build/android/Aapt2ResourcePackagingAction.java b/src/tools/java/com/google/devtools/build/android/Aapt2ResourcePackagingAction.java index fde9a60..b1ac356 100644 --- a/src/tools/java/com/google/devtools/build/android/Aapt2ResourcePackagingAction.java +++ b/src/tools/java/com/google/devtools/build/android/Aapt2ResourcePackagingAction.java
@@ -149,13 +149,17 @@ description = "Path to where the R.txt should be written.") public Path rOutput; + @Deprecated @Parameter( names = { "--symbolsOut", "--symbolsTxtOut" // The old name of the flag. }, + hidden = true, converter = CompatPathConverter.class, - description = "Path to where the symbols should be written.") + description = + "[DEPRECATED] Path to where the symbols should be written. The symbols are no longer" + + " computed; an empty file is written to this path.") public Path symbolsOut; @Parameter( @@ -285,7 +289,6 @@ final Path tmp = scopedTmp.getPath(); final Path densityManifest = tmp.resolve("manifest-filtered/AndroidManifest.xml"); final Path processedManifest = tmp.resolve("manifest-processed/AndroidManifest.xml"); - final Path symbols = tmp.resolve("symbols/symbols.bin"); final Path databindingResourcesRoot = Files.createDirectories(tmp.resolve("android_data_binding_resources")); final Path compiledResources = Files.createDirectories(tmp.resolve("compiled")); @@ -327,34 +330,34 @@ .process(manifest)); profiler.recordEndOf("compile").startTask("merge"); - if (options.throwOnResourceConflict || options.symbolsOut != null) { - // Checks for merge conflicts, and write the merged data out. This only happens when - // --throwOnResourceConflict or --symbolsOut is specified. - final Path symbolsBin = - AndroidResourceMerger.mergeDataToSymbols( - ParsedAndroidData.loadedFrom( - DependencyInfo.DependencyType.PRIMARY, - ImmutableList.of(SerializedAndroidData.from(compiled)), - executorService, - dataDeserializer), - new DensitySpecificManifestProcessor(options.densities, densityManifest) - .process(options.primaryData.getManifest()), - ImmutableList.<SerializedAndroidData>builder() - .addAll(options.directData) - .addAll(options.directAssets) - .build(), - ImmutableList.<SerializedAndroidData>builder() - .addAll(options.transitiveData) - .addAll(options.transitiveAssets) - .build(), - options.packageType, - symbols, - dataDeserializer, - options.throwOnResourceConflict, - executorService); - if (options.symbolsOut != null) { - Files.copy(symbolsBin, options.symbolsOut); - } + if (options.throwOnResourceConflict) { + // Checks for merge conflicts. + AndroidResourceMerger.checkForResourceConflicts( + ParsedAndroidData.loadedFrom( + DependencyInfo.DependencyType.PRIMARY, + ImmutableList.of(SerializedAndroidData.from(compiled)), + executorService, + dataDeserializer), + compiled.getManifest(), + ImmutableList.<SerializedAndroidData>builder() + .addAll(options.directData) + .addAll(options.directAssets) + .build(), + ImmutableList.<SerializedAndroidData>builder() + .addAll(options.transitiveData) + .addAll(options.transitiveAssets) + .build(), + options.packageType, + dataDeserializer, + options.throwOnResourceConflict, + executorService); + } + + // `symbolsOut` is obsolete and will be removed after the next android_rules release. + // Until then, it is still necessary to write an empty file as it may be a starlark declared + // output. + if (options.symbolsOut != null) { + Files.write(options.symbolsOut, new byte[0]); } profiler.recordEndOf("merge").startTask("link");
diff --git a/src/tools/java/com/google/devtools/build/android/AndroidResourceMerger.java b/src/tools/java/com/google/devtools/build/android/AndroidResourceMerger.java index 6583038..946b76f 100644 --- a/src/tools/java/com/google/devtools/build/android/AndroidResourceMerger.java +++ b/src/tools/java/com/google/devtools/build/android/AndroidResourceMerger.java
@@ -31,22 +31,21 @@ // TODO(bazel-team): Turn into an instance object, in order to use an external ExecutorService. public class AndroidResourceMerger { - /** Performs a merge of compiled android data. */ - static Path mergeDataToSymbols( + /** Performs a merge of compiled android data to check for conflicts. */ + static void checkForResourceConflicts( ParsedAndroidData primary, Path manifest, ImmutableList<SerializedAndroidData> direct, ImmutableList<SerializedAndroidData> transitive, VariantTypeImpl packageType, - Path symbolsOut, AndroidCompiledDataDeserializer deserializer, boolean throwOnResourceConflict, - ExecutorServiceCloser executorService) - throws IOException { + ExecutorServiceCloser executorService) { AndroidDataMerger merger = AndroidDataMerger.createWithPathDeduplictor( executorService, deserializer, AndroidDataMerger.NoopSourceChecker.create()); - final UnwrittenMergedAndroidData merged = + // The merge is run purely for its conflict-detection side effect; the merged data is discarded. + UnwrittenMergedAndroidData unused = merger.loadAndMerge( transitive, direct, @@ -54,10 +53,6 @@ manifest, packageType.equals(VariantTypeImpl.BASE_APK), throwOnResourceConflict); - AndroidDataSerializer serializer = AndroidDataSerializer.create(); - merged.serializeTo(serializer); - serializer.flushTo(symbolsOut); - return symbolsOut; } /** Thrown when there is a unexpected condition during merging. */