Skip to content

4.0.1 — R8 fix for release builds

Choose a tag to compare

@rtchagas rtchagas released this 26 May 21:36
· 3 commits to master since this release

Patch release covering two issues uncovered while testing 4.0.0 against
a real consumer's R8-minified release build, plus translations for the
new autocomplete strings shipped in 4.0.0. No public API changes —
drop-in upgrade from 4.0.0.

🐛 Fixes

  • Release build crashed on Places.createClient with
    NoSuchMethodException / ServiceConfigurationError. Root cause:
    the Places SDK 5.x reflectively instantiates its internal classes
    via two paths — protobuf reflection (on proto messages that extend
    zzbdq) and JDK ServiceLoader (for gRPC name resolvers and
    similar SPI providers). The SDK's shipped proguard.txt only keeps
    the proto subclass fields, so R8 strips the constructors and the
    consumer's release build fails on startup. PING now ships a consumer
    proguard rule that keeps every constructor of every internal Places
    SDK class. Consumers get the fix automatically.

🌍 i18n

  • Translate the two new picker_autocomplete_* strings (search hint
    and close-button content description) added in 4.0.0 into all 9
    supported locales: ar, ca, cs, de, es-rES, ko-rKR, pt, tr, zh-rTW.

🧹 Internal cleanup

  • Drop the now-unused kotlin-parcelize plugin (last user was
    CustomPlace, removed in 4.0.0). With parcelize gone, also drop the
    explicit kotlin-android plugin and the android.builtInKotlin /
    android.newDsl opt-outs in gradle.properties — we're now on
    AGP 9's built-in Kotlin support with no opt-outs.

📦 Install

dependencies {
    implementation("com.google.android.libraries.places:places:5.1.1")
    implementation("com.github.rtchagas:pingplacepicker:4.0.1")
}

Anyone on 4.0.0 with minifyEnabled = true should upgrade — release
builds will crash on startup without this patch.