Skip to content

Bump OpenTok Android to 2.35.1 and restore SubscriberKit.Error - #11

Merged
sbokatuk merged 3 commits into
mainfrom
bump/opentok-2.35.1
Oct 30, 2026
Merged

sbokatuk merged 3 commits into
mainfrom
bump/opentok-2.35.1

Conversation

@sbokatuk

@sbokatuk sbokatuk commented Oct 30, 2026 •

Copy link
Copy Markdown
Owner

Fixes the red build / build sample app job on main by finishing the existing 2.35.1 bump. Merging this publishes nothing to nuget.org as a release: the release note is deliberately left out. Maintainer merges by hand.

The failure

main pins OpenTok 2.35.0. In 2.35 SubscriberKit.error(SubscriberKit, int, String) became public, so class-parse binds it as a method called Error. The generator then silently renames the Error event to ErrorEvent, which makes subscriber.Error += … fail with CS1656 at MainPage.xaml.cs lines 168 and 254. Every PR here fails on it, including the keepalive PR (#10).

No consumer can hit this. No 2.35.x package of this family is on nuget.org, betas included. The newest is 2.34.1.4, and that assembly has Error on Session, PublisherKit and SubscriberKit on all three target frameworks.

The change

  • c249d9a (the existing bump): OpenTok and the transformers 2.35.0 → 2.35.1, the ErrorInternal rename in Transforms/Metadata.xml, and a package test for the Error event on all three kits and all target frameworks.
  • b0cfaed: removes docs/release-notes/2.35.1.1.md, so merging doesn't release. auto-release.yml diffs the whole push, so a note added and removed in one PR tags nothing, whichever merge method is used.
  • f15bcaa: corrects the comments, which said the event was dropped.

check-upstream.sh confirms 2.35.1 is still the newest stable. The derived pins match the 2.35.1 POMs. Merging closes #8 and #9, because the pins move here, even though the release comes later.

Test report — OpenTok.Net.Android 2.35.1.1-local

Toolchain: .NET SDK 8.0.427 / 9.0.320 / 10.0.403, Android workloads 34 / 35 / 36, JDK 17, emulator API 35 google_apis arm64. Final commit f15bcaa (2.35.1.1-local.202610302029): G1, G2, G3 net9 and net10, G4 sample and session Error, garbage collection. Previous commit b0cfaed (2.35.1.1-local.202610302006), which differs only in comments: G3 net8, transformers APK, both subscriber probes.

Gate Target TFM Result Evidence
G1 pack all three packages all PASS 0 errors. webrtc 181.4 MB, OpenTok 61.7 MB, transformers 159.6 MB, all under nuget.org's 250 MB
G2 package tests PackageTests all PASS 54 passed, 0 failed
G2 negative control Error_events_survive… on CI's 2.35.0.1 packages all PASS Fails on all 3 TFMs with Not found: "add_Error"; passes on this build
G3 device tests emulator net8.0-android34.0 PASS OPENTOK_E2E_DONE PASS passed=5 failed=0
G3 device tests emulator net9.0-android35.0 (not in the CI matrix) PASS OPENTOK_E2E_DONE PASS passed=5 failed=0
G3 device tests emulator net10.0-android36.0 PASS OPENTOK_E2E_DONE PASS passed=5 failed=0
G3 transformers APK Release, arm64 net9, net10 PASS 3 .so and 3 .tflite present
G4 sample build and launch emulator net10.0-android36.0 PASS Status label shows native SDK 2.35.1
G4 session Error path emulator, invalid token net10.0-android36.0 PASS session error: AuthorizationFailure Invalid token format, then session disconnected, on both builds
G4 subscriber Error path, no live session emulator, scratch probe (not committed) net8, net10 PASS new Stream(0, false), build a Subscriber, attach Error, call ErrorInternal: PROBE_EVENT_FIRED sender=Subscriber … domain=SubscriberErrorDomain
G4 garbage collection emulator, scratch probe (not committed) net10.0-android36.0 PASS 100 forced collections on the final build, 135 on the previous one; no ANR, still responsive afterwards
G4 connect, publish, subscribe, remote tile net10.0-android36.0 SKIPPED (no VONAGE_* credentials), blocks release
G4 Publisher.Error at runtime SKIPPED: needs a connected session Compile and metadata only
G6 PR CI GitHub all see the checks on this PR

The subscriber probe fires the SDK's own error dispatch; it is not an error from a real server.

API changes (against 2.34.1.4 / webrtc 121.1.101.1)

Compared member by member on all three target frameworks. No event is lost.

  • Breaking: Com.Vonage.Webrtc.Logging.TraceLevel and Logging.EnableTracing(string, EnumSet) are gone, because WebRTC M145 removed them. No [Obsolete] shim: TraceLevel was a Java enum with no class behind it any more. enableTracing was already a @Deprecated empty method in 121.1.101, so anyone calling it loses nothing but the compile.
  • Breaking: BaseVideoRenderer.Frame.GetMetadata() is gone. Vonage removed it, and nothing can implement it.
  • Webrtc: TraceLevel is the only type removed. 25 other members moved, all engine plumbing an app reaches only through the SDK, and EglRenderer.FrameEventArgs.P0 is now Frame. The list is in the held-back note, except for that P0 rename.
  • Added: PublisherKit.SetTargetScalabilityMode / TargetScalabilityMode, a four-argument ProxyReceiver.ForceSetProxy, and SubscriberKit.ErrorInternal, which is the renamed plumbing and not meant for apps.
  • The rest of the removals are in the obfuscated Com.Opentok.Otc and Grafika.Gles namespaces.

What a release still needs

  1. Vonage credentials and the live G4 run with a second client, or a written waiver here.
  2. A follow-up PR that restores the note (git checkout c249d9a -- docs/release-notes/2.35.1.1.md), adds what was tested, replaces "dropped" with "renamed to ErrorEvent" in its Changed section, and adds the P0 rename to its webrtc list.

Closes #8, closes #9

🤖 Generated with Claude Code

sbokatuk and others added 2 commits August 21, 2026 17:50
…o 2.35.1

Closes #8, closes #9 — the upstream-drift issues for 2.35.1. 2.35.0 (625f432) was
pinned but never released; Vonage followed it nine days later with 2.35.1,
which is the only 2.35 their release notes describe, so this release goes
straight there. The two differ in native code only — javap over both
classes.jars shows identical public surfaces for the SDK and for the
transformers, and of the transformers' three .so files only
libopentok_transformers.so changed.

The derived pins are re-read from the 2.35.1 POMs rather than carried over,
and are the same as 2.35.0's: com.vonage:webrtc 145.0.113, flogger 0.6,
guava 31.1-android, mltransformers-ps16k 4.1.65,
mltransformersaudionoisesuppression-ps16k 1.1.33. Binding revision stays at
1: 2.35.0.1 never shipped.

One transform added. 2.35 makes SubscriberKit.error(SubscriberKit, int,
String) public — SDK plumbing that 2.34.1 kept package-private — and
class-parse binds it as a method named Error, which makes the generator drop
the SubscriberKit.Error *event* without a warning. The package built and
passed its tests; the sample app was what failed (CS1656 on
`subscriber.Error +=`). The method is renamed ErrorInternal in Metadata.xml,
and a new package test asserts the Error event on all three kits, on every
target framework, since this would otherwise only be caught by a consumer.

With that, a member-by-member comparison of the packed net10 assembly against
2.34.1.4's from nuget.org shows one removal outside the obfuscated
Com.Opentok.Otc and Grafika.Gles namespaces — BaseVideoRenderer.Frame
.GetMetadata(), which Vonage removed deliberately — and two additions worth
naming: PublisherKit.SetTargetScalabilityMode/TargetScalabilityMode and a
four-argument ProxyReceiver.ForceSetProxy. On the webrtc side the 121 -> 145
delta was checked the same way: Logging.TraceLevel and Logging.enableTracing
are gone, and the rest is engine plumbing, listed in the release note.

Verified locally this time, against the packed artifacts, not the projects:

  BuildNugets.sh          all three packages, both bands, 0 errors
  PackageTests            54 passed, 0 failed (was 51; +3 for the new test)
  emulator smoke tests    net10.0-android36.0 5/5, net8.0-android34.0 5/5,
                          Small_Phone_API_34 (arm64-v8a, API 34), headless
  transformers APK check  net10.0-android36.0, all three .so and all three
                          .tflite present under lib/arm64-v8a / assets
  sample app              Release build against the packed package, 0 errors

Merging the release note tags v2.35.1.1 (auto-release.yml). OpenTok.Net.iOS
moves to 2.35.1.1 alongside.
The bump has to reach main now, because main's 2.35.0 pin is what turns
`build sample app` red: 2.35's public SubscriberKit.error makes the generator
drop SubscriberKit.Error, and the sample stops compiling with CS1656. That red
job is failing every pull request here, including the keepalive one.

Merging a file under docs/release-notes/ is the release (auto-release.yml), and
the gate for one is not met yet: there are no Vonage test credentials, so
connect, publish and subscribe have not been run against 2.35.1. Taking the
note out lets the fix land without publishing anything.

auto-release.yml diffs the whole push, so a note added and removed inside one
pull request tags nothing, however the pull request is merged. The note itself
stays in c249d9a; restoring it from there, with the test results added, is the
release.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Copilot AI balanced review requested due to automatic review settings October 30, 2026 17:13

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

No active review issues are recorded for the OpenTok SDK update and restoration of the SubscriberKit.Error event.

No open issues 🎉

What changed in this PR

Updates the OpenTok Android bindings to SDK 2.35.1 and restores SubscriberKit.Error to fix the sample app’s compilation failure. This PR does not publish a release.

Changes:

  • Bumps OpenTok and the shared transformers version to 2.35.1.
  • Renames the bound SubscriberKit.error method to ErrorInternal, avoiding the event-name collision.
  • Adds regression checks for Error event accessors on all three kits across every target framework and updates version documentation.
File Description
tests/​OpenTok.Net.Android.PackageTests/​BindingApiTests.cs Checks Error event accessors on Session, PublisherKit, and SubscriberKit.
src/​OpenTok.Net.Android/​Transforms/​Metadata.xml Renames the bound method to preserve SubscriberKit.Error.
README.md Updates the SDK badge and local emulator-test version.
Directory.Build.props Bumps the shared OpenTok version to 2.35.1.
build/​upstream.tsv Updates the dependency-alignment comment to reference 2.35.1.

Review effort: Balanced

The comments said it drops the event. It doesn't: the 2.35.0.1 assembly built
by CI on main has add_ErrorEvent on SubscriberKit on all three target
frameworks, so the event survives under a name nobody asks for. That is why
`subscriber.Error +=` reports CS1656 rather than a missing member: Error is the
method now.

Comments only, so the transform and the test stand as they are.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@sbokatuk
sbokatuk merged commit 7a686b2 into main Oct 30, 2026
9 checks passed
@sbokatuk
sbokatuk deleted the bump/opentok-2.35.1 branch October 30, 2026 18:49

This branch was successfully deployed

1 active deployment
nuget.org — f15bcaaf Deployed Oct 30, 2026 by sbokatuk via publish beta to nuget.org #14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Upstream drift: OpenTok Transformers Upstream drift: OpenTok Android

2 participants