fix: filter invalid chars in app name for gradle export (PR #1813)

This commit is contained in:
nitram84
2023-04-08 19:16:14 +02:00
committed by GitHub
parent 35e0201f06
commit 0421ad80c1
4 changed files with 33 additions and 1 deletions
@@ -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<String> 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"));
}
@@ -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);
}
}
@@ -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'");
}
}
@@ -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>