fix: filter invalid chars in app name for gradle export (PR #1813)
This commit is contained in:
@@ -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>
|
||||
Reference in New Issue
Block a user