Repository navigation
chore(android): finish Android support before the main merge - #40
Merged
heoblitz merged 16 commits intoNov 12, 2026
Merged
Conversation
…-polish Show update indicators and download progress in Settings
test: resolve generator CLI file URL as a native path
fix: include gitignore files in packed plugin templates
…ship Comparing packaged panel files with their source repeated what the Gradle task does by copying them, and the consumer check already asserts which panels an app ends up with. The debuggable check tested the sample's build type rather than the SDK.
The install guide only showed how to run the iOS example and how to find a missing iOS app. The Korean verification and harness pages lacked the Android sections their English versions have.
The SDK and simulator jobs were iOS only but did not say so. They are now iOS SDK Build & Tests and iOS Simulator Connection & CLI E2E. Android Emulator Connection E2E boots an emulator, runs the sample and speaks to the SDK through ADB the way the host does. The Necto host needs macOS and hosted Mac runners cannot run an emulator, so script/android-sample gains --sdk-only and script/test-android-security no longer requires a host.
JitPack builds a tag on its first request, so a broken tag showed up only when an app added it. The release workflow now asks for the build once the release is published and runs the selective consumer check against the artifacts.
The tutorial built its example plugin in Swift only. It now answers the same contract in Kotlin, carries the same built panel as Java resources and registers it with NectoAndroid.
Conflicts: the Android settings strings and main's reworded font hint both landed in Localizable.strings, and the built Preferences panel changed on both sides. The strings keep both, with the Android ones in the tone main moved the Korean copy to. The panel is rebuilt from the merged sources.
The bug report template, the contributing and security notes and the plugin pages named only USB devices, simulators and Swift packages. The architecture page lists the Android bridge and the plugin folders.
The emulator job never booted: avdmanager created the AVD where the emulator did not look, the emulator exited, and adb waited for a device until the job timed out. Both now use ANDROID_AVD_HOME, and the wait is bounded.
composeTapRunsTheClickHandler passed in one variant and failed in the other of the same CI run: the tap changed the state, but the text was still Count 0 after sixty frames. The helper now sends snapshot apply notifications itself rather than relying on the process-wide observer to do it under Robolectric.
Sending snapshot notifications from the frame helper did not stop composeTapRunsTheClickHandler from seeing stale text, so that change is undone. The tests never ended their activities, so compositions from earlier tests kept running against Compose's process-wide UI dispatcher while Robolectric reset the main looper between tests. Each test now closes its activity and lets the looper finish.
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.
Summary
What is left before
feature/android-supportcan go tomain, following #38 and #39.CI
iOS SDK Build & TestsandiOS Simulator Connection & CLI E2E.Android Emulator Connection E2Eboots an emulator on a Linux runner, runs thesample and speaks to the SDK through ADB the way the host does: the handshake, the
frame and request limits, and a request that succeeds. The Necto host needs macOS
and hosted Mac runners cannot run an emulator, so this job does not cover the Mac
side.
script/android-samplegains--sdk-onlyandscript/test-android-securityno longer requires a host.
Android SDK on JitPackasks JitPack to build thenew tag and runs
script/test-android-consumer --jitpack <version>against it.Checks
script/test-android-artifactskeeps the two checks nothing else makes: no SDKmodule declares a permission, and each plugin module carries only its own panel.
Comparing packaged panel files with their source repeated the copy the Gradle task
does, and the debuggable check tested the sample's build type rather than the SDK.
composeTapRunsTheClickHandlersaw stale Compose text in one build variant or the other across three CI runs, with
compositions from earlier tests still running; it passes in both since.
Docs
Android app does not appear.
versions have.
the architecture module table no longer assume iOS.
Main
main.Localizable.stringskeeps both the Android settings strings andmain's reworded font hint, with the Korean Android strings in the tone main moved
the copy to. The Preferences panel changed on both sides and is rebuilt from the
merged sources.
Renaming the two jobs changes the names the
mainruleset requires. The ruleset hasto be updated before this branch is proposed for
main.Test Plan
script/test swift,script/test native,script/test releaseandscript/test webpass on the merged tree.yarn buildrebuilds every panel intoSDK/Plugins/<Name>/Panel; only thePreferences
index.jsdiffers from what was committed.yarn docs:buildpasses.necto-core, and its panel loads fromresources laid out as the tutorial describes.
Covered by this PR's CI rather than locally:
Android Emulator Connection E2Epasses: the emulator boots andscript/test-android-securityreports all six checks.script/test-android-artifactsandscript/test-android-consumerpass.Not verified:
Android SDK on JitPack, which runs only during a release.--sdk-onlyon a device.