diff --git a/java/aar.go b/java/aar.go index b3239ba93..27dd38b3f 100644 --- a/java/aar.go +++ b/java/aar.go @@ -455,6 +455,11 @@ func (a *aapt) buildActions(ctx android.ModuleContext, opts aaptBuildActionOptio // as imports. The resources from dependencies will not be merged into this module's package-res.apk, and // instead modules depending on this module will reference package-res.apk from all transitive static // dependencies. + for _, sharedDep := range sharedDeps { + if sharedDep.usedResourceProcessor { + transitiveRJars = append(transitiveRJars, sharedDep.rJar) + } + } for _, staticDep := range staticDeps { linkDeps = append(linkDeps, staticDep.resPackage) linkFlags = append(linkFlags, "-I "+staticDep.resPackage.String()) @@ -462,11 +467,6 @@ func (a *aapt) buildActions(ctx android.ModuleContext, opts aaptBuildActionOptio transitiveRJars = append(transitiveRJars, staticDep.rJar) } } - for _, sharedDep := range sharedDeps { - if sharedDep.usedResourceProcessor { - transitiveRJars = append(transitiveRJars, sharedDep.rJar) - } - } } else { // When building an app or building a library without ResourceProcessorBusyBox enabled all static // dependencies are compiled into this module's package-res.apk as overlays. @@ -556,6 +556,10 @@ func (a *aapt) buildActions(ctx android.ModuleContext, opts aaptBuildActionOptio transitiveAaptResourcePackagesFile := android.PathForModuleOut(ctx, "transitive-res-packages") android.WriteFileRule(ctx, transitiveAaptResourcePackagesFile, strings.Join(transitiveAaptResourcePackages, "\n")) + // Reverse the list of R.jar files so that the current module comes first, and direct dependencies come before + // transitive dependencies. + transitiveRJars = android.ReversePaths(transitiveRJars) + a.aaptSrcJar = srcJar a.transitiveAaptRJars = transitiveRJars a.transitiveAaptResourcePackagesFile = transitiveAaptResourcePackagesFile diff --git a/java/app_test.go b/java/app_test.go index 28bea0a2b..5d7b048b3 100644 --- a/java/app_test.go +++ b/java/app_test.go @@ -948,10 +948,10 @@ func TestAndroidResourceProcessor(t *testing.T) { directSrcJars: nil, directClasspath: []string{ "out/soong/.intermediates/default/java/android_stubs_current/android_common/turbine-combined/android_stubs_current.jar", - "out/soong/.intermediates/transitive_import/android_common/busybox/R.jar", - "out/soong/.intermediates/transitive_import_dep/android_common/busybox/R.jar", - "out/soong/.intermediates/transitive/android_common/busybox/R.jar", "out/soong/.intermediates/direct/android_common/busybox/R.jar", + "out/soong/.intermediates/transitive/android_common/busybox/R.jar", + "out/soong/.intermediates/transitive_import_dep/android_common/busybox/R.jar", + "out/soong/.intermediates/transitive_import/android_common/busybox/R.jar", "out/soong/.intermediates/transitive/android_common/turbine-combined/transitive.jar", "out/soong/.intermediates/transitive_import/android_common/aar/classes-combined.jar", }, @@ -981,9 +981,9 @@ func TestAndroidResourceProcessor(t *testing.T) { sharedSrcJars: nil, sharedClasspath: []string{ "out/soong/.intermediates/default/java/android_stubs_current/android_common/turbine-combined/android_stubs_current.jar", + "out/soong/.intermediates/shared/android_common/busybox/R.jar", "out/soong/.intermediates/shared_transitive_static/android_common/busybox/R.jar", "out/soong/.intermediates/shared_transitive_shared/android_common/busybox/R.jar", - "out/soong/.intermediates/shared/android_common/busybox/R.jar", "out/soong/.intermediates/shared_transitive_shared/android_common/turbine-combined/shared_transitive_shared.jar", "out/soong/.intermediates/shared_transitive_static/android_common/turbine-combined/shared_transitive_static.jar", }, @@ -1094,9 +1094,9 @@ func TestAndroidResourceProcessor(t *testing.T) { directSrcJars: nil, directClasspath: []string{ "out/soong/.intermediates/default/java/android_stubs_current/android_common/turbine-combined/android_stubs_current.jar", - "out/soong/.intermediates/transitive_import/android_common/busybox/R.jar", - "out/soong/.intermediates/transitive_import_dep/android_common/busybox/R.jar", "out/soong/.intermediates/direct/android_common/busybox/R.jar", + "out/soong/.intermediates/transitive_import_dep/android_common/busybox/R.jar", + "out/soong/.intermediates/transitive_import/android_common/busybox/R.jar", "out/soong/.intermediates/transitive/android_common/turbine-combined/transitive.jar", "out/soong/.intermediates/transitive_import/android_common/aar/classes-combined.jar", },