Skip to content

Commit

Permalink
fix: filter invalid chars in app name for gradle export (PR #1813)
Browse files Browse the repository at this point in the history
  • Loading branch information
nitram84 committed Apr 8, 2023
1 parent 35e0201 commit 0421ad8
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import java.util.regex.Pattern;

import javax.xml.parsers.DocumentBuilder;

Expand All @@ -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<String> IGNORE_CLS_NAMES = new HashSet<>(Arrays.asList(
"R",
"BuildConfig"));
Expand Down Expand Up @@ -72,7 +75,7 @@ private void saveProjectBuildGradle() throws IOException {
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"));
}

Expand Down
6 changes: 6 additions & 0 deletions jadx-core/src/test/java/jadx/tests/api/ExportGradleTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -67,4 +67,10 @@ protected String getAppGradleBuild() {
assertThat(appBuildGradle.exists());
return loadFileContent(appBuildGradle);
}

protected String getSettingsGradle() {
File settingsGradle = new File(exportDir, "settings.gradle");
assertThat(settingsGradle.exists());
return loadFileContent(settingsGradle);
}
}
Original file line number Diff line number Diff line change
@@ -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'");
}
}
6 changes: 6 additions & 0 deletions jadx-core/src/test/manifest/IllegalCharsForGradleWrapper.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" android:compileSdkVersion="33" android:compileSdkVersionCodename="13" package="jadx.test.app" platformBuildVersionCode="33" platformBuildVersionName="13">
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="32"/>
<application android:label="JadxTestApp/\:?*|">
</application>
</manifest>

0 comments on commit 0421ad8

Please sign in to comment.