diff --git a/android/paths.go b/android/paths.go index 87efe5340..91dd9a6d2 100644 --- a/android/paths.go +++ b/android/paths.go @@ -308,6 +308,18 @@ func LastUniquePaths(list Paths) Paths { return list[totalSkip:] } +// ReversePaths returns a copy of a Paths in reverse order. +func ReversePaths(list Paths) Paths { + if list == nil { + return nil + } + ret := make(Paths, len(list)) + for i := range list { + ret[i] = list[len(list)-1-i] + } + return ret +} + func indexPathList(s Path, list []Path) int { for i, l := range list { if l == s { diff --git a/android/paths_test.go b/android/paths_test.go index 00757985b..cd9fbfd54 100644 --- a/android/paths_test.go +++ b/android/paths_test.go @@ -474,10 +474,7 @@ func TestDirectorySortedPaths(t *testing.T) { } paths := makePaths() - reversePaths := make(Paths, len(paths)) - for i, v := range paths { - reversePaths[len(paths)-i-1] = v - } + reversePaths := ReversePaths(paths) sortedPaths := PathsToDirectorySortedPaths(paths) reverseSortedPaths := PathsToDirectorySortedPaths(reversePaths) diff --git a/java/androidmk.go b/java/androidmk.go index dfbe7fa75..8bde716bb 100644 --- a/java/androidmk.go +++ b/java/androidmk.go @@ -206,7 +206,9 @@ func (app *AndroidApp) AndroidMk() android.AndroidMkData { } if len(app.rroDirs) > 0 { - fmt.Fprintln(w, "LOCAL_SOONG_RRO_DIRS :=", strings.Join(app.rroDirs.Strings(), " ")) + // Reverse the order, Soong stores rroDirs in aapt2 order (low to high priority), but Make + // expects it in LOCAL_RESOURCE_DIRS order (high to low priority). + fmt.Fprintln(w, "LOCAL_SOONG_RRO_DIRS :=", strings.Join(android.ReversePaths(app.rroDirs).Strings(), " ")) } if Bool(app.appProperties.Export_package_resources) {