Repository navigation
Bump OpenTok Android to 2.35.1 and restore SubscriberKit.Error - #11
Merged
Merged
Conversation
…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>
There was a problem hiding this comment.
🟢 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.errormethod toErrorInternal, avoiding the event-name collision. - Adds regression checks for
Errorevent 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>
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes the red
build / build sample appjob onmainby 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
mainpins OpenTok 2.35.0. In 2.35SubscriberKit.error(SubscriberKit, int, String)became public, so class-parse binds it as a method calledError. The generator then silently renames theErrorevent toErrorEvent, which makessubscriber.Error += …fail withCS1656atMainPage.xaml.cslines 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
ErroronSession,PublisherKitandSubscriberKiton all three target frameworks.The change
c249d9a(the existing bump): OpenTok and the transformers 2.35.0 → 2.35.1, theErrorInternalrename inTransforms/Metadata.xml, and a package test for theErrorevent on all three kits and all target frameworks.b0cfaed: removesdocs/release-notes/2.35.1.1.md, so merging doesn't release.auto-release.ymldiffs 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.shconfirms 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 sessionError, garbage collection. Previous commitb0cfaed(2.35.1.1-local.202610302006), which differs only in comments: G3 net8, transformers APK, both subscriber probes.PackageTestsError_events_survive…on CI's 2.35.0.1 packagesNot found: "add_Error"; passes on this buildOPENTOK_E2E_DONE PASS passed=5 failed=0OPENTOK_E2E_DONE PASS passed=5 failed=0OPENTOK_E2E_DONE PASS passed=5 failed=0.soand 3.tflitepresentnative SDK 2.35.1Errorpathsession error: AuthorizationFailure Invalid token format, thensession disconnected, on both buildsErrorpath, no live sessionnew Stream(0, false), build aSubscriber, attachError, callErrorInternal:PROBE_EVENT_FIRED sender=Subscriber … domain=SubscriberErrorDomainVONAGE_*credentials), blocks releasePublisher.Errorat runtimeThe 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.
Com.Vonage.Webrtc.Logging.TraceLevelandLogging.EnableTracing(string, EnumSet)are gone, because WebRTC M145 removed them. No[Obsolete]shim:TraceLevelwas a Java enum with no class behind it any more.enableTracingwas already a@Deprecatedempty method in 121.1.101, so anyone calling it loses nothing but the compile.BaseVideoRenderer.Frame.GetMetadata()is gone. Vonage removed it, and nothing can implement it.TraceLevelis the only type removed. 25 other members moved, all engine plumbing an app reaches only through the SDK, andEglRenderer.FrameEventArgs.P0is nowFrame. The list is in the held-back note, except for thatP0rename.PublisherKit.SetTargetScalabilityMode/TargetScalabilityMode, a four-argumentProxyReceiver.ForceSetProxy, andSubscriberKit.ErrorInternal, which is the renamed plumbing and not meant for apps.Com.Opentok.OtcandGrafika.Glesnamespaces.What a release still needs
git checkout c249d9a -- docs/release-notes/2.35.1.1.md), adds what was tested, replaces "dropped" with "renamed toErrorEvent" in itsChangedsection, and adds theP0rename to its webrtc list.Closes #8, closes #9
🤖 Generated with Claude Code