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

如何读取React Native打包的index.android.bundle代码查找label及e.default引用

问题解答

1. __d代码块的属性

__d是React Native官方打包工具Metro内置的模块定义函数(全称是define),所有以__d开头的代码块都属于独立的公共模块,不属于React组件。你贴的这段代码就是一个纯配置模块,最终默认导出了一个包含两个配置项的数组,参考代码如下:

__d(function(g, r, i, a, m, e, d) {
  var t = r(d[0]);
  Object.defineProperty(e, "__esModule", {
    value: !0
  }), e.default = void 0;
  var l = r(d[1]),
    u = t(r(d[2])),
    n = [{
        id: l.Sal.SIX,
        label: u.default.t('test.broke')
    }, {
        id: l.Sal.SEVEN,
        label: u.default.t('test.even')
    }];
  e.default = n
})

2. 查找label使用位置的方法

  • 先确认当前模块的ID:完整的__d函数最后一个参数是当前模块的数字ID,格式为__d(function(){/* 业务逻辑 */}, 模块ID, [依赖模块ID列表]),先记下这段代码对应的数字ID,假设为xxx。
  • 全局搜索代码库中所有r(xxx)的调用,这些都是引入当前模块的代码位置,引入后拿到的默认导出就是代码里定义的带label的数组。
  • 跟踪引入后赋值的变量,搜索该变量的遍历、取值逻辑,所有取变量.label的位置就是label的使用处。
  • 也可以直接全局搜索代码里出现的i18n key test.broke、test.even,可以更快定位到文案渲染的UI位置。

3. 查找e.default引用的方法

这段代码里的e.default就是当前模块的默认导出值,也就是最后赋值的配置数组n,所有引用逻辑如下:

  • 拿到当前模块的数字ID后,全局搜r(模块ID),所有出现该语句的位置都是在引用e.default,常见的调用形式为var 自定义变量 = r(模块ID).default,这些自定义变量的所有使用位置都是e.default的引用位置。
  • 如果你的反编译工具已经还原了模块文件名,也可以直接搜索该文件名的导入语句,效果相同。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 05:54:00