feat(plugins): add LiveKit audio switch patch plugin
Some checks failed
Frontend CI / ota (ios) (push) Has been cancelled
Frontend CI / build-and-push-web (push) Has been cancelled
Frontend CI / ota (android) (push) Has been cancelled
Frontend CI / build-android-apk (push) Failing after 18m50s

Introduce withLivekitAudioswitchPatch plugin for handling LiveKit audio routing and switching functionality.
This commit is contained in:
lafay
2026-06-16 01:10:20 +08:00
parent a31225dce2
commit 4c4d28f0e2
2 changed files with 41 additions and 0 deletions

View File

@@ -68,6 +68,7 @@
"plugins": [ "plugins": [
"./plugins/withCmakeJobLimit", "./plugins/withCmakeJobLimit",
"./plugins/withJcorePatch", "./plugins/withJcorePatch",
"./plugins/withLivekitAudioswitchPatch",
"./plugins/withSigning", "./plugins/withSigning",
"./plugins/withMainActivityConfigChange", "./plugins/withMainActivityConfigChange",
[ [

View File

@@ -0,0 +1,40 @@
const { withDangerousMod } = require('@expo/config-plugins');
const fs = require('fs');
const path = require('path');
// @livekit/react-native depends on com.github.davidliu:audioswitch via JitPack.
// That JitPack artifact returns 403 Forbidden (repo/commit no longer accessible).
// The original upstream com.twilio:audioswitch is published on Maven Central.
// This plugin patches livekit's build.gradle during prebuild to swap the
// JitPack dependency for the Maven Central one.
const withLivekitAudioswitchPatch = (config) =>
withDangerousMod(config, [
'android',
async (config) => {
const root = config.modRequest.projectRoot;
const gradlePath = path.join(
root,
'node_modules',
'@livekit',
'react-native',
'android',
'build.gradle',
);
if (!fs.existsSync(gradlePath)) return config;
let content = fs.readFileSync(gradlePath, 'utf-8');
const oldDep = /api\s+'com\.github\.davidliu:audioswitch:[a-f0-9]+'/;
const newDep = `api 'com.twilio:audioswitch:1.1.5'`;
if (oldDep.test(content)) {
content = content.replace(oldDep, newDep);
fs.writeFileSync(gradlePath, content);
console.log('[withLivekitAudioswitchPatch] replaced davidliu JitPack audioswitch with com.twilio:audioswitch:1.1.5');
}
return config;
},
]);
module.exports = withLivekitAudioswitchPatch;