95 lines
2.9 KiB
JavaScript
95 lines
2.9 KiB
JavaScript
const {
|
|
withAndroidManifest,
|
|
withDangerousMod,
|
|
withGradleProperties,
|
|
} = require("@expo/config-plugins");
|
|
const fs = require("fs");
|
|
const path = require("path");
|
|
|
|
function withCustomAndroidConfig(config) {
|
|
// Copy cert files
|
|
config = withDangerousMod(config, [
|
|
"android",
|
|
async (config) => {
|
|
const projectRoot = config.modRequest.projectRoot;
|
|
const certSourceDir = path.join(projectRoot, "certFiles");
|
|
const rawDestDir = path.join(
|
|
projectRoot,
|
|
"android/app/src/main/res/raw"
|
|
);
|
|
const xmlDestDir = path.join(
|
|
projectRoot,
|
|
"android/app/src/main/res/xml"
|
|
);
|
|
|
|
// Create directories if they don't exist
|
|
if (!fs.existsSync(rawDestDir)) {
|
|
fs.mkdirSync(rawDestDir, { recursive: true });
|
|
}
|
|
if (!fs.existsSync(xmlDestDir)) {
|
|
fs.mkdirSync(xmlDestDir, { recursive: true });
|
|
}
|
|
|
|
// Copy your cert files
|
|
if (fs.existsSync(path.join(certSourceDir, "raw"))) {
|
|
fs.cpSync(path.join(certSourceDir, "raw"), rawDestDir, {
|
|
recursive: true,
|
|
});
|
|
}
|
|
|
|
if (fs.existsSync(path.join(certSourceDir, "xml"))) {
|
|
fs.cpSync(path.join(certSourceDir, "xml"), xmlDestDir, {
|
|
recursive: true,
|
|
});
|
|
}
|
|
|
|
console.log("✅ Copied cert files to android/app/src/main/res");
|
|
return config;
|
|
},
|
|
]);
|
|
|
|
// Modify AndroidManifest
|
|
config = withAndroidManifest(config, (config) => {
|
|
const mainApplication = config.modResults.manifest.application[0];
|
|
|
|
// Add network security config if not already present
|
|
if (!mainApplication.$["android:networkSecurityConfig"]) {
|
|
mainApplication.$["android:networkSecurityConfig"] =
|
|
"@xml/network_security_config";
|
|
}
|
|
|
|
console.log("✅ Modified AndroidManifest.xml");
|
|
return config;
|
|
});
|
|
|
|
// Update gradle.properties for better performance
|
|
config = withGradleProperties(config, (config) => {
|
|
// Remove existing jvmargs if present
|
|
config.modResults = config.modResults.filter(
|
|
(item) =>
|
|
!(item.type === "property" && item.key === "org.gradle.jvmargs")
|
|
);
|
|
|
|
// Add your custom jvmargs
|
|
config.modResults.push(
|
|
{
|
|
type: "property",
|
|
key: "org.gradle.jvmargs",
|
|
value: "-Xmx16384m -XX:MaxMetaspaceSize=2024m",
|
|
},
|
|
{
|
|
type: "property",
|
|
key: "org.gradle.daemon",
|
|
value: "false",
|
|
}
|
|
);
|
|
|
|
console.log("✅ Updated gradle.properties with 16GB heap");
|
|
return config;
|
|
});
|
|
|
|
return config;
|
|
}
|
|
|
|
module.exports = withCustomAndroidConfig;
|