Skip to content

NoClassDefFoundError for FingerprintJS classes when using freeRASP 17.0.0-NO_DB with ProGuard/R8 #70

@YMonnier

Description

@YMonnier

Problem

When using freeRASP-Community version 17.0.0-NO_DB with ProGuard/R8 minification enabled in a release build, the app crashes at startup with a NoClassDefFoundError for FingerprintJS classes.

Crash Log

Fatal Exception: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/fingerprintjs/android/fingerprint/FingerprinterFactory;
    at com.aheaditec.talsec.security.e0.a(SourceFile:1)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1154)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:652)
    at java.lang.Thread.run(Thread.java:1563)

Caused by java.lang.ClassNotFoundException: com.fingerprintjs.android.fingerprint.FingerprinterFactory
    at com.aheaditec.talsec.security.e0.a(SourceFile:1)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1154)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:652)
    at java.lang.Thread.run(Thread.java:1563)

Environment

  • freeRASP Version: 17.0.0-NO_DB
  • Build Configuration: Release build with ProGuard/R8 minification enabled
  • Dependency Declaration:
    implementation("com.aheaditec.talsec.security:TalsecSecurity-Community:17.0.0-NO_DB")

Attempted Workarounds

I've added the following ProGuard rules to prevent stripping of FingerprintJS and TrueTime classes:

# Talsec & FingerprintJS
-keep class com.aheaditec.talsec.security.** { *; }
-keep class com.fingerprintjs.android.fingerprint.** { *; }
-keep class com.instacart.truetime.** { *; }

# Keep all members to prevent stripping
-keepclassmembers class com.fingerprintjs.android.fingerprint.** { *; }
-keepclassmembers class com.instacart.truetime.** { *; }

-dontwarn com.fingerprintjs.android.fingerprint.**
-dontwarn com.instacart.truetime.**

Result: The crash persists even with these rules, suggesting the FingerprintJS library is completely missing from the classpath rather than being stripped by R8.

Additional Context

The crash occurs consistently in release builds but not in debug builds (where minification is disabled).

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions