Agora RTC voice-sdk 16 KB page-size fix: upgrade to 4.6.4 (native code removed in 4.5.0)
Artifact io.agora.rtc:voice-sdk · measured 2026-10-01 · all libraries
native code removed
From 4.5.0 on, Agora RTC voice-sdk no longer ships arm64-v8a/x86_64 .so files in this artifact, so upgrading removes the problem here. The natives were removed or moved; see what that means.
- POM META-PACKAGE: voice-sdk 4.6.4 contains no 64-bit .so in the wrapper artifact but declares six native dependencies. Exact 4.6.4 dependency artifacts measured: ains:4.6.4 aligned; audio-beauty:4.6.4 aligned; spatial-audio:4.6.4 aligned; aiaec:4.6.4 aligned; full-voice-drive:4.6.4 aligned; voice-rtc-basic:4.6.4 aligned. This is not proof that another resolved version is aligned; measure the final runtime dependency graph
- Sampled, not exhaustive: 28 of 72 published versions were measured with native code; unmeasured versions in between are unknown.
Measured evidence
| Version | Library file | p_align | File date | Source | |
|---|---|---|---|---|---|
| Last offending | 4.4.1 | jni/arm64-v8a/libagora-fdkaac.so | 4 KB (2^12) | Wed, 07 Aug 2024 10:50:58 GMT | artifact |
p_align is the smallest PT_LOAD segment alignment of the ELF. 16 KB-compatible needs at least 16384 (2^14). Method: min PT_LOAD p_align of arm64-v8a/x86_64 .so inside the published AAR/JAR; aligned = >=16384 for every lib. Dates are repository file times, not official release dates.
Offending versions measured (28)
3.4.0, 3.4.1, 3.4.5, 3.4.7.1, 3.4.7.2, 3.4.7.3, 3.4.8.1, 3.4.8.2, 3.4.11.1, 3.5.0.1, 3.5.1.1, 3.5.2.2, 3.5.3, 3.6.0, 3.6.1.3, 3.6.2.3, 3.7.0, 3.7.0.1, 3.7.2, 4.0.0-rc.1, 4.1.0, 4.1.1, 4.2.2, 4.3.1, 4.4.0, 4.4.1, 12-15-ci-test, 12-15-ci-test-2
Native libraries seen: libagora-core.so, libagora-fdkaac.so, libagora-ffmpeg.so, libagora-mpg123.so, libagora-rtc-sdk.so, libagora-soundtouch.so, libagora_ai_denoise_extension.so, libagora_ai_echo_cancellation_extension.so, libagora_ai_echo_cancellation_ll_extension.so, libagora_ai_noise_suppression_extension.so, libagora_ai_noise_suppression_ll_extension.so, libagora_audio_beauty_extension.so and 17 more.
The Gradle change
implementation("io.agora.rtc:voice-sdk:4.6.4")native code removed: 4.5.0 and later (measured latest 4.6.4) contain no arm64-v8a/x86_64 .so; upgrade, then check whether the natives moved to a separate artifact and measure that one // POM META-PACKAGE: voice-sdk 4.6.4 contains no 64-bit .so in the wrapper artifact but declares six native dependencies. Exact 4.6.4 dependency artifacts measured: ains:4.6.4 aligned; audio-beauty:4.6.4 aligned; spatial-audio:4.6.4 aligned; aiaec:4.6.4 aligned; full-voice-drive:4.6.4 aligned; voice-rtc-basic:4.6.4 aligned. This is not proof that another resolved version is aligned; measure the final runtime dependency graph
Confirm what Gradle actually resolves, since another dependency may pull an older version:
./gradlew :app:dependencyInsight --dependency voice-sdk --configuration releaseRuntimeClasspathRe-verify it yourself
Download the artifact and run the free checker (check16k.py, Python 3, no dependencies):
curl -LO https://repo1.maven.org/maven2/io/agora/rtc/voice-sdk/4.4.1/voice-sdk-4.4.1.aar
python3 check16k.py voice-sdk-4.4.1.aarExit 0 = aligned, 1 = an unaligned library found. Better still, run it on your final .aab/.apk.
The paid kit ($12, v2) contains the complete measured fix map for all 80+ libraries as JSON and a table, every raw per-version measurement, the spot-check evidence, and the step-by-step guide for Play's 16 KB requirement. This page and the checker script stay free.
Get the kit ($12)Related artifacts
- Agora special full (io.agora.rtc:agora-special-full)
- Agora full-rtc-basic (io.agora.rtc:full-rtc-basic)
- Agora RTC full-sdk (io.agora.rtc:full-sdk)
- Agora RTM sdk (io.agora.rtm:rtm-sdk)
- Agora RTM (io.agora:agora-rtm)