QApplication a(argc, argv);
and use it with android studio. A “solution” was found that was extremely crutch. Now I had a weekend to figure out how to work with qt without such crutches from the android studio. Anyone interested is welcome under the cat!
QApplication a(argc, argv);
then i get an exception:This was not the case for the Qt platform plugin "android".
___QT_.class.getDeclaredMethod(delegateMethod.getName(), delegateMethod.getParameterTypes());
and if (-1 == stackDeep) { String activityClassName = ___QT_.class.getCanonicalName(); for (int it=0;it<elements.length;it++) if (elements[it].getClassName().equals(activityClassName)) { stackDeep = it; break; } }
super.onCreate(savedInstanceState); try { m_activityInfo = getPackageManager().getActivityInfo(getComponentName(), PackageManager.GET_META_DATA); for (Field f : Class.forName("android.R$style").getDeclaredFields()) { if (f.getInt(null) == m_activityInfo.getThemeResource()) { QT_ANDROID_THEMES = new String[] {f.getName()}; QT_ANDROID_DEFAULT_THEME = f.getName(); } } } catch (Exception e) { e.printStackTrace(); finish(); return; } try { setTheme(Class.forName("android.R$style").getDeclaredField(QT_ANDROID_DEFAULT_THEME).getInt(null)); } catch (Exception e) { e.printStackTrace(); } if (Build.VERSION.SDK_INT > 10) { try { requestWindowFeature(Window.class.getField("FEATURE_ACTION_BAR").getInt(null)); } catch (Exception e) { e.printStackTrace(); } } else { requestWindowFeature(Window.FEATURE_NO_TITLE); } if (QtApplication.m_delegateObject != null && QtApplication.onCreate != null) { QtApplication.invokeDelegateMethod(QtApplication.onCreate, savedInstanceState); return; } m_displayDensity = getResources().getDisplayMetrics().densityDpi; ENVIRONMENT_VARIABLES += "\tQT_ANDROID_THEME=" + QT_ANDROID_DEFAULT_THEME + "/\tQT_ANDROID_THEME_DISPLAY_DPI=" + m_displayDensity + "\t"; if (null == getLastNonConfigurationInstance()) { // if splash screen is defined, then show it if (m_activityInfo.metaData.containsKey("android.app.splash_screen_drawable")) getWindow().setBackgroundDrawableResource(m_activityInfo.metaData.getInt("android.app.splash_screen_drawable")); else getWindow().setBackgroundDrawable(new ColorDrawable(0xff000000)); if (m_activityInfo.metaData.containsKey("android.app.background_running") && m_activityInfo.metaData.getBoolean("android.app.background_running")) { ENVIRONMENT_VARIABLES += "QT_BLOCK_EVENT_LOOPS_WHEN_SUSPENDED=0\t"; } else { ENVIRONMENT_VARIABLES += "QT_BLOCK_EVENT_LOOPS_WHEN_SUSPENDED=1\t"; } startApp(true); } }
setContentView(R.layout.form_name);
If, insert it before startApp (true); then earn nothing! Therefore, I will simply advise, while here without explanation, to do something like this: startApp(true); } new Thread(new Runnable() { @Override public void run() { while (!MyLibSo.isQtReady()) { try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } runOnUiThread(new Runnable() { @Override public void run() { initializeGUI(); } }); } }).start();
setContentView(R.layout.form_name);
<string name="ministro_not_found_msg">Can\'t find Ministro service.\nThe application can\'t start.</string> <string name="ministro_needed_msg">This application requires Ministro service. Would you like to install it?</string> <string name="fatal_error_msg">Your application encountered a fatal error and cannot continue.</string> <array name="qt_sources"> <item>https://download.qt-project.org/ministro/android/qt5/qt-5.4</item> </array> <array name="bundled_libs"> <item>MyLibWithQt</item> </array> <array name="qt_libs"> <item>gnustl_shared</item> <item>Qt5Core</item> <item>Qt5Gui</item> <item>Qt5Widgets</item> </array> <array name="bundled_in_lib"> <item> libplugins_platforms_android_libqtforandroid.so:plugins/platforms/android/libqtforandroid.so </item> <item>libplugins_platforms_libqminimal.so:plugins/platforms/libqminimal.so</item> <item>libplugins_platforms_libqoffscreen.so:plugins/platforms/libqoffscreen.so</item> </array> <array name="bundled_in_assets"> </array>
<meta-data android:name="android.app.lib_name" android:value="MyLibWithQt " /> <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="1" /> <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="1" /> <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="plugins/platforms/android/libqtforandroid.so" /> <meta-data android:name="android.app.load_local_jars" android:value="jar/QtAndroid.jar:jar/QtAndroidAccessibility.jar:jar/QtAndroid-bundled.jar:jar/QtAndroidAccessibility-bundled.jar" />
QApplication a(argc, argv);
and ... we get the same Source: https://habr.com/ru/post/305528/