SDL
SDL copied to clipboard
How to use SDL2 on qt for android
@slouken I have a project on windows and the project can work well. The project is wrote on qt. When I rebuild it on qt android, I found that SDL2 using on android must bind java. I want to know how I can just add the *.so to use SDL2? Similarly FFMPEG, I can build it with NDK and use the *.so?
SDL_Init(SDL_INIT_VIDEO);
SDL_version version;
SDL_GetVersion(&version);
Failed to register methods of org/libsdl/app/SDLActivity
I had the same problem in the 2015'th year. Basically, SDL2 to work on Android, requires the Java part being supplied, and to work, it also requires the proper "Activity" with SDL2 being loaded and initialized. Qt has its own Java wrapper to work with the stuff. In theory, it's possible to run the Qt thing, and then, launch the second activity that will run SDL2 on it.
It depends on what SDL functionality you need, but the basic steps are to include the SDL java source, and then your activity needs to extend QtActivity, and do SDL initialization and shutdown in your activity:
import org.libsdl.app.SDL;
public class YourActivity extends QtActivity
{
@Override
public void onCreate( Bundle savedInstanceState )
{
super.onCreate( savedInstanceState );
SDL.initialize();
SDL.setContext( this );
}
@Override
protected void onDestroy()
{
super.onDestroy();
if (SDL.getContext() == this)
{
SDL.setContext( null );
}
}
}
@slouken I have add the include and the so and the java source of SDL2.
unix:!macx: LIBS += -L$$PWD/libs/arm64-v8a/ -lSDL2
INCLUDEPATH += $$PWD/libs/include
contains(ANDROID_TARGET_ARCH,arm64-v8a) {
ANDROID_EXTRA_LIBS = \
$$PWD/libs/arm64-v8a/libSDL2.so
ANDROID_PACKAGE_SOURCE_DIR = \
$$PWD/android
}
DISTFILES += \
android/AndroidManifest.xml \
android/build.gradle \
android/gradle/wrapper/gradle-wrapper.jar \
android/gradle/wrapper/gradle-wrapper.properties \
android/gradlew \
android/gradlew.bat \
android/res/values/libs.xml \
android/src/com/my/activity/MySDLActivity.java \
android/src/org/libsdl/app/HIDDevice.java \
android/src/org/libsdl/app/HIDDeviceBLESteamController.java \
android/src/org/libsdl/app/HIDDeviceManager.java \
android/src/org/libsdl/app/HIDDeviceUSB.java \
android/src/org/libsdl/app/SDL.java \
android/src/org/libsdl/app/SDLActivity.java \
android/src/org/libsdl/app/SDLAudioManager.java \
android/src/org/libsdl/app/SDLControllerManager.java \
android/src/org/testgles/testglesActivity.java
MySDLActivity.java
package com.my.activity;
import org.libsdl.app.SDL;
import android.os.Bundle;
public class MySDLActivity extends org.qtproject.qt5.android.bindings.QtActivity
{
@Override
public void onCreate( Bundle savedInstanceState )
{
super.onCreate( savedInstanceState );
SDL.initialize();
SDL.setContext( this );
}
@Override
protected void onDestroy()
{
super.onDestroy();
if (SDL.getContext() == this)
{
SDL.setContext( null );
}
}
}
When the app run on the machine, it shows that
E : dlsym failed: undefined symbol: main
E : Could not find main method
F libc : Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0 in tid 23177 (qtMainLoopThrea), pid 23147 (project.example)
Here is my code. I just include the header.
#include "mainwindow.h"
#include <QApplication>
#include <QLabel>
#include <QString>
#include <QLatin1String>
extern "C"
{
#include "SDL2/SDL.h"
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
@Wohlstand What is the detail?
Mainly, I wanted to use audio features of SDL2 at my Qt application for Android but got failed on that.
I found that #define main SDL_main
, so qt can not find the main function.
I add #define SDL_MAIN_HANDLED
, but when I run, it shows that Application didn't initialize properly, did you include SDL_main.h in the file containing your main() function?
#include "mainwindow.h"
#include <QApplication>
#include <QLabel>
#include <QString>
#include <QLatin1String>
#include <QDebug>
#define SDL_MAIN_HANDLED
extern "C"
{
#include "SDL2/SDL.h"
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
SDL_Init(SDL_INIT_VIDEO);
qDebug("%s\n",SDL_GetError());
return a.exec();
}
@Wohlstand That means you can use sdl2 while wrapping it into qt activity?
As @slouken said above, yes, but I didn't made that, because I did all such attempts in 2015 but they all unsucces, because I didn't anything at all to properly initialize the SDL2 at Java side. So, use slouken's way to try run the thing.
You don't need to mention me, as I just joined the conversation to get proper answer on this question same as you want, and I told my own story in addition to your case.
Yes, #define SDL_MAIN_HANDLED
is correct here, and you should add this before SDL_Init() in your main():
SDL_SetMainReady();
@slouken
I add SDL_SetMainReady();
#include "mainwindow.h"
#include <QApplication>
#include <QLabel>
#include <QString>
#include <QLatin1String>
#include <QDebug>
#define SDL_MAIN_HANDLED
extern "C"
{
#include "SDL2/SDL.h"
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
SDL_SetMainReady();
SDL_Init(SDL_INIT_VIDEO);
qDebug("%s\n",SDL_GetError());
return a.exec();
}
The error log is here
W SDL : Request to get environment variables before JNI is ready
I chatty : uid=10277(org.qtproject.example) qtMainLoopThrea identical 21 lines
W SDL : Request to get environment variables before JNI is ready
F project.exampl: java_vm_ext.cc:577] JNI DETECTED ERROR IN APPLICATION: CallStaticVoidMethod received NULL jclass
F project.exampl: java_vm_ext.cc:577] in call to CallStaticVoidMethod
F project.exampl: java_vm_ext.cc:577] from void org.qtproject.qt5.android.QtNative.startQtApplication()
F project.exampl: runtime.cc:659] Runtime aborting...
F project.exampl: runtime.cc:659] Dumping all threads without mutator lock held
F project.exampl: runtime.cc:659] All threads:
F project.exampl: runtime.cc:659] DALVIK THREADS (21):
F project.exampl: runtime.cc:659] "qtMainLoopThread" prio=5 tid=21 Runnable
F project.exampl: runtime.cc:659] | group="" sCount=0 dsCount=0 flags=0 obj=0x136e7ed0 self=0xb4000074b3074400
F project.exampl: runtime.cc:659] | sysTid=3655 nice=0 cgrp=default sched=0/0 handle=0x7460726cc0
F project.exampl: runtime.cc:659] | state=R schedstat=( 34042707 7467916 35 ) utm=2 stm=1 core=5 HZ=100
F project.exampl: runtime.cc:659] | stack=0x7460623000-0x7460625000 stackSize=1043KB
F project.exampl: runtime.cc:659] | held mutexes= "abort lock" "mutator lock"(shared held)
F project.exampl: runtime.cc:659] native: #00 pc 00000000004a0c68 /apex/com.android.art/lib64/libart.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, int, BacktraceMap*, char const*, art::ArtMethod*, void*, bool)+140)
F project.exampl: runtime.cc:659] native: #01 pc 00000000005ae000 /apex/com.android.art/lib64/libart.so (art::Thread::DumpStack(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, bool, BacktraceMap*, bool) const+376)
F project.exampl: runtime.cc:659] native: #02 pc 00000000005cb140 /apex/com.android.art/lib64/libart.so (art::DumpCheckpoint::Run(art::Thread*)+924)
F project.exampl: runtime.cc:659] native: #03 pc 00000000005c5080 /apex/com.android.art/lib64/libart.so (art::ThreadList::RunCheckpoint(art::Closure*, art::Closure*)+528)
F project.exampl: runtime.cc:659] native: #04 pc 00000000005c420c /apex/com.android.art/lib64/libart.so (art::ThreadList::Dump(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, bool)+1920)
F project.exampl: runtime.cc:659] native: #05 pc 000000000055ec0c /apex/com.android.art/lib64/libart.so (art::Runtime::Abort(char const*)+1864)
F project.exampl: runtime.cc:659] native: #06 pc 0000000000013978 /system/lib64/libbase.so (android::base::SetAborter(std::__1::function<void (char const*)>&&)::$_3::__invoke(char const*)+76)
F project.exampl: runtime.cc:659] native: #07 pc 0000000000012fa4 /system/lib64/libbase.so (android::base::LogMessage::~LogMessage()+320)
F project.exampl: runtime.cc:659] native: #08 pc 0000000000386f78 /apex/com.android.art/lib64/libart.so (art::JavaVMExt::JniAbort(char const*, char const*)+2572)
F project.exampl: runtime.cc:659] native: #09 pc 0000000000386ff0 /apex/com.android.art/lib64/libart.so (art::JavaVMExt::JniAbortV(char const*, char const*, std::__va_list)+108)
F project.exampl: runtime.cc:659] native: #10 pc 0000000000378cd4 /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::ScopedCheck::AbortF(char const*, ...)+144)
F project.exampl: runtime.cc:659] native: #11 pc 00000000003782ac /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::ScopedCheck::CheckInstance(art::ScopedObjectAccess&, art::(anonymous namespace)::ScopedCheck::InstanceKind, _jobject*, bool)+472)
F project.exampl: runtime.cc:659] native: #12 pc 0000000000376dfc /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::ScopedCheck::CheckPossibleHeapValue(art::ScopedObjectAccess&, char, art::(anonymous namespace)::JniValueType)+564)
F project.exampl: runtime.cc:659] native: #13 pc 000000000037644c /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::ScopedCheck::Check(art::ScopedObjectAccess&, bool, char const*, art::(anonymous namespace)::JniValueType*)+612)
F project.exampl: runtime.cc:659] native: #14 pc 000000000037bbf0 /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::CheckJNI::CheckCallArgs(art::ScopedObjectAccess&, art::(anonymous namespace)::ScopedCheck&, _JNIEnv*, _jobject*, _jclass*, _jmethodID*, art::InvokeType, art::(anonymous namespace)::VarArgs const*)+132)
F project.exampl: runtime.cc:659] native: #15 pc 000000000037ab3c /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::CheckJNI::CallMethodV(char const*, _JNIEnv*, _jobject*, _jclass*, _jmethodID*, std::__va_list, art::Primitive::Type, art::InvokeType)+728)
F project.exampl: runtime.cc:659] native: #16 pc 000000000036b204 /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::CheckJNI::CallStaticVoidMethod(_JNIEnv*, _jclass*, _jmethodID*, ...)+156)
F project.exampl: runtime.cc:659] native: #17 pc 00000000000f8460 /data/app/~~HCEVpD2RLXnsTvsv5MDnPA==/org.qtproject.example-DpZQuL1zFUcDwQbTY0rxDw==/lib/arm64/libSDL2.so (???)
F project.exampl: runtime.cc:659] native: #18 pc 00000000000b8450 /data/app/~~HCEVpD2RLXnsTvsv5MDnPA==/org.qtproject.example-DpZQuL1zFUcDwQbTY0rxDw==/lib/arm64/libSDL2.so (SDL_VideoInit_REAL+468)
F project.exampl: runtime.cc:659] native: #19 pc 0000000000041060 /data/app/~~HCEVpD2RLXnsTvsv5MDnPA==/org.qtproject.example-DpZQuL1zFUcDwQbTY0rxDw==/lib/arm64/libSDL2.so (SDL_InitSubSystem_REAL+224)
F project.exampl: runtime.cc:659] native: #20 pc 0000000000003624 /data/app/~~HCEVpD2RLXnsTvsv5MDnPA==/org.qtproject.example-DpZQuL1zFUcDwQbTY0rxDw==/lib/arm64/libffmpeg.so (main+104)
F project.exampl: runtime.cc:659] native: #21 pc 000000000002fdd0 /data/data/org.qtproject.example/qt-reserved-files/plugins/platforms/android/libqtforandroid.so (???)
F project.exampl: runtime.cc:659] at org.qtproject.qt5.android.QtNative.startQtApplication(Native method)
F project.exampl: runtime.cc:659] at org.qtproject.qt5.android.QtNative$7.run(QtNative.java:375)
F project.exampl: runtime.cc:659] at org.qtproject.qt5.android.QtThread$1.run(QtThread.java:61)
F project.exampl: runtime.cc:659] at java.lang.Thread.run(Thread.java:923)
F project.exampl: runtime.cc:659]
F project.exampl: runtime.cc:659] "main" prio=10 tid=1 Native
F project.exampl: runtime.cc:659] | group="" sCount=1 dsCount=0 flags=1 obj=0x73395428 self=0xb4000074cfe94c00
F project.exampl: runtime.cc:659] | sysTid=3599 nice=-10 cgrp=default sched=0/0 handle=0x755747b4f8
F project.exampl: runtime.cc:659] | state=S schedstat=( 295298433 14435991 176 ) utm=22 stm=6 core=6 HZ=100
F project.exampl: runtime.cc:659] | stack=0x7fee3ea000-0x7fee3ec000 stackSize=8192KB
F project.exampl: runtime.cc:659] | held mutexes=
F project.exampl: runtime.cc:659] native: #00 pc 00000000000d7a58 /apex/com.android.runtime/lib64/bionic/libc.so (__epoll_pwait+8)
F project.exampl: runtime.cc:659] native: #01 pc 0000000000019acc /system/lib64/libutils.so (android::Looper::pollInner(int)+184)
F project.exampl: runtime.cc:659] native: #02 pc 00000000000199ac /system/lib64/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+112)
F project.exampl: runtime.cc:659] native: #03 pc 0000000000119848 /system/lib64/libandroid_runtime.so (android::android_os_MessageQueue_nativePollOnce(_JNIEnv*, _jobject*, long, int)+44)
F project.exampl: runtime.cc:659] at android.os.MessageQueue.nativePollOnce(Native method)
F project.exampl: runtime.cc:659] at android.os.MessageQueue.next(MessageQueue.java:335)
F project.exampl: runtime.cc:659] at android.os.Looper.loop(Looper.java:193)
F project.exampl: runtime.cc:659] at android.app.ActivityThread.main(ActivityThread.java:8146)
F project.exampl: runtime.cc:659] at java.lang.reflect.Method.invoke(Native method)
F project.exampl: runtime.cc:659] at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:656)
F project.exampl: runtime.cc:659] at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:967)
F project.exampl: runtime.cc:659]
F project.exampl: runtime.cc:659] "Runtime worker thread 0" prio=10 tid=2 Native (still starting up)
F project.exampl: runtime.cc:659] | group="" sCount=1 dsCount=0 flags=1 obj=0x0 self=0xb4000074bf400000
F project.exampl: runtime.cc:659] | sysTid=3608 nice=-20 cgrp=default sched=0/0 handle=0x7555f48d00
F project.exampl: runtime.cc:659] | state=S schedstat=( 268228 189479 5 ) utm=0 stm=0 core=7 HZ=100
F project.exampl: runtime.cc:659] | stack=0x7555f3a000-0x7555f3c000 stackSize=63KB
F project.exampl: runtime.cc:659] | held mutexes=
F project.exampl: runtime.cc:659] native: #00 pc 0000000000086b4c /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28)
F project.exampl: runtime.cc:659] native: #01 pc 00000000001b0418 /apex/com.android.art/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+148)
F project.exampl: runtime.cc:659] native: #02 pc 00000000005cce68 /apex/com.android.art/lib64/libart.so (art::ThreadPool::GetTask(art::Thread*)+120)
F project.exampl: runtime.cc:659] native: #03 pc 00000000005cc0cc /apex/com.android.art/lib64/libart.so (art::ThreadPoolWorker::Run()+80)
F project.exampl: runtime.cc:659] native: #04 pc 00000000005cbbdc /apex/com.android.art/lib64/libart.so (art::ThreadPoolWorker::Callback(void*)+192)
F project.exampl: runtime.cc:659] native: #05 pc 00000000000eb868 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64)
F project.exampl: runtime.cc:659] native: #06 pc 000000000008ba88 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
F project.exampl: runtime.cc:659] (no managed stack frames)
F project.exampl: runtime.cc:659]
F project.exampl: runtime.cc:659] "Runtime worker thread 1" prio=10 tid=3 Native (still starting up)
F project.exampl: runtime.cc:659] | group="" sCount=1 dsCount=0 flags=1 obj=0x0 self=0xb4000074cfe96800
F project.exampl: runtime.cc:659] | sysTid=3609 nice=-20 cgrp=default sched=0/0 handle=0x7554a98d00
F project.exampl: runtime.cc:659] | state=S schedstat=( 111458 0 2 ) utm=0 stm=0 core=5 HZ=100
F project.exampl: runtime.cc:659] | stack=0x7554a8a000-0x7554a8c000 stackSize=63KB
F project.exampl: runtime.cc:659] | held mutexes=
F project.exampl: runtime.cc:659] native: #00 pc 0000000000086b4c /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28)
F project.exampl: runtime.cc:659] native: #01 pc 00000000001b0418 /apex/com.android.art/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+148)
F project.exampl: runtime.cc:659] native: #02 pc 00000000005cce68 /apex/com.android.art/lib64/libart.so (art::ThreadPool::GetTask(art::Thread*)+120)
F project.exampl: runtime.cc:659] native: #03 pc 00000000005cc0cc /apex/com.android.art/lib64/libart.so (art::ThreadPoolWorker::Run()+80)
F project.exampl: runtime.cc:659] native: #04 pc 00000000005cbbdc /apex/com.android.art/lib64/libart.so (art::ThreadPoolWorker::Callback(void*)+192)
F project.exampl: runtime.cc:659] native: #05 pc 00000000000eb868 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64)
F project.exampl: runtime.cc:659] native: #06 pc 000000000008ba88 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
F project.exampl: runtime.cc:659] (no managed stack frames)
F project.exampl: runtime.cc:659]
F project.exampl: runtime.cc:659] "Runtime worker thread 2" prio=10 tid=4 Native (still starting up)
F project.exampl: runtime.cc:659] | group="" sCount=1 dsCount=0 flags=1 obj=0x0 self=0xb4000074bf411800
F project.exampl: runtime.cc:659] | sysTid=3610 nice=-20 cgrp=default sched=0/0 handle=0x75506e5d00
F project.exampl: runtime.cc:659] | state=S schedstat=( 96822 43490 3 ) utm=0 stm=0 core=5 HZ=100
F project.exampl: runtime.cc:659] | stack=0x75506d7000-0x75506d9000 stackSize=63KB
F project.exampl: runtime.cc:659] | held mutexes=
F project.exampl: runtime.cc:659] native: #00 pc 0000000000086b4c /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28)
F project.exampl: runtime.cc:659] native: #01 pc 00000000001b0418 /apex/com.android.art/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+148)
F project.exampl: runtime.cc:659] native: #02 pc 00000000005cce68 /apex/com.android.art/lib64/libart.so (art::ThreadPool::GetTask(art::Thread*)+120)
F project.exampl: runtime.cc:659] native: #03 pc 00000000005cc0cc /apex/com.android.art/lib64/libart.so (art::ThreadPoolWorker::Run()+80)
F project.exampl: runtime.cc:659] native: #04 pc 00000000005cbbdc /apex/com.android.art/lib64/libart.so (art::ThreadPoolWorker::Callback(void*)+192)
F project.exampl: runtime.cc:659] native: #05 pc 00000000000eb868 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64)
F project.exampl: runtime.cc:659] native: #06 pc 000000000008ba88 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
F project.exampl: runtime.cc:659] (no managed stack frames)
F project.exampl: runtime.cc:659]
F project.exampl: runtime.cc:659] "Runtime worker thread 3" prio=10 tid=5 Native (still starting up)
F project.exampl: runtime.cc:659] | group="" sCount=1 dsCount=0 flags=1 obj=0x0 self=0xb4000074b2fefc00
F project.exampl: runtime.cc:659] | sysTid=3611 nice=-20 cgrp=default sched=0/0 handle=0x7550685d00
F project.exampl: runtime.cc:659] | state=S schedstat=( 79531 6354 3 ) utm=0 stm=0 core=6 HZ=100
F project.exampl: runtime.cc:659] | stack=0x7550677000-0x7550679000 stackSize=63KB
F project.exampl: runtime.cc:659] | held mutexes=
F project.exampl: runtime.cc:659] native: #00 pc 0000000000086b4c /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28)
F project.exampl: runtime.cc:659] native: #01 pc 00000000001b0418 /apex/com.android.art/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+148)
F project.exampl: runtime.cc:659] native: #02 pc 00000000005cce68 /apex/com.android.art/lib64/libart.so (art::ThreadPool::GetTask(art::Thread*)+120)
F project.exampl: runtime.cc:659] native: #03 pc 00000000005cc0cc /apex/com.android.art/lib64/libart.so (art::ThreadPoolWorker::Run()+80)
F project.exampl: runtime.cc:659] native: #04 pc 00000000005cbbdc /apex/com.android.art/lib64/libart.so (art::ThreadPoolWorker::Callback(void*)+192)
F project.exampl: runtime.cc:659] native: #05 pc 00000000000eb868 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64)
F project.exampl: runtime.cc:659] native: #06 pc 000000000008ba88 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
F project.exampl: runtime.cc:659] (no managed stack frames)
F project.exampl: runtime.cc:659]
F project.exampl: runtime.cc:659] "Signal Catcher" prio=10 tid=6 WaitingInMainSignalCatcherLoop
F project.exampl: runtime.cc:659] | group="" sCount=1 dsCount=0 flags=1 obj=0x134803f8 self=0xb4000074bf438000
F project.exampl: runtime.cc:659] | sysTid=3612 nice=-20 cgrp=default sched=0/0 handle=0x74bbdfbcc0
F project.exampl: runtime.cc:659] | state=S schedstat=( 296407 0 1 ) utm=0 stm=0 core=6 HZ=100
F project.exampl: runtime.cc:659] | stack=0x74bbd04000-0x74bbd06000 stackSize=995KB
F project.exampl: runtime.cc:659] | held mutexes=
F project.exampl: runtime.cc:659] native: #00 pc 00000000000d7498 /apex/com.android.runtime/lib64/bionic/libc.so (__rt_sigtimedwait+8)
F project.exampl: runtime.cc:659] native: #01 pc 00000000000985dc /apex/com.android.runtime/lib64/bionic/libc.so (sigwait+68)
F project.exampl: runtime.cc:659] native: #02 pc 0000000000584fc0 /apex/com.android.art/lib64/libart.so (art::SignalCatcher::WaitForSignal(art::Thread*, art::SignalSet&)+428)
F project.exampl: runtime.cc:659] native: #03 pc 0000000000583bb8 /apex/com.android.art/lib64/libart.so (art::SignalCatcher::Run(void*)+272)
F project.exampl: runtime.cc:659] native: #04 pc 00000000000eb868 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64)
F project.exampl: runtime.cc:659] native: #05 pc 000000000008ba88 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
F project.exampl: runtime.cc:659] (no managed stack frames)
F project.exampl: runtime.cc:659]
F project.exampl: runtime.cc:659] "perfetto_hprof_listener" prio=10 tid=7 Native (still starting up)
F project.exampl: runtime.cc:659] | group="" sCount=1 dsCount=0 flags=1 obj=0x0 self=0xb4000074b3001400
F project.exampl: runtime.cc:659] | sysTid=3614 nice=-20 cgrp=default sched=0/0 handle=0x74bacfdcc0
F project.exampl: runtime.cc:659] | state=S schedstat=( 206875 780520 4 ) utm=0 stm=0 core=6 HZ=100
F project.exampl: runtime.cc:659] | stack=0x74bac06000-0x74bac08000 stackSize=995KB
F project.exampl: runtime.cc:659] | held mutexes=
F project.exampl: runtime.cc:659] native: #00 pc 00000000000d6814 /apex/com.android.runtime/lib64/bionic/libc.so (read+4)
F project.exampl: runtime.cc:659] native: #01 pc 00000000000180bc /apex/com.android.art/lib64/libperfetto_hprof.so (void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, ArtPlugin_Initialize::$_29> >(void*)+280)
F project.exampl: runtime.cc:659] native: #02 pc 00000000000eb868 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64)
F project.exampl: runtime.cc:659] native: #03 pc 000000000008ba88 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
F project.exampl: runtime.cc:659] (no managed stack frames)
F project.exampl: runtime.cc:659]
F project.exampl: runtime.cc:659] "ADB-JDWP Connection Control Thread" prio=10 tid=8 WaitingInMainDebuggerLoop
F project.exampl: runtime.cc:659] | group="" sCount=1 dsCount=0 flags=1 obj=0x1340c070 self=0xb4000074bf453800
F project.exampl: runtime.cc:659] | sysTid=3615 nice=-20 cgrp=default sched=0/0 handle=0x74babffcc0
F project.exampl: runtime.cc:659] | state=S schedstat=( 306770 0 11 ) utm=0 stm=0 core=5 HZ=100
F project.exampl: runtime.cc:659] | stack=0x74bab08000-0x74bab0a000 stackSize=995KB
F project.exampl: runtime.cc:659] | held mutexes=
F project.exampl: runtime.cc:659] native: #00 pc 00000000000d7b58 /apex/com.android.runtime/lib64/bionic/libc.so (__ppoll+8)
F project.exampl: runtime.cc:659] native: #01 pc 0000000000095ba4 /apex/com.android.runtime/lib64/bionic/libc.so (poll+92)
F project.exampl: runtime.cc:659] native: #02 pc 0000000000009efc /apex/com.android.art/lib64/libadbconnection.so (adbconnection::AdbConnectionState::RunPollLoop(art::Thread*)+828)
F project.exampl: runtime.cc:659] native: #03 pc 0000000000008578 /apex/com.android.art/lib64/libadbconnection.so (adbconnection::CallbackFunction(void*)+1508)
F project.exampl: runtime.cc:659] native: #04 pc 00000000000eb868 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64)
F project.exampl: runtime.cc:659] native: #05 pc 000000000008ba88 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
F project.exampl: runtime.cc:659] (no managed stack frames)
F project.exampl: runtime.cc:659]
F project.exampl: runtime.cc:659] "Jit thread pool worker thread 0" prio=5 tid=9 Native
F project.exampl: runtime.cc:659] | group="" sCount=1 dsCount=0 flags=1 obj=0x13441638 self=0xb4000074b3017c00
F project.exampl: runtime.cc:659] | sysTid=3624 nice=0 cgrp=default sched=0/0 handle=0x746efd5d00
F project.exampl: runtime.cc:659] | state=S schedstat=( 24435043 18526306 120 ) utm=2 stm=0 core=4 HZ=100
F project.exampl: runtime.cc:659] | stack=0x746eed7000-0x746eed9000 stackSize=1023KB
F project.exampl: runtime.cc:659] | held mutexes=
F project.exampl: runtime.cc:659] native: #00 pc 0000000000086b4c /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28)
F project.exampl: runtime.cc:659] native: #01 pc 00000000001b0418 /apex/com.android.art/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+148)
F project.exampl: runtime.cc:659] native: #02 pc 00000000005cce68 /apex/com.android.art/lib64/libart.so (art::ThreadPool::GetTask(art::Thread*)+120)
F project.exampl: runtime.cc:659] native: #03 pc 00000000005cc10c /apex/com.android.art/lib64/libart.so (art::ThreadPoolWorker::Run()+144)
F project.exampl: runtime.cc:659] native: #04 pc 00000000005cbbdc /apex/com.android.art/lib64/libart.so (art::ThreadPoolWorker::Callback(void*)+192)
F project.exampl: runtime.cc:659] native: #05 pc 00000000000eb868 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64)
F project.exampl: runtime.cc:659] native: #06 pc 000000000008ba88 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
F project.exampl: runtime.cc:659] (no managed stack frames)
F project.exampl: runtime.cc:659]
F project.exampl: runtime.cc:659] "HeapTaskDaemon" prio=5 tid=10 WaitingForTaskProcessor
F project.exampl: runtime.cc:659] | group="" sCount=1 dsCount=0 flags=1 obj=0x1340c100 self=0xb4000074b3038400
F project.exampl: runtime.cc:659] | sysTid=3625 nice=4 cgrp=default sched=0/0 handle=0x746ded0cc0
F project.exampl: runtime.cc:659] | state=S schedstat=( 168489 85626 4 ) utm=0 stm=0 core=5 HZ=100
F project.exampl: runtime.cc:659] | stack=0x746ddcd000-0x746ddcf000 stackSize=1043KB
F project.exampl: runtime.cc:659] | held mutexes=
F project.exampl: runtime.cc:659] native: #00 pc 0000000000086b50 /apex/com.android.runtime/lib64/bionic/libc.so (syscall+32)
F project.exampl: runtime.cc:659] native: #01 pc 00000000001b07e8 /apex/com.android.art/lib64/libart.so (art::ConditionVariable::TimedWait(art::Thread*, long, int)+172)
F project.exampl: runtime.cc:659] native: #02 pc 00000000002e6f7c /apex/com.android.art/lib64/libart.so (art::gc::TaskProcessor::GetTask(art::Thread*)+512)
F project.exampl: runtime.cc:659] native: #03 pc 00000000002e78c4 /apex/com.android.art/lib64/libart.so (art::gc::TaskProcessor::RunAllTasks(art::Thread*)+92)
F project.exampl: runtime.cc:659] at dalvik.system.VMRuntime.runHeapTasks(Native method)
F project.exampl: runtime.cc:659] at java.lang.Daemons$HeapTaskDaemon.runInternal(Daemons.java:532)
F project.exampl: runtime.cc:659] at java.lang.Daemons$Daemon.run(Daemons.java:140)
F project.exampl: runtime.cc:659] at java.lang.Thread.run(Thread.java:923)
F project.exampl: runtime.cc:659]
F project.exampl: runtime.cc:659] "ReferenceQueueDaemon" prio=5 tid=11 Waiting
F project.exampl: runtime.cc:659] | group="" sCount=1 dsCount=0 flags=1 obj=0x1340c190 self=0xb4000074b3068000
F project.exampl: runtime.cc:659] | sysTid=3626 nice=4 cgrp=default sched=0/0 handle=0x746cdc6cc0
F project.exampl: runtime.cc:659] | state=S schedstat=( 125415 811094 3 ) utm=0 stm=0 core=4 HZ=100
F project.exampl: runtime.cc:659] | stack=0x746ccc3000-0x746ccc5000 stackSize=1043KB
F project.exampl: runtime.cc:659] | held mutexes=
F project.exampl: runtime.cc:659] native: #00 pc 0000000000086b4c /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28)
F project.exampl: runtime.cc:659] native: #01 pc 00000000001b0418 /apex/com.android.art/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+148)
F project.exampl: runtime.cc:659] native: #02 pc 000000000049be64 /apex/com.android.art/lib64/libart.so (art::Monitor::Wait(art::Thread*, long, int, bool, art::ThreadState)+544)
F project.exampl: runtime.cc:659] native: #03 pc 000000000049d6b8 /apex/com.android.art/lib64/libart.so (art::Monitor::Wait(art::Thread*, art::ObjPtr<art::mirror::Object>, long, int, bool, art::ThreadState)+280)
F project.exampl: runtime.cc:659] at java.lang.Object.wait(Native method)
F project.exampl: runtime.cc:659] - waiting on <0x02e921f3> (a java.lang.Class<java.lang.ref.ReferenceQueue>)
F project.exampl: runtime.cc:659] at java.lang.Object.wait(Object.java:442)
F project.exampl: runtime.cc:659] at java.lang.Object.wait(Object.java:568)
F project.exampl: runtime.cc:659] at java.lang.Daemons$ReferenceQueueDaemon.runInternal(Daemons.java:218)
F project.exampl: runtime.cc:659] - locked <0x02e921f3> (a java.lang.Class<java.lang.ref.ReferenceQueue>)
F project.exampl: runtime.cc:659] at java.lang.Daemons$Daemon.run(Daemons.java:140)
F project.exampl: runtime.cc:659] at java.lang.Thread.run(Thread.java:923)
F project.exampl: runtime.cc:659]
F project.exampl: runtime.cc:659] "FinalizerWatchdogDaemon" prio=5 tid=12 Waiting
F project.exampl: runtime.cc:659] | group="" sCount=1 dsCount=0 flags=1 obj=0x1340c2b0 self=0xb4000074b306b800
F project.exampl: runtime.cc:659] | sysTid=3632 nice=4 cgrp=default sched=0/0 handle=0x746bbb2cc0
F project.exampl: runtime.cc:659] | state=S schedstat=( 87136 0 2 ) utm=0 stm=0 core=4 HZ=100
F project.exampl: runtime.cc:659] | stack=0x746baaf000-0x746bab1000 stackSize=1043KB
F project.exampl: runtime.cc:659] | held mutexes=
F project.exampl: runtime.cc:659] native: #00 pc 0000000000086b4c /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28)
F project.exampl: runtime.cc:659] native: #01 pc 00000000001b0418 /apex/com.android.art/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+148)
F project.exampl: runtime.cc:659] native: #02 pc 000000000049be64 /apex/com.android.art/lib64/libart.so (art::Monitor::Wait(art::Thread*, long, int, bool, art::ThreadState)+544)
F project.exampl: runtime.cc:659] native: #03 pc 000000000049d6b8 /apex/com.android.art/lib64/libart.so (art::Monitor::Wait(art::Thread*, art::ObjPtr<art::mirror::Object>, long, int, bool, art::ThreadState)+280)
F project.exampl: runtime.cc:659] at java.lang.Object.wait(Native method)
F project.exampl: runtime.cc:659] - waiting on <0x0a8daeb0> (a java.lang.Daemons$FinalizerWatchdogDaemon)
F project.exampl: runtime.cc:659] at java.lang.Object.wait(Object.java:442)
F project.exampl: runtime.cc:659] at java.lang.Object.wait(Object.java:568)
F project.exampl: runtime.cc:659] at java.lang.Daemons$FinalizerWatchdogDaemon.sleepUntilNeeded(Daemons.java:342)
F project.exampl: runtime.cc:659] - locked <0x0a8daeb0> (a java.lang.Daemons$FinalizerWatchdogDaemon)
F project.exampl: runtime.cc:659] at java.lang.Daemons$FinalizerWatchdogDaemon.runInternal(Daemons.java:322)
F project.exampl: runtime.cc:659] at java.lang.Daemons$Daemon.run(Daemons.java:140)
F project.exampl: runtime.cc:659] at java.lang.Thread.run(Thread.java:923)
F project.exampl: runtime.cc:659]
F project.exampl: runtime.cc:659] "Binder:3599_1" prio=5 tid=13 Native
F project.exampl: runtime.cc:659] | group="" sCount=1 dsCount=0 flags=1 obj=0x134c0020 self=0xb4000074b3077c00
F project.exampl: runtime.cc:659] | sysTid=3633 nice=0 cgrp=default sched=0/0 handle=0x746a9aacc0
F project.exampl: runtime.cc:659] | state=S schedstat=( 190833 0 2 ) utm=0 stm=0 core=4 HZ=100
F project.exampl: runtime.cc:659] | stack=0x746a8b3000-0x746a8b5000 stackSize=995KB
F project.exampl: runtime.cc:659] | held mutexes=
F project.exampl: runtime.cc:659] native: #00 pc 00000000000d6a94 /apex/com.android.runtime/lib64/bionic/libc.so (__ioctl+4)
F project.exampl: runtime.cc:659] native: #01 pc 00000000000935c4 /apex/com.android.runtime/lib64/bionic/libc.so (ioctl+156)
F project.exampl: runtime.cc:659] native: #02 pc 0000000000051a7c /system/lib64/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+296)
F project.exampl: runtime.cc:659] native: #03 pc 0000000000051c6c /system/lib64/libbinder.so (android::IPCThreadState::getAndExecuteCommand()+24)
F project.exampl: runtime.cc:659] native: #04 pc 0000000000052528 /system/lib64/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+60)
F project.exampl: runtime.cc:659] native: #05 pc 0000000000078690 /system/lib64/libbinder.so (android::PoolThread::threadLoop()+24)
F project.exampl: runtime.cc:659] native: #06 pc 00000000000154cc /system/lib64/libutils.so (android::Thread::_threadLoop(void*)+260)
F project.exampl: runtime.cc:659] native: #07 pc 00000000000a676c /system/lib64/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+144)
F project.exampl: runtime.cc:659] native: #08 pc 0000000000014d90 /system/lib64/libutils.so (thread_data_t::trampoline(thread_data_t const*)+412)
F project.exampl: runtime.cc:659] native: #09 pc 00000000000eb868 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64)
F project.exampl: runtime.cc:659] native: #10 pc 000000000008ba88 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
F project.exampl: runtime.cc:659] (no managed stack frames)
F project.exampl: runtime.cc:659]
F project.exampl: runtime.cc:659] "Binder:3599_2" prio=5 tid=14 Native
F project.exampl: runtime.cc:659] | group="" sCount=1 dsCount=0 flags=1 obj=0x13500020 self=0xb4000074bf465000
F project.exampl: runtime.cc:659] | sysTid=3634 nice=0 cgrp=default sched=0/0 handle=0x74698accc0
F project.exampl: runtime.cc:659] | state=S schedstat=( 4314949 4155989 16 ) utm=0 stm=0 core=4 HZ=100
F project.exampl: runtime.cc:659] | stack=0x74697b5000-0x74697b7000 stackSize=995KB
F project.exampl: runtime.cc:659] | held mutexes=
F project.exampl: runtime.cc:659] native: #00 pc 0000000000086b4c /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28)
F project.exampl: runtime.cc:659] native: #01 pc 00000000001b0418 /apex/com.android.art/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+148)
F project.exampl: runtime.cc:659] native: #02 pc 000000000037aa64 /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::CheckJNI::CallMethodV(char const*, _JNIEnv*, _jobject*, _jclass*, _jmethodID*, std::__va_list, art::Primitive::Type, art::InvokeType)+512)
F project.exampl: runtime.cc:659] native: #03 pc 0000000000368798 /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::CheckJNI::CallBooleanMethodV(_JNIEnv*, _jobject*, _jmethodID*, std::__va_list)+72)
F project.exampl: runtime.cc:659] native: #04 pc 00000000000a0698 /system/lib64/libandroid_runtime.so (_JNIEnv::CallBooleanMethod(_jobject*, _jmethodID*, ...)+124)
F project.exampl: runtime.cc:659] native: #05 pc 000000000012ae34 /system/lib64/libandroid_runtime.so (JavaBBinder::onTransact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+156)
F project.exampl: runtime.cc:659] native: #06 pc 000000000004982c /system/lib64/libbinder.so (android::BBinder::transact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+232)
F project.exampl: runtime.cc:659] native: #07 pc 00000000000521a8 /system/lib64/libbinder.so (android::IPCThreadState::executeCommand(int)+1032)
F project.exampl: runtime.cc:659] native: #08 pc 0000000000051cf0 /system/lib64/libbinder.so (android::IPCThreadState::getAndExecuteCommand()+156)
F project.exampl: runtime.cc:659] native: #09 pc 0000000000052528 /system/lib64/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+60)
F project.exampl: runtime.cc:659] native: #10 pc 0000000000078690 /system/lib64/libbinder.so (android::PoolThread::threadLoop()+24)
F project.exampl: runtime.cc:659] native: #11 pc 00000000000154cc /system/lib64/libutils.so (android::Thread::_threadLoop(void*)+260)
F project.exampl: runtime.cc:659] native: #12 pc 00000000000a676c /system/lib64/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+144)
F project.exampl: runtime.cc:659] native: #13 pc 0000000000014d90 /system/lib64/libutils.so (thread_data_t::trampoline(thread_data_t const*)+412)
F project.exampl: runtime.cc:659] native: #14 pc 00000000000eb868 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64)
F project.exampl: runtime.cc:659] native: #15 pc 000000000008ba88 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
F project.exampl: runtime.cc:659] (no managed stack frames)
F project.exampl: runtime.cc:659]
F project.exampl: runtime.cc:659] "FinalizerDaemon" prio=5 tid=15 Waiting
F project.exampl: runtime.cc:659] | group="" sCount=1 dsCount=0 flags=1 obj=0x1340c220 self=0xb4000074b3069c00
F project.exampl: runtime.cc:659] | sysTid=3627 nice=4 cgrp=default sched=0/0 handle=0x746bcbccc0
F project.exampl: runtime.cc:659] | state=S schedstat=( 211198 3633906 2 ) utm=0 stm=0 core=5 HZ=100
F project.exampl: runtime.cc:659] | stack=0x746bbb9000-0x746bbbb000 stackSize=1043KB
F project.exampl: runtime.cc:659] | held mutexes=
F project.exampl: runtime.cc:659] native: #00 pc 0000000000086b4c /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28)
F project.exampl: runtime.cc:659] native: #01 pc 00000000001b0418 /apex/com.android.art/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+148)
F project.exampl: runtime.cc:659] native: #02 pc 000000000049be64 /apex/com.android.art/lib64/libart.so (art::Monitor::Wait(art::Thread*, long, int, bool, art::ThreadState)+544)
F project.exampl: runtime.cc:659] native: #03 pc 000000000049d6b8 /apex/com.android.art/lib64/libart.so (art::Monitor::Wait(art::Thread*, art::ObjPtr<art::mirror::Object>, long, int, bool, art::ThreadState)+280)
F project.exampl: runtime.cc:659] at java.lang.Object.wait(Native method)
F project.exampl: runtime.cc:659] - waiting on <0x05ad3129> (a java.lang.Object)
F project.exampl: runtime.cc:659] at java.lang.Object.wait(Object.java:442)
F project.exampl: runtime.cc:659] at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:190)
F project.exampl: runtime.cc:659] - locked <0x05ad3129> (a java.lang.Object)
F project.exampl: runtime.cc:659] at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:211)
F project.exampl: runtime.cc:659] at java.lang.Daemons$FinalizerDaemon.runInternal(Daemons.java:274)
F project.exampl: runtime.cc:659] at java.lang.Daemons$Daemon.run(Daemons.java:140)
F project.exampl: runtime.cc:659] at java.lang.Thread.run(Thread.java:923)
F project.exampl: runtime.cc:659]
F project.exampl: runtime.cc:659] "Binder:3599_3" prio=5 tid=16 Native
F project.exampl: runtime.cc:659] | group="" sCount=1 dsCount=0 flags=1 obj=0x13540020 self=0xb4000074bf47c800
F project.exampl: runtime.cc:659] | sysTid=3635 nice=0 cgrp=default sched=0/0 handle=0x74677aecc0
F project.exampl: runtime.cc:659] | state=S schedstat=( 5842812 7276147 24 ) utm=0 stm=0 core=5 HZ=100
F project.exampl: runtime.cc:659] | stack=0x74676b7000-0x74676b9000 stackSize=995KB
F project.exampl: runtime.cc:659] | held mutexes=
F project.exampl: runtime.cc:659] native: #00 pc 0000000000086b4c /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28)
F project.exampl: runtime.cc:659] native: #01 pc 00000000001b0418 /apex/com.android.art/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+148)
F project.exampl: runtime.cc:659] native: #02 pc 000000000037aa64 /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::CheckJNI::CallMethodV(char const*, _JNIEnv*, _jobject*, _jclass*, _jmethodID*, std::__va_list, art::Primitive::Type, art::InvokeType)+512)
F project.exampl: runtime.cc:659] native: #03 pc 0000000000368798 /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::CheckJNI::CallBooleanMethodV(_JNIEnv*, _jobject*, _jmethodID*, std::__va_list)+72)
F project.exampl: runtime.cc:659] native: #04 pc 00000000000a0698 /system/lib64/libandroid_runtime.so (_JNIEnv::CallBooleanMethod(_jobject*, _jmethodID*, ...)+124)
F project.exampl: runtime.cc:659] native: #05 pc 000000000012ae34 /system/lib64/libandroid_runtime.so (JavaBBinder::onTransact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+156)
F project.exampl: runtime.cc:659] native: #06 pc 000000000004982c /system/lib64/libbinder.so (android::BBinder::transact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+232)
F project.exampl: runtime.cc:659] native: #07 pc 00000000000521a8 /system/lib64/libbinder.so (android::IPCThreadState::executeCommand(int)+1032)
F project.exampl: runtime.cc:659] native: #08 pc 0000000000051cf0 /system/lib64/libbinder.so (android::IPCThreadState::getAndExecuteCommand()+156)
F project.exampl: runtime.cc:659] native: #09 pc 0000000000052528 /system/lib64/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+60)
F project.exampl: runtime.cc:659] native: #10 pc 0000000000078690 /system/lib64/libbinder.so (android::PoolThread::threadLoop()+24)
F project.exampl: runtime.cc:659] native: #11 pc 00000000000154cc /system/lib64/libutils.so (android::Thread::_threadLoop(void*)+260)
F project.exampl: runtime.cc:659] native: #12 pc 00000000000a676c /system/lib64/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+144)
F project.exampl: runtime.cc:659] native: #13 pc 0000000000014d90 /system/lib64/libutils.so (thread_data_t::trampoline(thread_data_t const*)+412)
F project.exampl: runtime.cc:659] native: #14 pc 00000000000eb868 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64)
F project.exampl: runtime.cc:659] native: #15 pc 000000000008ba88 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
F project.exampl: runtime.cc:659] (no managed stack frames)
F project.exampl: runtime.cc:659]
F project.exampl: runtime.cc:659] "AppScoutStateMachine" prio=5 tid=17 Native
F project.exampl: runtime.cc:659] | group="" sCount=1 dsCount=0 flags=1 obj=0x135427b0 self=0xb4000074bf47e400
F project.exampl: runtime.cc:659] | sysTid=3636 nice=0 cgrp=default sched=0/0 handle=0x74666b0cc0
F project.exampl: runtime.cc:659] | state=S schedstat=( 356302 0 2 ) utm=0 stm=0 core=6 HZ=100
F project.exampl: runtime.cc:659] | stack=0x74665ad000-0x74665af000 stackSize=1043KB
F project.exampl: runtime.cc:659] | held mutexes=
F project.exampl: runtime.cc:659] native: #00 pc 00000000000d7a58 /apex/com.android.runtime/lib64/bionic/libc.so (__epoll_pwait+8)
F project.exampl: runtime.cc:659] native: #01 pc 0000000000019acc /system/lib64/libutils.so (android::Looper::pollInner(int)+184)
F project.exampl: runtime.cc:659] native: #02 pc 00000000000199ac /system/lib64/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+112)
F project.exampl: runtime.cc:659] native: #03 pc 0000000000119848 /system/lib64/libandroid_runtime.so (android::android_os_MessageQueue_nativePollOnce(_JNIEnv*, _jobject*, long, int)+44)
F project.exampl: runtime.cc:659] at android.os.MessageQueue.nativePollOnce(Native method)
F project.exampl: runtime.cc:659] at android.os.MessageQueue.next(MessageQueue.java:335)
F project.exampl: runtime.cc:659] at android.os.Looper.loop(Looper.java:193)
F project.exampl: runtime.cc:659] at android.os.HandlerThread.run(HandlerThread.java:67)
F project.exampl: runtime.cc:659]
F project.exampl: runtime.cc:659] "Profile Saver" prio=5 tid=18 Native
F project.exampl: runtime.cc:659] | group="" sCount=1 dsCount=0 flags=1 obj=0x135c0020 self=0xb4000074bf4c3000
F project.exampl: runtime.cc:659] | sysTid=3637 nice=9 cgrp=default sched=0/0 handle=0x74655a6cc0
F project.exampl: runtime.cc:659] | state=S schedstat=( 293281 750468 3 ) utm=0 stm=0 core=4 HZ=100
F project.exampl: runtime.cc:659] | stack=0x74654af000-0x74654b1000 stackSize=995KB
F project.exampl: runtime.cc:659] | held mutexes=
F project.exampl: runtime.cc:659] native: #00 pc 0000000000086b50 /apex/com.android.runtime/lib64/bionic/libc.so (syscall+32)
F project.exampl: runtime.cc:659] native: #01 pc 00000000001b07e8 /apex/com.android.art/lib64/libart.so (art::ConditionVariable::TimedWait(art::Thread*, long, int)+172)
F project.exampl: runtime.cc:659] native: #02 pc 00000000003558f4 /apex/com.android.art/lib64/libart.so (art::ProfileSaver::Run()+204)
F project.exampl: runtime.cc:659] native: #03 pc 000000000035a888 /apex/com.android.art/lib64/libart.so (art::ProfileSaver::RunProfileSaverThread(void*)+180)
F project.exampl: runtime.cc:659] native: #04 pc 00000000000eb868 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64)
F project.exampl: runtime.cc:659] native: #05 pc 000000000008ba88 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
F project.exampl: runtime.cc:659] (no managed stack frames)
F project.exampl: runtime.cc:659]
F project.exampl: runtime.cc:659] "RenderThread" prio=10 tid=19 Native
F project.exampl: runtime.cc:659] | group="" sCount=1 dsCount=0 flags=1 obj=0x1360acb8 self=0xb4000074b306d400
F project.exampl: runtime.cc:659] | sysTid=3642 nice=-10 cgrp=default sched=0/0 handle=0x74644a8cc0
F project.exampl: runtime.cc:659] | state=S schedstat=( 38667397 3654478 87 ) utm=1 stm=1 core=7 HZ=100
F project.exampl: runtime.cc:659] | stack=0x74643b1000-0x74643b3000 stackSize=995KB
F project.exampl: runtime.cc:659] | held mutexes=
F project.exampl: runtime.cc:659] native: #00 pc 00000000000d7a58 /apex/com.android.runtime/lib64/bionic/libc.so (__epoll_pwait+8)
F project.exampl: runtime.cc:659] native: #01 pc 0000000000019acc /system/lib64/libutils.so (android::Looper::pollInner(int)+184)
F project.exampl: runtime.cc:659] native: #02 pc 00000000000199ac /system/lib64/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+112)
F project.exampl: runtime.cc:659] native: #03 pc 0000000000216e38 /system/lib64/libhwui.so (android::uirenderer::ThreadBase::waitForWork()+132)
F project.exampl: runtime.cc:659] native: #04 pc 0000000000238e64 /system/lib64/libhwui.so (android::uirenderer::renderthread::RenderThread::threadLoop()+80)
F project.exampl: runtime.cc:659] native: #05 pc 00000000000154cc /system/lib64/libutils.so (android::Thread::_threadLoop(void*)+260)
F project.exampl: runtime.cc:659] native: #06 pc 0000000000014d90 /system/lib64/libutils.so (thread_data_t::trampoline(thread_data_t const*)+412)
F project.exampl: runtime.cc:659] native: #07 pc 00000000000eb868 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64)
F project.exampl: runtime.cc:659] native: #08 pc 000000000008ba88 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
F project.exampl: runtime.cc:659] (no managed stack frames)
F project.exampl: runtime.cc:659]
F project.exampl: runtime.cc:659] "Binder:interceptor" prio=7 tid=20 Native
F project.exampl: runtime.cc:659] | group="" sCount=1 dsCount=0 flags=1 obj=0x1364a238 self=0xb4000074b306f000
F project.exampl: runtime.cc:659] | sysTid=3645 nice=-4 cgrp=default sched=0/0 handle=0x74620e8cc0
F project.exampl: runtime.cc:659] | state=S schedstat=( 31833225 6301512 50 ) utm=2 stm=1 core=5 HZ=100
F project.exampl: runtime.cc:659] | stack=0x7461fe5000-0x7461fe7000 stackSize=1043KB
F project.exampl: runtime.cc:659] | held mutexes=
F project.exampl: runtime.cc:659] native: #00 pc 00000000000d7a58 /apex/com.android.runtime/lib64/bionic/libc.so (__epoll_pwait+8)
F project.exampl: runtime.cc:659] native: #01 pc 0000000000019acc /system/lib64/libutils.so (android::Looper::pollInner(int)+184)
F project.exampl: runtime.cc:659] native: #02 pc 00000000000199ac /system/lib64/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+112)
F project.exampl: runtime.cc:659] native: #03 pc 0000000000119848 /system/lib64/libandroid_runtime.so (android::android_os_MessageQueue_nativePollOnce(_JNIEnv*, _jobject*, long, int)+44)
F project.exampl: runtime.cc:659] at android.os.MessageQueue.nativePollOnce(Native method)
F project.exampl: runtime.cc:659] at android.os.MessageQueue.next(MessageQueue.java:335)
F project.exampl: runtime.cc:659] at android.os.Looper.loop(Looper.java:193)
F project.exampl: runtime.cc:659] at android.os.HandlerThread.run(HandlerThread.java:67)
F project.exampl: runtime.cc:659]
F project.exampl: runtime.cc:659] Aborting thread:
F project.exampl: runtime.cc:659] "qtMainLoopThread" prio=5 tid=21 Native
F project.exampl: runtime.cc:659] | group="" sCount=0 dsCount=0 flags=0 obj=0x136e7ed0 self=0xb4000074b3074400
F project.exampl: runtime.cc:659] | sysTid=3655 nice=0 cgrp=default sched=0/0 handle=0x7460726cc0
F project.exampl: runtime.cc:659] | state=R schedstat=( 71776255 7628437 79 ) utm=5 stm=1 core=7 HZ=100
F project.exampl: runtime.cc:659] | stack=0x7460623000-0x7460625000 stackSize=1043KB
F project.exampl: runtime.cc:659] | held mutexes= "abort lock"
F project.exampl: runtime.cc:659] native: #00 pc 00000000004a0c68 /apex/com.android.art/lib64/libart.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, int, BacktraceMap*, char const*, art::ArtMethod*, void*, bool)+140)
F project.exampl: runtime.cc:659] native: #01 pc 00000000005ae000 /apex/com.android.art/lib64/libart.so (art::Thread::DumpStack(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, bool, BacktraceMap*, bool) const+376)
F project.exampl: runtime.cc:659] native: #02 pc 0000000000573684 /apex/com.android.art/lib64/libart.so (art::AbortState::DumpThread(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, art::Thread*) const+60)
F project.exampl: runtime.cc:659] native: #03 pc 000000000055ee48 /apex/com.android.art/lib64/libart.so (art::Runtime::Abort(char const*)+2436)
F project.exampl: runtime.cc:659] native: #04 pc 0000000000013978 /system/lib64/libbase.so (android::base::SetAborter(std::__1::function<void (char const*)>&&)::$_3::__invoke(char const*)+76)
F project.exampl: runtime.cc:659] native: #05 pc 0000000000012fa4 /system/lib64/libbase.so (android::base::LogMessage::~LogMessage()+320)
F project.exampl: runtime.cc:659] native: #06 pc 0000000000386f78 /apex/com.android.art/lib64/libart.so (art::JavaVMExt::JniAbort(char const*, char const*)+2572)
F project.exampl: runtime.cc:659] native: #07 pc 0000000000386ff0 /apex/com.android.art/lib64/libart.so (art::JavaVMExt::JniAbortV(char const*, char const*, std::__va_list)+108)
F project.exampl: runtime.cc:659] native: #08 pc 0000000000378cd4 /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::ScopedCheck::AbortF(char const*, ...)+144)
F project.exampl: runtime.cc:659] native: #09 pc 00000000003782ac /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::ScopedCheck::CheckInstance(art::ScopedObjectAccess&, art::(anonymous namespace)::ScopedCheck::InstanceKind, _jobject*, bool)+472)
F project.exampl: runtime.cc:659] native: #10 pc 0000000000376dfc /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::ScopedCheck::CheckPossibleHeapValue(art::ScopedObjectAccess&, char, art::(anonymous namespace)::JniValueType)+564)
F project.exampl: runtime.cc:659] native: #11 pc 000000000037644c /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::ScopedCheck::Check(art::ScopedObjectAccess&, bool, char const*, art::(anonymous namespace)::JniValueType*)+612)
F project.exampl: runtime.cc:659] native: #12 pc 000000000037bbf0 /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::CheckJNI::CheckCallArgs(art::ScopedObjectAccess&, art::(anonymous namespace)::ScopedCheck&, _JNIEnv*, _jobject*, _jclass*, _jmethodID*, art::InvokeType, art::(anonymous namespace)::VarArgs const*)+132)
F project.exampl: runtime.cc:659] native: #13 pc 000000000037ab3c /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::CheckJNI::CallMethodV(char const*, _JNIEnv*, _jobject*, _jclass*, _jmethodID*, std::__va_list, art::Primitive::Type, art::InvokeType)+728)
F project.exampl: runtime.cc:659] native: #14 pc 000000000036b204 /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::CheckJNI::CallStaticVoidMethod(_JNIEnv*, _jclass*, _jmethodID*, ...)+156)
F project.exampl: runtime.cc:659] native: #15 pc 00000000000f8460 /data/app/~~HCEVpD2RLXnsTvsv5MDnPA==/org.qtproject.example-DpZQuL1zFUcDwQbTY0rxDw==/lib/arm64/libSDL2.so (???)
F project.exampl: runtime.cc:659] native: #16 pc 00000000000b8450 /data/app/~~HCEVpD2RLXnsTvsv5MDnPA==/org.qtproject.example-DpZQuL1zFUcDwQbTY0rxDw==/lib/arm64/libSDL2.so (SDL_VideoInit_REAL+468)
F project.exampl: runtime.cc:659] native: #17 pc 0000000000041060 /data/app/~~HCEVpD2RLXnsTvsv5MDnPA==/org.qtproject.example-DpZQuL1zFUcDwQbTY0rxDw==/lib/arm64/libSDL2.so (SDL_InitSubSystem_REAL+224)
F project.exampl: runtime.cc:659] native: #18 pc 0000000000003624 /data/app/~~HCEVpD2RLXnsTvsv5MDnPA==/org.qtproject.example-DpZQuL1zFUcDwQbTY0rxDw==/lib/arm64/libffmpeg.so (main+104)
F project.exampl: runtime.cc:659] native: #19 pc 000000000002fdd0 /data/data/org.qtproject.example/qt-reserved-files/plugins/platforms/android/libqtforandroid.so (???)
F project.exampl: runtime.cc:659] at org.qtproject.qt5.android.QtNative.startQtApplication(Native method)
F project.exampl: runtime.cc:659] at org.qtproject.qt5.android.QtNative$7.run(QtNative.java:375)
F project.exampl: runtime.cc:659] at org.qtproject.qt5.android.QtThread$1.run(QtThread.java:61)
F project.exampl: runtime.cc:659] at java.lang.Thread.run(Thread.java:923)
F project.exampl: runtime.cc:659]
F project.exampl: runtime.cc:667] JNI DETECTED ERROR IN APPLICATION: CallStaticVoidMethod received NULL jclass
F project.exampl: runtime.cc:667] in call to CallStaticVoidMethod
F project.exampl: runtime.cc:667] from void org.qtproject.qt5.android.QtNative.startQtApplication()
F libc : Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 3655 (qtMainLoopThrea), pid 3599 (project.example)
@slouken I have a project on windows and the project can work well. The project is wrote on qt. When I rebuild it on qt android, I found that SDL2 using on android must bind java. I want to know how I can just add the *.so to use SDL2? Similarly FFMPEG, I can build it with NDK and use the *.so?
SDL_Init(SDL_INIT_VIDEO); SDL_version version; SDL_GetVersion(&version);
Failed to register methods of org/libsdl/app/SDLActivity
Have you solved your problem? I'm having the same problem as you, do you know how to solve it? Thank you very much!
No
@fayfive @djhdj1
Hi,
I had this problem too and solved it finally.
I developed a project with the following requirements:
- A C++ library that uses SDL
- A C++ library that uses the above library and OpenGL
- A QML library to render images with the above library
- A C++ and QML sample project that uses the above QML library
I built this project under Windows and everything works fine. However, I couldn't build it for Android. I followed all the above suggestions but none of them worked for me.
What I did to solve this problem:
// main.cpp in sample project
#define SDL_MAIN_HANDLED
#include <SDL.h>
int main(int argc, char* argv[])
{
QGuiApplication app(argc, argv);
QQuickWindow::setGraphicsApi(QSGRendererInterface::OpenGL);
qmlRegisterType<game_view>("GameTexture", 1, 0, "GameTexture");
QQmlApplicationEngine engine(nullptr);
engine.addImportPath(u"qrc:/"_qs);
const QUrl url(u"qrc:/example_ui/main.qml"_qs, QUrl::TolerantMode);
engine.load(url);
if (engine.rootObjects().isEmpty())
return -1;
return app.exec();
}
// test_sdl.cpp in C++ library
bool init_sdl()
{
if (SDL_InitSubSystem(SDL_INIT_VIDEO) != 0)
{
std::cout << SDL_GetError();
return false;
}
return true;
}
I wrote a java activity:
package com.test.game;
import org.libsdl.app.SDLActivity;
import android.os.Bundle;
import android.content.Intent;
import android.util.Log;
public class MySDLActivity extends org.qtproject.qt.android.bindings.QtActivity
{
@Override
public void onCreate( Bundle savedInstanceState )
{
super.onCreate( savedInstanceState );
Log.d("MySDLActivity", "onCreate");
Intent intent = new Intent(this, SDLActivity.class)
startActivity(intent);
}
@Override
protected void onDestroy()
{
super.onDestroy();
Log.d("MySDLActivity", "onDestroy");
}
}
and set it as main launcher in AndroidManifest.xml
:
<?xml version="1.0"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.qtproject.test.game"
android:installLocation="auto"
android:versionCode="1"
android:versionName="1.0">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<uses-permission android:name="android.permission.USE_CREDENTIALS"/>
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true" />
<application
android:name="org.qtproject.qt.android.bindings.QtApplication"
android:theme="@style/Theme.AppCompat.Light"
android:hardwareAccelerated="true"
android:label="game.example"
android:requestLegacyExternalStorage="true"
android:allowNativeHeapPointerTagging="false"
android:allowBackup="true"
android:fullBackupOnly="false">
<activity
android:name="com.test.game.MySDLActivity"
android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|layoutDirection|locale|fontScale|keyboard|keyboardHidden|navigation|mcc|mnc|density"
android:label="game.example"
android:launchMode="singleTop"
android:screenOrientation="unspecified"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data
android:name="android.app.lib_name"
android:value="game.example" />
<meta-data
android:name="android.app.arguments"
android:value="" />
<meta-data
android:name="android.app.extract_android_style"
android:value="minimal" />
</activity>
<activity android:name="org.libsdl.app.SDLActivity" android:exported="true" android:label="Test" android:screenOrientation="unspecified"/>
</application>
</manifest>
I hope you find this solution useful.