#android #module #unsatisfiedlinkerror #socket.io-java-client
#Android #модуль #ошибка неудовлетворительной ссылки #socket.io-java-client
Вопрос:
Я работаю над добавлением реализации датчика отпечатков пальцев OTG в проект webrtc-client. В библиотеке датчиков отпечатков пальцев есть файл .so, который мне нужно добавить в папку jniLibs. И я преобразовал проект webrtc-client android в библиотеку и пытаюсь включить его в проект, где датчик отпечатков пальцев уже реализован, но как только я добавляю этот модуль в проект, приложение начинает выдавать ошибку для датчика отпечатков пальцев system.so файл, вот подробная информация об ошибке:
Process: com.fingerprint.rcapp, PID: 7793
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.fingerprint.rcapp--XpzGpbTo00QmDUMlC48fQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.fingerprint.rcapp--XpzGpbTo00QmDUMlC48fQ==/lib/arm64, /data/app/com.fingerprint.rcapp--XpzGpbTo00QmDUMlC48fQ==/base.apk!/lib/arm64-v8a, /system/lib64, /product/lib64]]] couldn't find "libast2600.so"
at java.lang.Runtime.loadLibrary0(Runtime.java:1067)
at java.lang.Runtime.loadLibrary0(Runtime.java:1007)
at java.lang.System.loadLibrary(System.java:1667)
at com.fingerprint.rcapp.astdev.natives.PfsBioFpJNI.<clinit>(PfsBioFpJNI.java:95)
at com.fingerprint.rcapp.astdev.natives.PfsBioFpJNI.createInstance(PfsBioFpJNI.java:110)
at com.fingerprint.rcapp.astdev.natives.Ast2600.<init>(Ast2600.java:41)
at com.fingerprint.rcapp.LoginActivity.onCreate(LoginActivity.java:98)
at android.app.Activity.performCreate(Activity.java:7955)
at android.app.Activity.performCreate(Activity.java:7944)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1307)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3423)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3595)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2147)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:237)
at android.app.ActivityThread.main(ActivityThread.java:7814)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1068)
Я пытался искать похожие решения, но ничего не сработало в мою пользу, было бы очень полезно, если бы кто-нибудь мог мне помочь в этом. Спасибо.
Редактировать
Одна вещь, которую я обнаружил, это socket.io-client
библиотека, и io.pristine
библиотеки создают эту проблему. Когда я комментирую эти две библиотеки, он работает нормально, но затем webrtc-client не работает.
implementation 'com.github.nkzawa:socket.io-client:0.4.2'
api 'io.pristine:libjingle:9127@aar'
РЕДАКТИРОВАТЬ 2
Я выяснил основную причину этой проблемы, библиотека датчиков отпечатков пальцев OTG использует 32-разрядный .so
файл, но io.pristine:libjingle:9127@aar
библиотека использует 64-разрядный файл .so, поэтому, когда я добавляю эту библиотеку, она ищет библиотеку датчиков отпечатков пальцев только в 64-разрядных библиотеках. Чтобы исправить эту проблему, я пытаюсь реализовать либо поддержку как 64-разрядных, так и 32-разрядных библиотек, либо запросить 64-разрядную библиотеку у поставщика датчиков отпечатков пальцев.
Ответ №1:
Исправлена эта проблема путем добавления реализации для поддержки как 32-разрядных, так и 64-разрядных библиотек.