Skip to content

LibrePods v0.2.6 crashes immediately on launch on rooted OnePlus 6 — ClassNotFoundException: pathInterpolator #727

Description

@DanielReyesDev

App version

v0.2.6

App source

GitHub

Device

OnePlus 6

Android / OS version

LineageOS Enchilada (Android 14)

Root / hook method

Magisk + Xposed

AirPods model

AirPods Pro 2 (Lightning)

AirPods firmware

No response

What happened

LibrePods v0.2.6 crashes immediately on launch on rooted OnePlus 6 — ClassNotFoundException: pathInterpolator

Description

LibrePods v0.2.6 installs successfully as a Magisk system/privileged app, but the application immediately crashes when launched.

The APK is installed and recognized correctly by Android:

package:me.kavishdevar.librepods

and:

package:/system/priv-app/LibrePods/LibrePods.apk

The activity also resolves correctly:

priority=0 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=false
me.kavishdevar.librepods/.MainActivity

The Magisk module itself appears to be mounted correctly.

However, launching LibrePods results in an immediate crash before the UI becomes usable.

Environment

  • Device: OnePlus 6
  • Android: rooted / Magisk
  • ROM: LineageOS-based
  • Locale: es_MX
  • LibrePods: v0.2.6
  • versionCode: 46
  • Installation method: Magisk module / system privileged app
  • Architecture: ARM64
  • Target SDK reported by Android: 35

module.prop:

id=librepods
name=LibrePods
version=v0.2.6
versionCode=46
author=@kavishdevar
description=Installs LibrePods as a system app for granting BLUETOOTH_PRIVILEGED and MODIFY_PHONE_STATE permission for better integraion with android.

The APK is located at:

/system/priv-app/LibrePods/LibrePods.apk

and has the following SELinux context:

u:object_r:system_file:s0

Crash

The relevant stack trace is:

FATAL EXCEPTION: main
Process: me.kavishdevar.librepods, PID: 7878

java.lang.RuntimeException:
Unable to start activity
ComponentInfo{me.kavishdevar.librepods/me.kavishdevar.librepods.MainActivity}:

android.content.res.Resources$NotFoundException:
Drawable me.kavishdevar.librepods:interpolator/btn_checkbox_checked_mtrl_animation_interpolator_1
with resource ID #0x7f0c0001

The important underlying exception is:

Caused by: java.lang.ClassNotFoundException:
Didn't find class "pathInterpolator"
on path:
DexPathList[
    [zip file "/system/priv-app/LibrePods/LibrePods.apk"],
    nativeLibraryDirectories=[
        /system/priv-app/LibrePods/lib/arm64,
        /system/priv-app/LibrePods/LibrePods.apk!/lib/arm64-v8a,
        /system/lib64,
        /system/system_ext/lib64
    ]
]

Full relevant portion:

08-15 13:32:39.077 E AndroidRuntime:
FATAL EXCEPTION: main

08-15 13:32:39.077 E AndroidRuntime:
Process: me.kavishdevar.librepods, PID: 7878

08-15 13:32:39.077 E AndroidRuntime:
java.lang.RuntimeException:
Unable to start activity ComponentInfo{
me.kavishdevar.librepods/me.kavishdevar.librepods.MainActivity}:

android.content.res.Resources$NotFoundException:
Drawable me.kavishdevar.librepods:interpolator/
btn_checkbox_checked_mtrl_animation_interpolator_1
with resource ID #0x7f0c0001

...

08-15 13:32:39.079 E AndroidRuntime:
Caused by: java.lang.ClassNotFoundException:
Didn't find class "pathInterpolator"
on path: DexPathList[
    [zip file "/system/priv-app/LibrePods/LibrePods.apk"],
    nativeLibraryDirectories=[
        /system/priv-app/LibrePods/lib/arm64,
        /system/priv-app/LibrePods/LibrePods.apk!/lib/arm64-v8a,
        /system/lib64,
        /system/system_ext/lib64
    ]
]

08-15 13:32:39.085 W ActivityTaskManager:
Force finishing activity
me.kavishdevar.librepods/.MainActivity

08-15 13:32:39.103 I ActivityManager:
Process me.kavishdevar.librepods (pid 7878) has died

Additional PackageManager warning

Immediately before the crash, Android also reports:

W PackageManager:
Failure retrieving resources for me.kavishdevar.librepods:

Drawable me.kavishdevar.librepods:interpolator/
btn_checkbox_checked_mtrl_animation_interpolator_1
with resource ID #0x7f0c0001

This appears to correlate directly with the subsequent Resources$NotFoundException.

Installation verification

The Magisk module is present:

/data/adb/modules/librepods/

with:

/data/adb/modules/librepods/module.prop
/data/adb/modules/librepods/system/priv-app/LibrePods/LibrePods.apk

The mounted system APK is:

12633853 bytes

and Android resolves it normally:

adb shell pm list packages | grep -i librepods

package:me.kavishdevar.librepods
adb shell pm path me.kavishdevar.librepods

package:/system/priv-app/LibrePods/LibrePods.apk
adb shell cmd package resolve-activity --brief me.kavishdevar.librepods

priority=0 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=false
me.kavishdevar.librepods/.MainActivity

So this does not appear to be a simple failure to install/mount/register the APK.

Possible cause

The crash seems related to an Android resource generated by Material/AndroidX:

btn_checkbox_checked_mtrl_animation_interpolator_1

which eventually attempts to inflate:

pathInterpolator

as an XML drawable/interpolator class.

Android's DrawableInflater reaches:

DrawableInflater.inflateFromClass()

and fails with:

ClassNotFoundException: Didn't find class "pathInterpolator"

This may indicate one of the following:

  1. An incorrectly generated/packaged interpolator XML resource.
  2. A resource compatibility problem between the APK's Material/AndroidX dependencies and the Android framework on this device.
  3. An Android build/resource-processing issue where pathInterpolator is emitted in a form that this Android version cannot resolve.
  4. A case-sensitivity or resource-class-name issue (pathInterpolator vs the framework class expected by the device).
  5. A resource merge/shrinking/packaging problem introduced in v0.2.6.
  6. A device/ROM-specific incompatibility with the version of Material Components/AppCompat used by v0.2.6.

I would particularly investigate why an interpolator resource is being inflated through DrawableInflater and why the XML references pathInterpolator instead of resolving to the appropriate framework/AndroidX class.

Regression

Older LibrePods versions, including the previous alpha version I was using, did not exhibit this immediate startup crash on this same device/environment.

The previous LibrePods alpha was usable on the same rooted OnePlus 6, including the Hearing Aid / Act as an Apple Device functionality.

The problem appeared after moving to v0.2.6.

Reproduction

  1. Root a OnePlus 6 with Magisk.
  2. Install LibrePods v0.2.6 as the provided Magisk module.
  3. Reboot.
  4. Verify:
adb shell pm list packages | grep -i librepods
adb shell pm path me.kavishdevar.librepods
  1. Launch LibrePods.
  2. The app immediately closes.
  3. Check:
adb logcat | grep -iE 'librepods|AndroidRuntime|FATAL EXCEPTION|Resources\$NotFoundException|ClassNotFoundException'
  1. Observe the pathInterpolator / btn_checkbox_checked_mtrl_animation_interpolator_1 exception.

Request

Could you please investigate whether the btn_checkbox_checked_mtrl_animation_interpolator_1 resource or its generated XML changed in v0.2.6?

It would also be useful to verify the Material/AndroidX dependency versions and the final packaged resource inside the APK.

In particular, I would like to know whether the following resource is expected to contain something similar to:

<pathInterpolator ... />

and whether that is compatible with the Android framework/resource inflater on older Android/LineageOS devices.

If this is a build/resource packaging issue, could it be fixed in the next release?

I can provide:

  • full adb logcat
  • bugreport.zip
  • APK/resource inspection
  • aapt2 dump resources output
  • APK res/ contents
  • device/build information
  • Magisk module contents

if needed.

Additional note

The crash occurs during the startup of MainActivity, before LibrePods reaches a usable UI.

This does not currently appear to be related to Bluetooth, Hearing Aid, Magisk permissions, or the privileged-app installation itself. The APK is correctly mounted and resolved by Android, but resource inflation fails during activity startup.

I am keeping the Hearing Aid/audiogram behavior as a separate issue so this report can focus specifically on the v0.2.6 startup crash.

Logs

No response

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    androidAndroid app related issuesbugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions