如何探索 NSBundle 内容?
Posted
技术标签:
【中文标题】如何探索 NSBundle 内容?【英文标题】:How to explore NSBundle contents? 【发布时间】:2020-05-04 07:01:58 【问题描述】:我有一个名为 main.jsbundle 的 NSBundle 文件,由 react-native 包打包,我可以使用哪个工具来探索它的内容?我可以看到它里面有缩小的 js 代码,还有文件开头的某种索引。我需要提取 js 代码来调试问题。
【问题讨论】:
【参考方案1】:NSBundle
是一个完全不同的东西——它是一个原生类,代表了一种封装应用程序和框架的 Apple 格式,允许从原生代码访问和操作它。
您问的是 React Native 包,这是一个相当松散的概念,即单个缩小的 JS 代码文件 + 用于图像和数据的资产文件夹。实际上,您可以使用 uglify-js 等常规工具对 js-bundle 进行分解并尝试对其进行检查。
您也可以使用sourcemaps produced by Metro 和metro-symbolicate 来了解压缩包中的代码如何映射到实际源代码,尽管在不知道手头的问题的情况下我不能推荐任何更具体的东西。 metro-symbolicate
也没有文档,这意味着您必须了解它的来源。
【讨论】:
它与浏览器js包有点不同,因为文件开头有一堆二进制数据。我发现通过strings
管道传输文件可以为我剥离二进制数据
那么你使用的是 RAM 捆绑包吗?
我想我确实这样做了,我记得设置了类似的东西。【参考方案2】:
正如@ivanmoskalev 指出的那样,这可能不一定是 NSBundle。无论如何,通过strings
输出文件几乎只是文件的javascript部分,所以这对我有用。
【讨论】:
以上是关于如何探索 NSBundle 内容?的主要内容,如果未能解决你的问题,请参考以下文章
IOS开发-UI学习-NSBundle和NSHomeDirectory的区别
[NSBundle loadNibNamed:owner:] 如何在 Xcode 3.1 中工作?