gogio: load module-root Android jars

This commit is contained in:
Joe Julian
2026-04-16 21:03:09 -07:00
parent f71579e799
commit 7b5a6b418c
2 changed files with 33 additions and 5 deletions
+12 -4
View File
@@ -117,6 +117,7 @@ func buildAndroid(tmpDir string, bi *buildInfo) error {
if err != nil {
return err
}
moduleRoot := moduleRootForDir(bi.pkgDir)
var extraJars []string
visitedPkgs := make(map[string]bool)
var visitPkg func(*packages.Package) error
@@ -125,7 +126,7 @@ func buildAndroid(tmpDir string, bi *buildInfo) error {
return nil
}
dir := filepath.Dir(p.GoFiles[0])
jars, err := androidExtraJars(dir)
jars, err := androidExtraJars(dir, moduleRoot)
if err != nil {
return err
}
@@ -825,12 +826,19 @@ func copyTree(src, dst string) error {
})
}
func androidExtraJars(dir string) ([]string, error) {
func androidExtraJars(dir, moduleRoot string) ([]string, error) {
var jars []string
for _, pattern := range []string{
patterns := []string{
filepath.Join(dir, "*.jar"),
filepath.Join(dir, "android", "*.jar"),
} {
}
if moduleRoot != "" && moduleRoot != dir {
patterns = append(patterns,
filepath.Join(moduleRoot, "*.jar"),
filepath.Join(moduleRoot, "android", "*.jar"),
)
}
for _, pattern := range patterns {
matches, err := filepath.Glob(pattern)
if err != nil {
return nil, err
+21 -1
View File
@@ -18,7 +18,7 @@ func TestAndroidExtraJarsIncludesAndroidSubdirectory(t *testing.T) {
writeTestFile(t, rootJar, "root")
writeTestFile(t, androidJar, "android")
got, err := androidExtraJars(dir)
got, err := androidExtraJars(dir, dir)
if err != nil {
t.Fatalf("androidExtraJars() error = %v", err)
}
@@ -30,6 +30,26 @@ func TestAndroidExtraJarsIncludesAndroidSubdirectory(t *testing.T) {
}
}
func TestAndroidExtraJarsIncludesModuleRootAndroidSubdirectory(t *testing.T) {
t.Parallel()
root := t.TempDir()
dir := filepath.Join(root, "cmd", "keepassgo")
if err := os.MkdirAll(dir, 0o755); err != nil {
t.Fatalf("MkdirAll(%q) error = %v", dir, err)
}
moduleAndroidJar := filepath.Join(root, "android", "keepassgo-android.jar")
writeTestFile(t, moduleAndroidJar, "module-android")
got, err := androidExtraJars(dir, root)
if err != nil {
t.Fatalf("androidExtraJars() error = %v", err)
}
if !containsString(got, moduleAndroidJar) {
t.Fatalf("androidExtraJars() = %v, want %q included", got, moduleAndroidJar)
}
}
func TestRenderAndroidManifestIncludesOptionalSnippets(t *testing.T) {
t.Parallel()