Crash on Android if Theme.NoTitleBar.Fullscreen is set in AndroidManifest.xml
Unsolved
Mobile and Embedded
-
Hello,
I can't debug a Qt application if I add
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
to the AndroidManifest.xml file, debugger starts and crashes with the following error:W System.err: java.lang.NoSuchFieldException: No field mDrawable in class Landroid/graphics/drawable/ClipDrawable$ClipState; (declaration of 'android.graphics.drawable.ClipDrawable$ClipState' appears in /system/framework/framework.jar) W System.err: at java.lang.Class.getDeclaredField(Native Method) W System.err: at org.qtproject.qt5.android.ExtractStyle.getAccessibleField(ExtractStyle.java:404) W System.err: at org.qtproject.qt5.android.ExtractStyle.getDrawable(ExtractStyle.java:1074) W System.err: at org.qtproject.qt5.android.ExtractStyle.getLayerDrawable(ExtractStyle.java:628) W System.err: at org.qtproject.qt5.android.ExtractStyle.getDrawable(ExtractStyle.java:1051) W System.err: at org.qtproject.qt5.android.ExtractStyle.extractProgressBarInfo(ExtractStyle.java:1681) W System.err: at org.qtproject.qt5.android.ExtractStyle.extractProgressBar(ExtractStyle.java:1697) W System.err: at org.qtproject.qt5.android.ExtractStyle.<init>(ExtractStyle.java:2027) W System.err: at org.qtproject.qt5.android.QtActivityDelegate.loadApplication(QtActivityDelegate.java:608) W System.err: at java.lang.reflect.Method.invoke(Native Method) W System.err: at org.qtproject.qt5.android.bindings.QtLoader.loadApplication(QtLoader.java:241) W System.err: at org.qtproject.qt5.android.bindings.QtLoader.startApp(QtLoader.java:671) W System.err: at org.qtproject.qt5.android.bindings.QtActivityLoader.onCreate(QtActivityLoader.java:183) W System.err: at org.qtproject.qt5.android.bindings.QtActivity.onCreateHook(QtActivity.java:266) W System.err: at org.qtproject.qt5.android.bindings.QtActivity.onCreate(QtActivity.java:273) W System.err: at android.app.Activity.performCreate(Activity.java:7036) W System.err: at android.app.Activity.performCreate(Activity.java:7027) W System.err: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1231) W System.err: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2864) W System.err: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2989) W System.err: at android.app.ActivityThread.-wrap11(Unknown Source:0) W System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1688) W System.err: at android.os.Handler.dispatchMessage(Handler.java:106) W System.err: at android.os.Looper.loop(Looper.java:164) W System.err: at android.app.ActivityThread.main(ActivityThread.java:6753) W System.err: at java.lang.reflect.Method.invoke(Native Method) W System.err: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:482) W System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) W System.err: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object java.lang.reflect.Field.get(java.lang.Object)' on a null object reference W System.err: at org.qtproject.qt5.android.ExtractStyle.getDrawable(ExtractStyle.java:1074) W System.err: at org.qtproject.qt5.android.ExtractStyle.getLayerDrawable(ExtractStyle.java:628) W System.err: at org.qtproject.qt5.android.ExtractStyle.getDrawable(ExtractStyle.java:1051) W System.err: at org.qtproject.qt5.android.ExtractStyle.extractProgressBarInfo(ExtractStyle.java:1681) W System.err: at org.qtproject.qt5.android.ExtractStyle.extractProgressBar(ExtractStyle.java:1697) W System.err: at org.qtproject.qt5.android.ExtractStyle.<init>(ExtractStyle.java:2027) W System.err: at org.qtproject.qt5.android.QtActivityDelegate.loadApplication(QtActivityDelegate.java:608) W System.err: at java.lang.reflect.Method.invoke(Native Method) W System.err: at org.qtproject.qt5.android.bindings.QtLoader.loadApplication(QtLoader.java:241) W System.err: at org.qtproject.qt5.android.bindings.QtLoader.startApp(QtLoader.java:671) W System.err: at org.qtproject.qt5.android.bindings.QtActivityLoader.onCreate(QtActivityLoader.java:183) W System.err: at org.qtproject.qt5.android.bindings.QtActivity.onCreateHook(QtActivity.java:266) W System.err: at org.qtproject.qt5.android.bindings.QtActivity.onCreate(QtActivity.java:273) W System.err: at android.app.Activity.performCreate(Activity.java:7036) W System.err: at android.app.Activity.performCreate(Activity.java:7027) W System.err: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1231) W System.err: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2864) W System.err: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2989) W System.err: at android.app.ActivityThread.-wrap11(Unknown Source:0) W System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1688) W System.err: at android.os.Handler.dispatchMessage(Handler.java:106) W System.err: at android.os.Looper.loop(Looper.java:164) W System.err: at android.app.ActivityThread.main(ActivityThread.java:6753) W System.err: at java.lang.reflect.Method.invoke(Native Method) W System.err: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:482) W System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) W System.err: java.lang.NoSuchFieldException: No field mDrawable in class Landroid/graphics/drawable/ClipDrawable$ClipState; (declaration of 'android.graphics.drawable.ClipDrawable$ClipState' appears in /system/framework/framework.jar) W System.err: at java.lang.Class.getDeclaredField(Native Method) W System.err: at org.qtproject.qt5.android.ExtractStyle.getAccessibleField(ExtractStyle.java:404) W System.err: at org.qtproject.qt5.android.ExtractStyle.getDrawable(ExtractStyle.java:1074) W System.err: at org.qtproject.qt5.android.ExtractStyle.getLayerDrawable(ExtractStyle.java:628) W System.err: at org.qtproject.qt5.android.ExtractStyle.getDrawable(ExtractStyle.java:1051) W System.err: at org.qtproject.qt5.android.ExtractStyle.extractProgressBarInfo(ExtractStyle.java:1681) W System.err: at org.qtproject.qt5.android.ExtractStyle.extractProgressBar(ExtractStyle.java:1697) W System.err: at org.qtproject.qt5.android.ExtractStyle.<init>(ExtractStyle.java:2027) W System.err: at org.qtproject.qt5.android.QtActivityDelegate.loadApplication(QtActivityDelegate.java:608) W System.err: at java.lang.reflect.Method.invoke(Native Method) W System.err: at org.qtproject.qt5.android.bindings.QtLoader.loadApplication(QtLoader.java:241) W System.err: at org.qtproject.qt5.android.bindings.QtLoader.startApp(QtLoader.java:671) W System.err: at org.qtproject.qt5.android.bindings.QtActivityLoader.onCreate(QtActivityLoader.java:183) W System.err: at org.qtproject.qt5.android.bindings.QtActivity.onCreateHook(QtActivity.java:266) W System.err: at org.qtproject.qt5.android.bindings.QtActivity.onCreate(QtActivity.java:273) W System.err: at android.app.Activity.performCreate(Activity.java:7036) W System.err: at android.app.Activity.performCreate(Activity.java:7027) W System.err: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1231) W System.err: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2864) W System.err: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2989) W System.err: at android.app.ActivityThread.-wrap11(Unknown Source:0) W System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1688) W System.err: at android.os.Handler.dispatchMessage(Handler.java:106) W System.err: at android.os.Looper.loop(Looper.java:164) W System.err: at android.app.ActivityThread.main(ActivityThread.java:6753) W System.err: at java.lang.reflect.Method.invoke(Native Method) W System.err: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:482) W System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) W System.err: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object java.lang.reflect.Field.get(java.lang.Object)' on a null object reference W System.err: at org.qtproject.qt5.android.ExtractStyle.getDrawable(ExtractStyle.java:1074) W System.err: at org.qtproject.qt5.android.ExtractStyle.getLayerDrawable(ExtractStyle.java:628) W System.err: at org.qtproject.qt5.android.ExtractStyle.getDrawable(ExtractStyle.java:1051) W System.err: at org.qtproject.qt5.android.ExtractStyle.extractProgressBarInfo(ExtractStyle.java:1681) W System.err: at org.qtproject.qt5.android.ExtractStyle.extractProgressBar(ExtractStyle.java:1697) W System.err: at org.qtproject.qt5.android.ExtractStyle.<init>(ExtractStyle.java:2027) W System.err: at org.qtproject.qt5.android.QtActivityDelegate.loadApplication(QtActivityDelegate.java:608) W System.err: at java.lang.reflect.Method.invoke(Native Method) W System.err: at org.qtproject.qt5.android.bindings.QtLoader.loadApplication(QtLoader.java:241) W System.err: at org.qtproject.qt5.android.bindings.QtLoader.startApp(QtLoader.java:671) W System.err: at org.qtproject.qt5.android.bindings.QtActivityLoader.onCreate(QtActivityLoader.java:183) W System.err: at org.qtproject.qt5.android.bindings.QtActivity.onCreateHook(QtActivity.java:266) W System.err: at org.qtproject.qt5.android.bindings.QtActivity.onCreate(QtActivity.java:273) W System.err: at android.app.Activity.performCreate(Activity.java:7036) W System.err: at android.app.Activity.performCreate(Activity.java:7027) W System.err: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1231) W System.err: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2864) W System.err: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2989) W System.err: at android.app.ActivityThread.-wrap11(Unknown Source:0) W System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1688) W System.err: at android.os.Handler.dispatchMessage(Handler.java:106) W System.err: at android.os.Looper.loop(Looper.java:164) W System.err: at android.app.ActivityThread.main(ActivityThread.java:6753) W System.err: at java.lang.reflect.Method.invoke(Native Method) W System.err: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:482) W System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) W System.err: java.lang.NoSuchFieldException: No field mDrawable in class Landroid/graphics/drawable/ClipDrawable$ClipState; (declaration of 'android.graphics.drawable.ClipDrawable$ClipState' appears in /system/framework/framework.jar) W System.err: at java.lang.Class.getDeclaredField(Native Method) W System.err: at org.qtproject.qt5.android.ExtractStyle.getAccessibleField(ExtractStyle.java:404) W System.err: at org.qtproject.qt5.android.ExtractStyle.getDrawable(ExtractStyle.java:1074) W System.err: at org.qtproject.qt5.android.ExtractStyle.getLayerDrawable(ExtractStyle.java:628) W System.err: at org.qtproject.qt5.android.ExtractStyle.getDrawable(ExtractStyle.java:1051) W System.err: at org.qtproject.qt5.android.ExtractStyle.extractProgressBarInfo(ExtractStyle.java:1681) W System.err: at org.qtproject.qt5.android.ExtractStyle.extractAbsSeekBar(ExtractStyle.java:1707) W System.err: at org.qtproject.qt5.android.ExtractStyle.<init>(ExtractStyle.java:2031) W System.err: at org.qtproject.qt5.android.QtActivityDelegate.loadApplication(QtActivityDelegate.java:608) W System.err: at java.lang.reflect.Method.invoke(Native Method) W System.err: at org.qtproject.qt5.android.bindings.QtLoader.loadApplication(QtLoader.java:241) W System.err: at org.qtproject.qt5.android.bindings.QtLoader.startApp(QtLoader.java:671) W System.err: at org.qtproject.qt5.android.bindings.QtActivityLoader.onCreate(QtActivityLoader.java:183) W System.err: at org.qtproject.qt5.android.bindings.QtActivity.onCreateHook(QtActivity.java:266) W System.err: at org.qtproject.qt5.android.bindings.QtActivity.onCreate(QtActivity.java:273) W System.err: at android.app.Activity.performCreate(Activity.java:7036) W System.err: at android.app.Activity.performCreate(Activity.java:7027) W System.err: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1231) W System.err: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2864) W System.err: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2989) W System.err: at android.app.ActivityThread.-wrap11(Unknown Source:0) W System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1688) W System.err: at android.os.Handler.dispatchMessage(Handler.java:106) W System.err: at android.os.Looper.loop(Looper.java:164) W System.err: at android.app.ActivityThread.main(ActivityThread.java:6753) W System.err: at java.lang.reflect.Method.invoke(Native Method) W System.err: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:482) W System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
Then, Qt Creators points me at a disassembler page.
Here's the complete AndroidManifest.xml file:
<?xml version="1.0"?> <manifest package="fr.fetacorp.SaveTheBall" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="1.0" android:versionCode="1" android:installLocation="auto"> <application android:theme="@android:style/Theme.NoTitleBar.Fullscreen" android:hardwareAccelerated="true" android:name="org.qtproject.qt5.android.bindings.QtApplication" android:label="-- %%INSERT_APP_NAME%% --"> <activity android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|layoutDirection|locale|fontScale|keyboard|keyboardHidden|navigation" android:name="org.qtproject.qt5.android.bindings.QtActivity" android:label="-- %%INSERT_APP_NAME%% --" android:screenOrientation="portrait" android:launchMode="singleTop"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> <!-- Application arguments --> <!-- meta-data android:name="android.app.arguments" android:value="arg1 arg2 arg3"/ --> <!-- Application arguments --> <meta-data android:name="android.app.lib_name" android:value="-- %%INSERT_APP_LIB_NAME%% --"/> <meta-data android:name="android.app.qt_sources_resource_id" android:resource="@array/qt_sources"/> <meta-data android:name="android.app.repository" android:value="default"/> <meta-data android:name="android.app.qt_libs_resource_id" android:resource="@array/qt_libs"/> <meta-data android:name="android.app.bundled_libs_resource_id" android:resource="@array/bundled_libs"/> <!-- Deploy Qt libs as part of package --> <meta-data android:name="android.app.bundle_local_qt_libs" android:value="-- %%BUNDLE_LOCAL_QT_LIBS%% --"/> <meta-data android:name="android.app.bundled_in_lib_resource_id" android:resource="@array/bundled_in_lib"/> <meta-data android:name="android.app.bundled_in_assets_resource_id" android:resource="@array/bundled_in_assets"/> <!-- Run with local libs --> <meta-data android:name="android.app.use_local_qt_libs" android:value="-- %%USE_LOCAL_QT_LIBS%% --"/> <meta-data android:name="android.app.libs_prefix" android:value="/data/local/tmp/qt/"/> <meta-data android:name="android.app.load_local_libs" android:value="-- %%INSERT_LOCAL_LIBS%% --"/> <meta-data android:name="android.app.load_local_jars" android:value="-- %%INSERT_LOCAL_JARS%% --"/> <meta-data android:name="android.app.static_init_classes" android:value="-- %%INSERT_INIT_CLASSES%% --"/> <!-- Used to specify custom system library path to run with local system libs --> <!-- <meta-data android:name="android.app.system_libs_prefix" android:value="/system/lib/"/> --> <!-- Messages maps --> <meta-data android:value="@string/ministro_not_found_msg" android:name="android.app.ministro_not_found_msg"/> <meta-data android:value="@string/ministro_needed_msg" android:name="android.app.ministro_needed_msg"/> <meta-data android:value="@string/fatal_error_msg" android:name="android.app.fatal_error_msg"/> <!-- Messages maps --> <!-- Splash screen --> <!-- meta-data android:name="android.app.splash_screen_drawable" android:resource="@drawable/logo"/ --> <!-- meta-data android:name="android.app.splash_screen_sticky" android:value="true"/ --> <!-- Splash screen --> <!-- Background running --> <!-- Warning: changing this value to true may cause unexpected crashes if the application still try to draw after "applicationStateChanged(Qt::ApplicationSuspended)" signal is sent! --> <meta-data android:name="android.app.background_running" android:value="false"/> <!-- Background running --> <!-- auto screen scale factor --> <meta-data android:name="android.app.auto_screen_scale_factor" android:value="false"/> <!-- auto screen scale factor --> <!-- extract android style --> <!-- available android:values : * full - useful QWidget & Quick Controls 1 apps * minimal - useful for Quick Controls 2 apps, it is much faster than "full" * none - useful for apps that don't use any of the above Qt modules --> <meta-data android:name="android.app.extract_android_style" android:value="full"/> <!-- extract android style --> </activity> <!-- For adding service(s) please check: https://wiki.qt.io/AndroidServices --> </application> <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="21"/> <supports-screens android:largeScreens="true" android:normalScreens="true" android:anyDensity="true" android:smallScreens="true"/> <!-- The following comment will be replaced upon deployment with default permissions based on the dependencies of the application. Remove the comment if you do not require these default permissions. --> <!-- %%INSERT_PERMISSIONS --> <!-- The following comment will be replaced upon deployment with default features based on the dependencies of the application. Remove the comment if you do not require these default features. --> <!-- %%INSERT_FEATURES --> </manifest>
I'm using Qt 5.11.0 with android-21 (armeabi-v7a) as target platform.
Do you have any ideas?