From 97fa8ff2109a79c8857dcf68fc8b4d15156d70ee Mon Sep 17 00:00:00 2001 From: Skylot <118523+skylot@users.noreply.github.com> Date: Mon, 20 Apr 2026 19:17:42 +0100 Subject: [PATCH] fix: build correct file path for class from default package (#2854) --- jadx-cli/src/test/java/jadx/cli/TestInput.java | 8 ++++++++ jadx-cli/src/test/resources/samples/defpkg.smali | 2 ++ .../src/main/java/jadx/core/dex/info/ClassInfo.java | 9 ++++++--- 3 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 jadx-cli/src/test/resources/samples/defpkg.smali diff --git a/jadx-cli/src/test/java/jadx/cli/TestInput.java b/jadx-cli/src/test/java/jadx/cli/TestInput.java index 6b96c2081..a02d73112 100644 --- a/jadx-cli/src/test/java/jadx/cli/TestInput.java +++ b/jadx-cli/src/test/java/jadx/cli/TestInput.java @@ -73,4 +73,12 @@ public class TestInput extends BaseCliIntegrationTest { path -> path.getFileName().toString().equalsIgnoreCase("AndroidManifest.xml")); assertThat(files).isNotEmpty(); } + + @Test + public void testNoRenameForDefPkg() throws Exception { + int result = execJadxCli(buildArgs(List.of("--rename-flags", "none"), "samples/defpkg.smali")); + assertThat(result).isEqualTo(0); + List files = collectJavaFilesInDir(outputDir); + assertThat(files).hasSize(1); + } } diff --git a/jadx-cli/src/test/resources/samples/defpkg.smali b/jadx-cli/src/test/resources/samples/defpkg.smali new file mode 100644 index 000000000..20ee4595f --- /dev/null +++ b/jadx-cli/src/test/resources/samples/defpkg.smali @@ -0,0 +1,2 @@ +.class public LA; +.super Ljava/lang/Object; diff --git a/jadx-core/src/main/java/jadx/core/dex/info/ClassInfo.java b/jadx-core/src/main/java/jadx/core/dex/info/ClassInfo.java index d2122b4bb..acf8c6f0e 100644 --- a/jadx-core/src/main/java/jadx/core/dex/info/ClassInfo.java +++ b/jadx-core/src/main/java/jadx/core/dex/info/ClassInfo.java @@ -214,9 +214,12 @@ public final class ClassInfo implements Comparable { } public String getAliasFullPath() { - return getAliasPkg().replace('.', File.separatorChar) - + File.separatorChar - + getAliasNameWithoutPackage().replace('.', '_'); + String fileName = getAliasNameWithoutPackage().replace('.', '_'); + String aliasPkg = getAliasPkg(); + if (aliasPkg.isEmpty()) { + return fileName; + } + return aliasPkg.replace('.', File.separatorChar) + File.separatorChar + fileName; } public String getFullName() {