You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Java类字符串的指定位置插入自定义代码(Expo React Native场景)

实现方案

核心思路

通过正则精准匹配onConfigurationChanged方法的结束位置,直接在该位置后追加你要插入的自定义代码,是目前适配Expo配置插件场景最稳定的实现方式。

代码实现(适配Expo配置插件的Node.js环境)

// 入参说明:originCode为传入的完整Java类字符串,insertCode为你要插入的自定义方法字符串
function injectCustomJavaMethod(originCode, insertCode) {
  // 防重复插入判断,避免多次执行插件导致代码重复
  if (originCode.includes("protected List getPackages()")) {
    return originCode;
  }
  // 多行正则匹配onConfigurationChanged方法完整内容
  const matchReg = /(@Override\s+public\s+void\s+onConfigurationChanged\s*\(@NonNull\s+Configuration\s+newConfig\)\s*\{[\s\S]+?}\s*)/;
  return originCode.replace(matchReg, `$1\n\n${insertCode}\n`);
}

待插入的代码预处理

你需要先把要插入的代码里的转义字符还原,最终传入的insertCode内容如下:

@Override
protected List getPackages() {
  return Arrays.asList(
    new MainReactPackage(), // <---- 此处添加逗号
    new RNFSPackage() // <---------- 此处添加包
  );
}

备用定位方案

如果后续类结构变动导致上述正则失效,可以换成匹配Flipper初始化方法的前置位置,正则替换为:

const matchReg = /(?=\s*\/\*\*\s*.*在React Native模板中加载Flipper)/;

内容的提问来源于stack exchange,提问作者haibert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 20:45:02