Android Issue

General information about Neurotechnology and its software

Android Issue

Postby hackontech » May 07, 2017 08:29

Hello,

We have worked on MegaMatcher SDK 5.0 and we have successfully built the app. The app works fine on android version < 5.0 but on 5.0 and later it crashes. The license manager is called and the licenses are obtained, the finger print is extracted but when the template is sent to the server, the server doesn"t receives it and the app crashes. This app works totally fine on android < 5.0 (as we have been using the app for over a year). Also on 5.0 the License Manager app stops working and it as we can see that in the notification area.

Below is the logcat for android 5.0 where the app crashes.[code]05-07 13:01:51.986: A/art(31503): art/runtime/check_jni.cc:65] JNI DETECTED ERROR IN APPLICATION: the return type of CallObjectMethodV does not match void com.neurotec.cluster.TaskProgress.setProgress(int)
05-07 13:01:51.986: A/art(31503): art/runtime/check_jni.cc:65] in call to CallObjectMethodV
05-07 13:01:51.986: A/art(31503): art/runtime/check_jni.cc:65] from void com.neurotec.cluster.Client.getProgress(long, int, com.neurotec.cluster.TaskProgress)
05-07 13:01:51.986: A/art(31503): art/runtime/check_jni.cc:65] "AsyncTask #4" prio=5 tid=21 Runnable
05-07 13:01:51.986: A/art(31503): art/runtime/check_jni.cc:65] | group="main" sCount=0 dsCount=0 obj=0x1366a400 self=0x9f9c2c00
05-07 13:01:51.986: A/art(31503): art/runtime/check_jni.cc:65] | sysTid=4082 nice=10 cgrp=apps/bg_non_interactive sched=0/0 handle=0xb4ffd580
05-07 13:01:51.986: A/art(31503): art/runtime/check_jni.cc:65] | state=R schedstat=( 19271407 31127554 60 ) utm=0 stm=1 core=3 HZ=100
05-07 13:01:51.986: A/art(31503): art/runtime/check_jni.cc:65] | stack=0xa28ae000-0xa28b0000 stackSize=1036KB
05-07 13:01:51.986: A/art(31503): art/runtime/check_jni.cc:65] | held mutexes= "mutator lock"(shared held)
05-07 13:01:51.986: A/art(31503): art/runtime/check_jni.cc:65] native: #00 pc 00004640 /system/lib/libbacktrace_libc++.so (UnwindCurrent::Unwind(unsigned int, ucontext*)+23)
05-07 13:01:51.986: A/art(31503): art/runtime/check_jni.cc:65] native: #01 pc 00002e8d /system/lib/libbacktrace_libc++.so (Backtrace::Unwind(unsigned int, ucontext*)+8)
05-07 13:01:51.986: A/art(31503): art/runtime/check_jni.cc:65] native: #02 pc 002484a9 /system/lib/libart.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, int, char const*, art::mirror::ArtMethod*)+68)
05-07 13:01:51.986: A/art(31503): art/runtime/check_jni.cc:65] native: #03 pc 0022d1e3 /system/lib/libart.so (art::Thread::Dump(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) const+146)
05-07 13:01:51.986: A/art(31503): art/runtime/check_jni.cc:65] native: #04 pc 000b17d3 /system/lib/libart.so (art::JniAbort(char const*, char const*)+582)
05-07 13:01:51.986: A/art(31503): art/runtime/check_jni.cc:65] native: #05 pc 000b1f0d /system/lib/libart.so (art::JniAbortF(char const*, char const*, ...)+60)
05-07 13:01:51.986: A/art(31503): art/runtime/check_jni.cc:65] native: #06 pc 000b28c3 /system/lib/libart.so (art::ScopedCheck::CheckSig(_jmethodID*, char const*, bool) (.constprop.130)+266)
05-07 13:01:51.986: A/art(31503): art/runtime/check_jni.cc:65] native: #07 pc 000b97e1 /system/lib/libart.so (art::CheckJNI::CallObjectMethodV(_JNIEnv*, _jobject*, _jmethodID*, std::__va_list)+60)
05-07 13:01:51.986: A/art(31503): art/runtime/check_jni.cc:65] native: #08 pc 00008a1c /data/app/com.hackontech.rsi-1/lib/arm/libNClusterJni.so (JNIEnv_::CallObjectMethod(_jobject*, _jmethodID*, ...)+32)
05-07 13:01:51.986: A/art(31503): art/runtime/check_jni.cc:65] native: #09 pc 00008c6c /data/app/com.hackontech.rsi-1/lib/arm/libNClusterJni.so (Java_com_neurotec_cluster_Client_getProgress+228)
05-07 13:01:51.986: A/art(31503): art/runtime/check_jni.cc:65] native: #10 pc 000c4c81 /data/dalvik-cache/arm/data@app@com.hackontech.rsi-1@base.apk@classes.dex (Java_com_neurotec_cluster_Client_getProgress__JILcom_neurotec_cluster_TaskProgress_2+128)
05-07 13:01:51.986: A/art(31503): art/runtime/check_jni.cc:65] at com.neurotec.cluster.Client.getProgress(Native method)
05-07 13:01:51.986: A/art(31503): art/runtime/check_jni.cc:65] at com.neurotec.cluster.Client.getProgress(Client.java:94)
05-07 13:01:51.986: A/art(31503): art/runtime/check_jni.cc:65] - locked <0x11e57a00> (a com.neurotec.cluster.Client)
05-07 13:01:51.986: A/art(31503): art/runtime/check_jni.cc:65] at com.hackontech.rsi.BiometricActivity$SendTaskTemp.doInBackground(BiometricActivity.java:657)
05-07 13:01:51.986: A/art(31503): art/runtime/check_jni.cc:65] at com.hackontech.rsi.BiometricActivity$SendTaskTemp.doInBackground(BiometricActivity.java:1)
05-07 13:01:51.986: A/art(31503): art/runtime/check_jni.cc:65] at android.os.AsyncTask$2.call(AsyncTask.java:288)
05-07 13:01:51.986: A/art(31503): art/runtime/check_jni.cc:65] at java.util.concurrent.FutureTask.run(FutureTask.java:237)
05-07 13:01:51.986: A/art(31503): art/runtime/check_jni.cc:65] at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
05-07 13:01:51.986: A/art(31503): art/runtime/check_jni.cc:65] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
05-07 13:01:51.986: A/art(31503): art/runtime/check_jni.cc:65] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
05-07 13:01:51.986: A/art(31503): art/runtime/check_jni.cc:65] at java.lang.Thread.run(Thread.java:818)
05-07 13:01:51.986: A/art(31503): art/runtime/check_jni.cc:65]
05-07 13:01:52.066: A/libc(31503): Fatal signal 11 (SIGSEGV), code 1, fault addr 0x42 in tid 4082 (AsyncTask #4)
05-07 13:01:52.146: I/DEBUG(281): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
05-07 13:01:52.146: I/DEBUG(281): Build fingerprint: "samsung/hlteuc/hlteatt:5.0/LRX21V/N900AUCUEOC2:user/release-keys"
05-07 13:01:52.146: I/DEBUG(281): Revision: "8"
05-07 13:01:52.146: I/DEBUG(281): ABI: "arm"
05-07 13:01:52.146: I/DEBUG(281): pid: 31503, tid: 4082, name: AsyncTask #4 >>> com.hackontech.rsi <<<
05-07 13:01:52.146: I/DEBUG(281): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x42
05-07 13:01:52.226: I/DEBUG(281): Abort message: "art/runtime/check_jni.cc:65] JNI DETECTED ERROR IN APPLICATION: the return type of CallObjectMethodV does not match void com.neurotec.cluster.TaskProgress.setProgress(int)"
05-07 13:01:52.236: I/DEBUG(281): r0 a29af4a8 r1 fffffaa4 r2 00000000 r3 a8b90af9
05-07 13:01:52.236: I/DEBUG(281): r4 a29af4a8 r5 00000002 r6 b6fbce04 r7 00000000
05-07 13:01:52.236: I/DEBUG(281): r8 b4efcc68 r9 b4f07888 sl b4f69300 fp 75e89a80
05-07 13:01:52.236: I/DEBUG(281): ip fffffab0 sp a29af3c8 lr b4e252c5 pc b4e2ab08 cpsr a00e0030
05-07 13:01:52.236: I/DEBUG(281): backtrace:
05-07 13:01:52.236: I/DEBUG(281): #00 pc 0022ab08 /system/lib/libart.so (art::StackDumpVisitor::VisitFrame()+27)
05-07 13:01:52.236: I/DEBUG(281): #01 pc 002252c3 /system/lib/libart.so (art::StackVisitor::WalkStack(bool)+250)
05-07 13:01:52.236: I/DEBUG(281): #02 pc 0022d223 /system/lib/libart.so (art::Thread::Dump(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) const+210)
05-07 13:01:52.236: I/DEBUG(281): #03 pc 00235b61 /system/lib/libart.so (art::ThreadList::DumpLocked(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)+104)
05-07 13:01:52.236: I/DEBUG(281): #04 pc 0021da0d /system/lib/libart.so (art::AbortState::Dump(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)+236)
05-07 13:01:52.236: I/DEBUG(281): #05 pc 0021dc59 /system/lib/libart.so (art::Runtime::Abort()+72)
05-07 13:01:52.236: I/DEBUG(281): #06 pc 000a838b /system/lib/libart.so (art::LogMessage::~LogMessage()+1322)
05-07 13:01:52.236: I/DEBUG(281): #07 pc 000b19b1 /system/lib/libart.so (art::JniAbort(char const*, char const*)+1060)
05-07 13:01:52.236: I/DEBUG(281): #08 pc 000b1f0d /system/lib/libart.so (art::JniAbortF(char const*, char const*, ...)+60)
05-07 13:01:52.236: I/DEBUG(281): #09 pc 000b28c3 /system/lib/libart.so (_ZN3art11ScopedCheck8CheckSigEP10_jmethodIDPKcb.constprop.130+266)
05-07 13:01:52.236: I/DEBUG(281): #10 pc 000b97e1 /system/lib/libart.so (art::CheckJNI::CallObjectMethodV(_JNIEnv*, _jobject*, _jmethodID*, std::__va_list)+60)
05-07 13:01:52.236: I/DEBUG(281): #11 pc 00008a1c /data/app/com.hackontech.rsi-1/lib/arm/libNClusterJni.so (JNIEnv_::CallObjectMethod(_jobject*, _jmethodID*, ...)+32)
05-07 13:01:52.236: I/DEBUG(281): #12 pc 00008c6c /data/app/com.hackontech.rsi-1/lib/arm/libNClusterJni.so (Java_com_neurotec_cluster_Client_getProgress+228)
05-07 13:01:52.236: I/DEBUG(281): #13 pc 000c4c81 /data/dalvik-cache/arm/data@app@com.hackontech.rsi-1@base.apk@classes.dex
05-07 13:01:52.276: V/audio_hw_primary(296): out_standby: enter: usecase(0: deep-buffer-playback)
05-07 13:01:52.456: V/audio_hw_primary(296): stop_output_stream: enter: usecase(0: deep-buffer-playback)
05-07 13:01:52.456: V/audio_hw_primary(296): disable_audio_route: enter: usecase(0)
05-07 13:01:52.456: V/audio_hw_primary(296): disable_audio_route: reset mixer path: deep-buffer-playback
05-07 13:01:52.456: D/audio_route(296): ++++ audio_route_update_mixer ==============
05-07 13:01:52.456: D/audio_route(296): Setting mixer control: SLIMBUS_0_RX Audio Mixer MultiMedia1
05-07 13:01:52.466: D/audio_route(296): Setting mixer control: value: 0
05-07 13:01:52.466: D/audio_route(296): ------ audio_route_update_mixer ==============
05-07 13:01:52.476: V/audio_hw_primary(296): disable_audio_route: exit
05-07 13:01:52.476: V/audio_hw_primary(296): disable_snd_device: snd_device(2: speaker)
05-07 13:01:52.476: D/audio_route(296): ++++ audio_route_update_mixer ==============
05-07 13:01:52.476: D/audio_route(296): Setting mixer control: SPK DRV Volume
05-07 13:01:52.476: D/audio_route(296): Setting mixer control: value: 0
05-07 13:01:52.486: D/audio_route(296): Setting mixer control: RX7 Digital Volume
05-07 13:01:52.486: D/audio_route(296): Setting mixer control: value: 0
05-07 13:01:52.486: D/audio_route(296): Setting mixer control: COMP0 Switch
05-07 13:01:52.486: D/audio_route(296): Setting mixer control: value: 0
05-07 13:01:52.486: D/audio_route(296): Setting mixer control: RX7 MIX1 INP1, value: 0
05-07 13:01:52.496: D/audio_route(296): Setting mixer control: DAC1 Switch
05-07 13:01:52.496: D/audio_route(296): Setting mixer control: value: 0
05-07 13:01:52.506: D/audio_route(296): Setting mixer control: SPK Status
05-07 13:01:52.506: D/audio_route(296): Setting mixer control: value: 0
05-07 13:01:52.506: D/audio_route(296): ------ audio_route_update_mixer ==============
05-07 13:01:52.506: V/audio_hw_primary(296): stop_output_stream: exit: status(0)
05-07 13:01:52.506: V/audio_hw_primary(296): out_standby: exit
05-07 13:01:52.596: D/STATUSBAR-WifiQuickSettingButton(1192): onWifiSignalChanged enabled=true enabledDesc:"Zong4G"
05-07 13:01:53.006: D/STATUSBAR-WifiQuickSettingButton(1192): onWifiSignalChanged enabled=true enabledDesc:"Zong4G"
05-07 13:01:53.006: D/StatusBar.NetworkController(1192): applyOpen
05-07 13:01:53.006: D/StatusBar.NetworkController(1192): applyOpen
05-07 13:01:53.006: D/StatusBar.NetworkController(1192): applyOpen
05-07 13:01:53.006: D/StatusBar.NetworkController(1192): applyOpen
05-07 13:01:53.266: I/DEBUG(281): Tombstone written to: /data/tombstones/tombstone_04
05-07 13:01:53.266: E/(281): !@dumpstate -k -t -z -d -o /data/log/dumpstate_app_native -m 31503
05-07 13:01:53.266: I/BootReceiver(870): Copying /data/tombstones/tombstone_04 to DropBox (SYSTEM_TOMBSTONE)
05-07 13:01:53.296: I/dumpstate(4105): begin
05-07 13:01:53.316: W/ActivityManager(870): Force finishing activity com.hackontech.rsi/.FingerActivity
05-07 13:01:53.376: I/dumpstate(4110): begin
05-07 13:01:53.376: I/dumpstate(4110): dumpstate is still running
05-07 13:01:53.376: D/StatusBarManagerService(870): manageDisableList userId=0 what=0x0 pkg=WindowManager.LayoutParams
05-07 13:01:53.376: D/PointerIcon(870): setMouseIconStyle1 pointerType: 1001iconType:101 flag:0
05-07 13:01:53.376: D/PointerIcon(870): setMouseCustomIcon IconType is same.101
05-07 13:01:53.376: D/PointerIcon(870): setHoveringSpenIconStyle1 pointerType: 10001iconType:1 flag:0
05-07 13:01:53.376: D/PointerIcon(870): setHoveringSpenCustomIcon IconType is same.1
05-07 13:01:53.406: I/SurfaceFlinger(263): id=2962 createSurf (49x49),1 flag=4, ssi
05-07 13:01:53.416: D/CrashAnrDetector(870): Build: samsung/hlteuc/hlteatt:5.0/LRX21V/N900AUCUEOC2:user/release-keys
05-07 13:01:53.416: D/CrashAnrDetector(870): Hardware: MSM8974
05-07 13:01:53.416: D/CrashAnrDetector(870): Revision: 8
05-07 13:01:53.416: D/CrashAnrDetector(870): Bootloader: N900AUCUEOC2
05-07 13:01:53.416: D/CrashAnrDetector(870): Radio: unknown
05-07 13:01:53.416: D/CrashAnrDetector(870): Kernel: Linux version 3.4.0-4335446 (dpi@SWHD4309) (gcc version 4.8 (GCC) ) #1 SMP PREEMPT Fri Jul 31 21:47:49 KST 2015
05-07 13:01:53.416: D/CrashAnrDetector(870): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
05-07 13:01:53.416: D/CrashAnrDetector(870): Build fingerprint: "samsung/hlteuc/hlteatt:5.0/LRX21V/N900AUCUEOC2:user/release-keys"
05-07 13:01:53.416: D/CrashAnrDetector(870): Revision: "8"
05-07 13:01:53.416: D/CrashAnrDetector(870): ABI: "arm"
05-07 13:01:53.416: D/CrashAnrDetector(870): pid: 31503, tid: 4082, name: AsyncTask #4 >>> com.hackontech.rsi <<<
05-07 13:01:53.416: D/CrashAnrDetector(870): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x42
05-07 13:01:53.416: D/CrashAnrDetector(870): Abort message: "art/runtime/check_jni.cc:65] JNI DETECTED ERROR IN APPLICATION: the return type of CallObjectMethodV does not match void com.neurotec.cluster.TaskProgress.setProgress(int)"
05-07 13:01:53.416: D/CrashAnrDetector(870): r0 a29af4a8 r1 fffffaa4 r2 00000000 r3 a8b90af9
05-07 13:01:53.416: D/CrashAnrDetector(870): r4 a29af4a8 r5 00000002 r6 b6fbce04 r7 00000000
05-07 13:01:53.416: D/CrashAnrDetector(870): r8 b4efcc68 r9 b4f07888 sl b4f69300 fp 75e89a80
05-07 13:01:53.416: D/CrashAnrDetector(870): ip fffffab0 sp a29af3c8 lr b4e252c5 pc b4e2ab08 cpsr a00e0030
05-07 13:01:53.416: D/CrashAnrDetector(870): d0 0000000000000000 d1 0000000000000000
05-07 13:01:53.416: D/CrashAnrDetector(870): d2 0000000000000000 d3 0000000000000000
05-07 13:01:53.416: D/CrashAnrDetector(870): d4 636466366278303d d5 207c20200a386365
05-07 13:01:53.416: D/CrashAnrDetector(870): d6 20533d6574617473 d7 6174736465686373
05-07 13:01:53.416: D/CrashAnrDetector(870): d8 0000000000000000 d9 0000000000000000
05-07 13:01:53.416: D/CrashAnrDetector(870): d10 0000000000000000 d11 0000000000000000
05-07 13:01:53.416: D/CrashAnrDetector(870): d12 0000000000000000 d13 0000000000000000
05-07 13:01:53.416: D/CrashAnrDetector(870): d14 0000000000000000 d15 0000000000000000
05-07 13:01:53.416: D/CrashAnrDetector(870): d16 0000000000000000 d17 ad1acc00ad1ad000
05-07 13:01:53.416: D/CrashAnrDetector(870): d18 9a7135009a713520 d19 9a7134c09a7134e0
05-07 13:01:53.416: D/CrashAnrDetector(870): d20 9a7134809a7134a0 d21 9a7134409a713460
05-07 13:01:53.416: D/CrashAnrDetector(870): d22 9a7134009a713420 d23 9a7133e09a713380
05-07 13:01:53.416: D/CrashAnrDetector(870): d24 4040400000004040 d25 4040400000004040
05-07 13:01:53.416: D/CrashAnrDetector(870): d26 0202020202020202 d27 0202020202020202
05-07 13:01:53.416: D/CrashAnrDetector(870): d28 0101010101010101 d29 0101010101010101
05-07 13:01:53.416: D/CrashAnrDetector(870): d30 0000000000000000 d31 0000000000000000
05-07 13:01:53.416: D/CrashAnrDetector(870): scr 28000013
05-07 13:01:53.416: D/CrashAnrDetector(870): backtrace:
05-07 13:01:53.416: D/CrashAnrDetector(870): #00 pc 0022ab08 /system/lib/libart.so (art::StackDumpVisitor::VisitFrame()+27)
05-07 13:01:53.416: D/CrashAnrDetector(870): #01 pc 002252c3 /system/lib/libart.so (art::StackVisitor::WalkStack(bool)+250)
05-07 13:01:53.416: D/CrashAnrDetector(870): #02 pc 0022d223 /system/lib/libart.so (art::Thread::Dump(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) const+210)
05-07 13:01:53.416: D/CrashAnrDetector(870): #03 pc 00235b61 /system/lib/libart.so (art::ThreadList::DumpLocked(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)+104)
05-07 13:01:53.416: D/CrashAnrDetector(870): #04 pc 0021da0d /system/lib/libart.so (art::AbortState::Dump(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)+236)
05-07 13:01:53.416: D/CrashAnrDetector(870): #05 pc 0021dc59 /system/lib/libart.so (art::Runtime::Abort()+72)
05-07 13:01:53.416: D/CrashAnrDetector(870): #06 pc 000a838b /system/lib/libart.so (art::LogMessage::~LogMessage()+1322)
05-07 13:01:53.416: D/CrashAnrDetector(870): #07 pc 000b19b1 /system/lib/libart.so (art::JniAbort(char const*, char const*)+1060)
05-07 13:01:53.416: D/CrashAnrDetector(870): #08 pc 000b1f0d /system/lib/libart.so (art::JniAbortF(char const*, char const*, ...)+60)
05-07 13:01:53.416: D/CrashAnrDetector(870): #09 pc 000b28c3 /system/lib/libart.so (_ZN3art11ScopedCheck8CheckSigEP10_jmethodIDPKcb.constprop.130+266)
05-07 13:01:53.416: D/CrashAnrDetector(870): #10 pc 000b97e1 /system/lib/libart.so (art::CheckJNI::CallObjectMethodV(_JNIEnv*, _jobject*, _jmethodID*, std::__va_list)+60)
05-07 13:01:53.416: D/CrashAnrDetector(870): #11 pc 00008a1c /data/app/com.hackontech.rsi-1/lib/arm/libNClusterJni.so (JNIEnv_::CallObjectMethod(_jobject*, _jmethodID*, ...)+32)
05-07 13:01:53.416: D/CrashAnrDetector(870): #12 pc 00008c6c /data/app/com.hackontech.rsi-1/lib/arm/libNClusterJni.so (Java_com_neurotec_cluster_Client_getProgress+228)
05-07 13:01:53.416: D/CrashAnrDetector(870): #13 pc 000c4c81 /data/dalvik-cache/arm/data@app@com.hackontech.rsi-1@base.apk@classes.dex
05-07 13:01:53.416: D/CrashAnrDetector(870): stack:
05-07 13:01:53.416: D/CrashAnrDetector(870): a29af348 b6fc4ff0
05-07 13:01:53.416: D/CrashAnrDetector(870): a29af34c b6f9ee11 /system/lib/libc.so (je_tcache_event_hard+56)
05-07 13:01:53.416: D/CrashAnrDetector(870): a29af350 73222288 /system/framework/arm/boot.oat
05-07 13:01:53.416: D/CrashAnrDetector(870): a29af354 aaa59000 [anon:libc_malloc]
05-07 13:01:53.416: D/CrashAnrDetector(870): a29af358 00353136
05-07 13:01:53.416: D/CrashAnrDetector(870): a29af35c 0000007b
05-07 13:01:53.416: D/CrashAnrDetector(870): a29af360 aaa2b420 [anon:libc_malloc]
05-07 13:01:53.416: D/CrashAnrDetector(870): a29af364 b4ec02fc /system/lib/libart.so
05-07 13:01:53.416: D/CrashAnrDetector(870): a29af368 aaa2b458 [anon:libc_malloc]
05-07 13:01:53.416: D/CrashAnrDetector(870): a29af36c b4ef8df8 /system/lib/libart.so
05-07 13:01:53.416: D/CrashAnrDetector(870): a29af370 aaa2b420 [anon:libc_malloc]
05-07 13:01:53.416: D/CrashAnrDetector(870): a29af374 b4ca4f54 /system/lib/libart.so (std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::operator<< <std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*)+284)
05-07 13:01:53.416: D/CrashAnrDetector(870): processName:com.hackontech.rsi
05-07 13:01:53.416: D/CrashAnrDetector(870): broadcastEvent : com.hackontech.rsi SYSTEM_TOMBSTONE
05-07 13:01:53.436: I/OpenGLRenderer(870): Initialized EGL, version 1.4
05-07 13:01:53.446: W/ContextImpl(870): Calling a method in the system process without a qualified user: android.app.ContextImpl.sendBroadcast:1713 com.android.server.analytics.data.collection.application.CrashAnrDetector.broadcastEvent:296 com.android.server.analytics.data.collection.application.CrashAnrDetector.processDropBoxEntry:254 com.android.server.analytics.data.collection.application.CrashAnrDetector.access$100:60 com.android.server.analytics.data.collection.application.CrashAnrDetector$1.onReceive:102 [/code]
hackontech
 
Posts: 7
Joined: May 07, 2017 07:52

Re: Android Issue

Postby Martynas » May 11, 2017 07:44

Hi,

What is the revision number of the SDK you are using? It can be found in the Revision.txt file of the downloaded SDK.
Could you also provide the code snippet, which would show how you perform identification?
Best regards,

Martynas
Software Consultant
Neurotechnology
Martynas
Neurotechnology
 
Posts: 2192
Joined: Sep 19, 2008 10:02
Location: Vilnius, Lithuania

Re: Android Issue

Postby hackontech » May 11, 2017 08:01

Product revision number: 137915
Code: Select all
private class SendTaskTemp extends AsyncTask<ParseArgsResult, String, String> {

      // Read file to get the template
      private byte[] readFile(String fileName) {
         byte[] template;
         FileInputStream fis = null;
         try {
            File templateFile = new File(fileName);
            fis = new FileInputStream(templateFile);
            template = new byte[fis.available()];
            fis.read(template);
            publishProgress(getString(R.string.msg_file_read_completed));
         } catch (Exception e) {
            String result = String.format("%s %s.%n", getString(R.string.msg_templates_not_loaded), fileName);
            publishProgress(result);
            Log.e(TAG, e.toString(), e);
            return null;
         } finally {
            if (fis != null) {
               try {
                  fis.close();
               } catch (IOException e) {
                  Log.e(TAG, e.toString(), e);

               }
            }
         }
         return template;
      }

      // Create the task using the query.
      private Task createTask(byte[] template, String query) {
         Task task = new Task();
         task.setMode(TaskMode.NORMAL);
         task.setTemplate(template);
         task.setQuery(query);
         task.setResultLimit(100);
         publishProgress(getString(R.string.msg_task_created));
         publishProgress(task.toString());
         publishProgress(task.getQuery());
         return task;
      }

      // Create client and send task.
      private int sendTask(Client client, Task task) throws Exception {
         publishProgress(getString(R.string.msg_start_sending_task));
         int taskId;
         try {
            taskId = client.sendTask(task);
         } catch (Exception e) {
            Log.e(TAG, e.toString(), e);
            publishProgress(getString(R.string.msg_unable_to_send_task));
            throw e;
         }
         publishProgress(getString(R.string.msg_send_task_finished));
         if (taskId == -1) {
            publishProgress(getString(R.string.msg_get_taskid_failed) + "\n" + getString(R.string.msg_taskid_not_added));
            throw new IllegalArgumentException(getString(R.string.msg_get_taskid_failed) + "\n" + getString(R.string.msg_taskid_not_added));
         }

         publishProgress(String.format("%s  %d%n", getString(R.string.msg_get_task_started), taskId));
         return taskId;
      }

      @Override
      protected void onPreExecute() {
         //mTxtResult.setText("");
         showProgress(R.string.msg_processing);
      }

      @Override
      protected String doInBackground(ParseArgsResult... results) {
         StringBuilder result = new StringBuilder();
         Client client = null;

         // Read file to get the template
         byte[] template = readFile(results[0].getTemplateFile());
         if (template == null) {
            return getString(R.string.msg_file_read_failed);
         } else {
            result.append(results[0].getTemplateFile());
            result.append("\n\n");
         }

         try {
            // Create task.
            Task task = createTask(template, results[0].getQuery());
            int taskId;

            // Send task.
            client = new Client(results[0].getServerIp(), results[0].getServerPort());
            taskId = sendTask(client, task);

            // Wait for task to complete.
            publishProgress(getString(R.string.msg_waiting_for_result));
            int count;
            TaskProgress progress = null;
            do {
               progress = client.getProgress(taskId);
               publishProgress(getString(R.string.msg_waiting_for_result) + progress + "%");
               if (progress.getProgress() != 100) {
                  Thread.sleep(100);
               }

               if (progress.getProgress() < 0) {
                  publishProgress(getString(R.string.msg_task_aborted));
                  return getString(R.string.msg_task_not_completed);
               }

            } while (progress.getProgress() != 100);

            count = progress.getResultCount();

            if (count > 0) {
               runOnUiThread(new Runnable() {
                  @Override
                  public void run() {
                     mEnrollButton.setVisibility(View.GONE);
                  }
               });
               TaskResult res = client.getTaskResult(taskId, 1, count);
               for (ClusterResult clusterRes : res.getRes()) {
                  result.append(String.format("%n%s: %s, %s: %d", getString(R.string.msg_matched_with_id), clusterRes.getId(),
                        getString(R.string.msg_score), clusterRes.getSimilarity()));
                  AppUtility.PARTICIPANT_FINGER_ID = clusterRes.getId();
                  publishProgress(getString(R.string.msg_match_found));
               }
               if(AppUtility.ACTION.equals("IDENTIFY"))
               {
                  startActivity(new Intent(BiometricActivity.this,ParticipantLoginActivity.class));
                  finish();
               }
               if(AppUtility.ACTION.equals("CHECKIN") || AppUtility.ACTION.equals("CHECKOUT"))
               {
                  startActivity(new Intent(BiometricActivity.this,TreatmentAttendenceActivity.class));
                  finish();
               }
            } else {
               result.append(getString(R.string.msg_no_matches_found));
               runOnUiThread(new Runnable() {
                  @Override
                  public void run() {
                     if(AppUtility.ACTION.equals("IDENTIFY")) {
                        
                     } else {
                        mEnrollButton.setVisibility(View.VISIBLE);
                     }
                     
                  }
               });
               //mEnrollButton.setVisibility(View.VISIBLE);
               publishProgress(getString(R.string.msg_no_matches_found));
               
            }

            client.deleteTask(taskId);
         } catch (Exception e) {
            Log.e(TAG, e.toString(), e);
            publishProgress(getString(R.string.msg_exception));
            return e.toString();
         } finally {
            if (client != null) {
               try {
                  client.finalize();
               } catch (Throwable e) {
                  Log.e(TAG, e.toString(), e);
               }
            }
         }

         return result.toString();
      }

      @Override
      protected void onProgressUpdate(String... values) {
         if (mProgressDialog != null) {
            mProgressDialog.setMessage(values[0]);
         }
      }

      @Override
      protected void onPostExecute(String result) {
         hideProgress();
         //Toast.makeText(getBaseContext(), result, Toast.LENGTH_LONG).show();
      }

   }


The above code works perfectly fine on android version < 5.0, but on 5.0 and later it crashes while sending the template to the server after extracting the template from the scanned finger.
hackontech
 
Posts: 7
Joined: May 07, 2017 07:52

Re: Android Issue

Postby Martynas » May 11, 2017 08:48

Hello,

you are using an old API for communicating with the server. it is highly not recommended to use it.
Use NBiometricClient.Enroll and NBiometricClient.Identify to perform enrollment and matching on matching server.
According to revision you are using a 5.1 SDK, it didn't included tutorials, which shows how to perform these operations on server side, but you can reuse tutorials "IdentifyOnServer" and "EnrollToServer" from 6.0 version of the SDK (attached).
Attachments
IdentifyOnServer.txt
(5.04 KiB) Downloaded 90 times
EnrollToServer.txt
(4.84 KiB) Downloaded 93 times
Best regards,

Martynas
Software Consultant
Neurotechnology
Martynas
Neurotechnology
 
Posts: 2192
Joined: Sep 19, 2008 10:02
Location: Vilnius, Lithuania

Re: Android Issue

Postby hackontech » May 11, 2017 08:53

I am be implementing the new way you sent. Will this work then ? Did you checked why the crash happens ? Why doesn't it crash on Android < 5.0 ?
hackontech
 
Posts: 7
Joined: May 07, 2017 07:52

Re: Android Issue

Postby hackontech » May 11, 2017 08:56

The libraries that are used in the code that you sent, are they available in 5.0 SDK ?
hackontech
 
Posts: 7
Joined: May 07, 2017 07:52

Re: Android Issue

Postby Martynas » May 11, 2017 14:02

Hi,

hackontech wrote:I am be implementing the new way you sent. Will this work then ? Did you checked why the crash happens ? Why doesn't it crash on Android < 5.0 ?


Crash is happening due to removed method from the native Android SDK used in that API.
As it was mentioned this API is very old one and was left only for the compatibility for old customers. Since 5.0 SDK version NBiometricClient should be used for enrollment and matching tasks. Also we are planing to remove that old API from next SDK version.

hackontech wrote:The libraries that are used in the code that you sent, are they available in 5.0 SDK ?


Ye,s they are available in 5.0 and upper versions. BTW, according to your provided SDK revision number, you are using 5.1 SDK, not 5.0.
Best regards,

Martynas
Software Consultant
Neurotechnology
Martynas
Neurotechnology
 
Posts: 2192
Joined: Sep 19, 2008 10:02
Location: Vilnius, Lithuania

Re: Android Issue

Postby hackontech » May 11, 2017 14:17

Okay that's good to know. And what about License Manager app ? It's crashing too on some devices.
hackontech
 
Posts: 7
Joined: May 07, 2017 07:52

Re: Android Issue

Postby Martynas » May 12, 2017 06:34

Hi,

if the licensing manager is crashing at some devices, which has newer version of the Android OS, then it is highly recommended to upgrade to newer version of the SDK.
Each new version of the Android OS changes the way how the required information required for licenses is retrieved and old SDKs will not be able to use these methods, as they were not available at the time, when the SDK was developed.
By the way, starting from 6.0 SDK version, there is no need to run licensing manager at the Android device and SDK libraries are capable to read and use licenses with Neurotechnology licencing service running on the device.
If you need to use your application on Android 6.0 and 7.0, then you will need to use recent 9.0 version of the SDK.
Best regards,

Martynas
Software Consultant
Neurotechnology
Martynas
Neurotechnology
 
Posts: 2192
Joined: Sep 19, 2008 10:02
Location: Vilnius, Lithuania

Re: Android Issue

Postby hackontech » May 12, 2017 06:54

Hi Martynas,

Glad to see your detailed explanation of the above problem. I have downloaded the SDK 9.0 and will definitely try it.

Regards
hackontech
 
Posts: 7
Joined: May 07, 2017 07:52


Return to Public

Who is online

Users browsing this forum: No registered users and 3 guests