Skip to content

v10.59.1

Choose a tag to compare

@sunnylqm sunnylqm released this 29 Sep 07:30
2105a38

English

Native internals cleanup

No API or behavior changes. The JavaScript SDK, the JS bridge, the native host APIs (configure / prepareBundle), server requests and persisted state are unchanged.

  • Android: native methods are now registered at library load time, so the native library exports a single entry point instead of one symbol per method. The library file is renamed from librnupdate.so to librnpushy.so. If your packagingOptions / jniLibs rules name librnupdate.so explicitly, update them.
  • iOS: the shared C/C++ core is built as its own Core subspec with hidden symbol visibility, so a dynamic-framework integration no longer exports the core's internal symbols. Run pod install as part of the normal native upgrade.
  • All platforms: internal class, method and log names were made consistent, and built-in service addresses and protocol constants are no longer stored as plain strings in the binary.
  • Rebuild the native app to pick up these changes; a JS-only update is not needed and has no effect on them.

Android: Expo detection in pnpm workspaces

  • The declared expo version is no longer misread from pnpm protocol specs (catalog:, workspace:, link:, file:, git URLs). Previously a catalog named like catalog:v2 was read as Expo SDK 2 and the Expo module was silently disabled. npm: aliases are parsed from the last @.
  • The Node fallback for resolving the Expo version works again on Gradle 9 (it used Project.exec, which Gradle 9 removed, and silently returned nothing).

Full changelog

中文

原生内部整理

没有接口或行为变化。JS SDK、JS 桥接、原生宿主接口(configure / prepareBundle)、服务端请求和持久化状态均不变。

  • Android:native 方法改为在库加载时注册,原生库对外只导出一个入口,不再每个方法一个符号。库文件由 librnupdate.so 改名为 librnpushy.so;如果你的 packagingOptions / jniLibs 配置里写了 librnupdate.so,请同步修改。
  • iOS:共用的 C/C++ 核心拆为独立的 Core subspec,并隐藏符号可见性,以动态 framework 集成时不再导出核心内部符号。按正常原生升级流程重新运行 pod install。
  • 三端:内部类名、方法名和日志措辞统一;内置服务地址和协议常量不再以明文字符串存放在二进制中。
  • 需要重新构建原生应用才会生效;这些改动与 JS 热更新无关。

Android:pnpm workspace 下的 Expo 检测

  • 解析 expo 声明版本时跳过 pnpm 协议写法(catalog:、workspace:、link:、file:、git 地址)。此前名为 catalog:v2 之类的 catalog 会被误读成 Expo SDK 2,导致 Expo 模块被静默禁用。npm: 别名按最后一个 @ 之后的部分解析。
  • 用 Node 兜底解析 Expo 版本的逻辑在 Gradle 9 上恢复可用(原来用的 Project.exec 在 Gradle 9 中已移除,兜底会静默返回空)。

完整变更记录