Question by
khaldinks · Oct 14, 2021 at 11:28 AM ·
androidandroidpluginnative pluginandroidjavaobject
fingerprintjs integration / NoClassDefFoundException
I'm trying to integrate https://github.com/fingerprintjs/fingerprint-android into my unity app for android. I've added this code to my native plugin, as shown in example:
...
import kotlin.Unit;
import kotlin.jvm.functions.Function1;
import com.fingerprintjs.android.fingerprint.Configuration;
import com.fingerprintjs.android.fingerprint.FingerprintResult;
import com.fingerprintjs.android.fingerprint.Fingerprinter;
import com.fingerprintjs.android.fingerprint.FingerprinterFactory;
import com.fingerprintjs.android.fingerprint.signal_providers.StabilityLevel;
public class NativeLogic
{
...
public static void GenerateFingerprint()
{
Fingerprinter fingerprinter = FingerprinterFactory
.getInstance(UnityPlayer.currentActivity.getApplicationContext(), new Configuration(3));
fingerprinter.getFingerprint(StabilityLevel.UNIQUE, new Function1<FingerprintResult, Unit>() {
public Unit invoke(FingerprintResult fingerprintResult) {
UnityPlayer.UnitySendMessage("NativeLogicController", "NotifyDeviceIdGenerated", fingerprintResult.getFingerprint());
return null;
}
});
}
...
}
And also added gradle dependencies, like this:
android {
compileSdkVersion 28
defaultConfig {
minSdkVersion 23
targetSdkVersion 28
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
...
implementation "org.jetbrains.kotlin:kotlin-stdlib:1.5"
implementation "com.github.fingerprintjs:fingerprint-android:1.2"
}
And then i call it from Awake method of a MonoBehaviour like this
private void Awake()
{
new AndroidJavaClass("com.sample.app.NativeLogic").CallStatic("GenerateFingerprint");
}
It builds alright, but as soon as i call GenerateFingerprint() in runtime i get the exception: NoClassDefFoundException: Failed resolution of: Lcom/fingerprintjs/android/fingerprint/Configuration
Which is kinda odd, because i can see that class with APK analyzer:
I've seen that this kind of trouble can be caused by minification, so i double checked that it is disabled. Is there anything i am missing, anything else i can try?
ff6a206b082c91a460a2030b4681.png
(4.7 kB)
Comment