(config: Config)
| 50 | * the package name. |
| 51 | */ |
| 52 | export async function editProjectSettingsAndroid(config: Config): Promise<void> { |
| 53 | const appId = config.app.appId; |
| 54 | const appName = config.app.appName |
| 55 | .replace(/&/g, '&') |
| 56 | .replace(/</g, '<') |
| 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 | } |
no test coverage detected