diff --git a/jadx-core/src/main/java/jadx/core/export/ExportGradleProject.java b/jadx-core/src/main/java/jadx/core/export/ExportGradleProject.java index 3850d34ee..d5bb19752 100644 --- a/jadx-core/src/main/java/jadx/core/export/ExportGradleProject.java +++ b/jadx-core/src/main/java/jadx/core/export/ExportGradleProject.java @@ -6,6 +6,7 @@ import java.io.StringReader; import java.util.Arrays; import java.util.HashSet; import java.util.Set; +import java.util.regex.Pattern; import javax.xml.parsers.DocumentBuilder; @@ -29,6 +30,8 @@ public class ExportGradleProject { private static final Logger LOG = LoggerFactory.getLogger(ExportGradleProject.class); + private static final Pattern ILLEGAL_GRADLE_CHARS = Pattern.compile("[/\\\\:>\"?*|]"); + private static final Set IGNORE_CLS_NAMES = new HashSet<>(Arrays.asList( "R", "BuildConfig")); @@ -72,7 +75,7 @@ public class ExportGradleProject { private void saveSettingsGradle() throws IOException { TemplateFile tmpl = TemplateFile.fromResources("/export/settings.gradle.tmpl"); - tmpl.add("applicationName", applicationParams.getApplicationName()); + tmpl.add("applicationName", ILLEGAL_GRADLE_CHARS.matcher(applicationParams.getApplicationName()).replaceAll("")); tmpl.save(new File(projectDir, "settings.gradle")); } diff --git a/jadx-core/src/test/java/jadx/tests/api/ExportGradleTest.java b/jadx-core/src/test/java/jadx/tests/api/ExportGradleTest.java index 71ca7a2b2..6fa37e161 100644 --- a/jadx-core/src/test/java/jadx/tests/api/ExportGradleTest.java +++ b/jadx-core/src/test/java/jadx/tests/api/ExportGradleTest.java @@ -67,4 +67,10 @@ public abstract class ExportGradleTest { assertThat(appBuildGradle.exists()); return loadFileContent(appBuildGradle); } + + protected String getSettingsGradle() { + File settingsGradle = new File(exportDir, "settings.gradle"); + assertThat(settingsGradle.exists()); + return loadFileContent(settingsGradle); + } } diff --git a/jadx-core/src/test/java/jadx/tests/export/IllegalCharsForGradleWrapper.java b/jadx-core/src/test/java/jadx/tests/export/IllegalCharsForGradleWrapper.java new file mode 100644 index 000000000..b73e44273 --- /dev/null +++ b/jadx-core/src/test/java/jadx/tests/export/IllegalCharsForGradleWrapper.java @@ -0,0 +1,17 @@ +package jadx.tests.export; + +import org.junit.jupiter.api.Test; + +import jadx.tests.api.ExportGradleTest; + +import static jadx.tests.api.utils.assertj.JadxAssertions.assertThat; + +class IllegalCharsForGradleWrapper extends ExportGradleTest { + + @Test + void test() { + exportGradle("IllegalCharsForGradleWrapper.xml", "strings.xml"); + + assertThat(getSettingsGradle()).contains("'JadxTestApp'"); + } +} diff --git a/jadx-core/src/test/manifest/IllegalCharsForGradleWrapper.xml b/jadx-core/src/test/manifest/IllegalCharsForGradleWrapper.xml new file mode 100644 index 000000000..2e1a1cdcb --- /dev/null +++ b/jadx-core/src/test/manifest/IllegalCharsForGradleWrapper.xml @@ -0,0 +1,6 @@ + + + + + +