MCPcopy
hub / github.com/ionic-team/capacitor / editProjectSettingsAndroid

Function editProjectSettingsAndroid

cli/src/android/common.ts:52–106  ·  view source on GitHub ↗
(config: Config)

Source from the content-addressed store, hash-verified

50 * the package name.
51 */
52export async function editProjectSettingsAndroid(config: Config): Promise<void> {
53 const appId = config.app.appId;
54 const appName = config.app.appName
55 .replace(/&/g, '&amp;')
56 .replace(/</g, '&lt;')
57 .replace(/"/g, '\\"')
58 .replace(/'/g, "\\'");
59
60 const buildGradlePath = resolve(config.android.appDirAbs, 'build.gradle');
61
62 const domainPath = appId.split('.').join('/');
63 // Make the package source path to the new plugin Java file
64 const newJavaPath = resolve(config.android.srcMainDirAbs, `java/${domainPath}`);
65
66 if (!(await pathExists(newJavaPath))) {
67 await mkdirp(newJavaPath);
68 }
69
70 await copy(
71 resolve(config.android.srcMainDirAbs, 'java/com/getcapacitor/myapp/MainActivity.java'),
72 resolve(newJavaPath, 'MainActivity.java'),
73 );
74
75 if (appId.split('.')[1] !== 'getcapacitor') {
76 await remove(resolve(config.android.srcMainDirAbs, 'java/com/getcapacitor'));
77 }
78
79 // Remove our template 'com' folder if their ID doesn't have it
80 if (appId.split('.')[0] !== 'com') {
81 await remove(resolve(config.android.srcMainDirAbs, 'java/com/'));
82 }
83
84 // Update the package in the MainActivity java file
85 const activityPath = resolve(newJavaPath, 'MainActivity.java');
86 let activityContent = await readFile(activityPath, { encoding: 'utf-8' });
87
88 activityContent = activityContent.replace(/package ([^;]*)/, `package ${appId}`);
89 await writeFile(activityPath, activityContent, { encoding: 'utf-8' });
90
91 // Update the applicationId in build.gradle
92 let gradleContent = await readFile(buildGradlePath, { encoding: 'utf-8' });
93 gradleContent = gradleContent.replace(/applicationId "[^"]+"/, `applicationId "${appId}"`);
94 // Update the namespace in build.gradle
95 gradleContent = gradleContent.replace(/namespace = "[^"]+"/, `namespace = "${appId}"`);
96
97 await writeFile(buildGradlePath, gradleContent, { encoding: 'utf-8' });
98
99 // Update the settings in res/values/strings.xml
100 const stringsPath = resolve(config.android.resDirAbs, 'values/strings.xml');
101 let stringsContent = await readFile(stringsPath, { encoding: 'utf-8' });
102 stringsContent = stringsContent.replace(/com.getcapacitor.myapp/g, appId);
103 stringsContent = stringsContent.replace(/My App/g, appName);
104
105 await writeFile(stringsPath, stringsContent);
106}

Callers 1

editPlatformsFunction · 0.90

Calls 3

copyFunction · 0.85
removeFunction · 0.85
readFileFunction · 0.85

Tested by

no test coverage detected