Details
-
Bug
-
Resolution: Unresolved
-
P2: Important
-
None
-
5.12.2
-
None
-
openSUSE Tumbleweed, Android NDK 17.2
Description
When androiddeployqt is forced to use GNU readelf by setting ANDROID_USE_LLVM = false and deployment dependencies are overridden using ANDROID_DEPLOYMENT_DEPENDENCIES, it prints a lot of warnings like the following during build process:
-- Skipping /opt/qt/5.12.2/android_arm64_v8a/lib/libQt5Core.so. It has unmet dependencies: lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/. -- Skipping /opt/qt/5.12.2/android_arm64_v8a/lib/libQt5Gui.so. It has unmet dependencies: lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/. -- Skipping /opt/qt/5.12.2/android_arm64_v8a/lib/libQt5Network.so. It has unmet dependencies: lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/. -- Skipping /opt/qt/5.12.2/android_arm64_v8a/lib/libQt5Qml.so. It has unmet dependencies: lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/. -- Skipping /opt/qt/5.12.2/android_arm64_v8a/lib/libQt5Quick.so. It has unmet dependencies: lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/. -- Skipping /opt/qt/5.12.2/android_arm64_v8a/lib/libQt5Svg.so. It has unmet dependencies: lib/,lib/,lib/,lib/libQt5Widgets.so,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/. -- Skipping /opt/qt/5.12.2/android_arm64_v8a/lib/libQt5Concurrent.so. It has unmet dependencies: lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/. -- Skipping /opt/qt/5.12.2/android_arm64_v8a/lib/libQt5AndroidExtras.so. It has unmet dependencies: lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/,lib/. ...
And then it produces an APK that contains no Qt libraries. ANDROID_DEPLOYMENT_DEPENDENCIES is set to the following value:
lib/libQt5Core.so lib/libQt5Gui.so lib/libQt5Network.so lib/libQt5Qml.so lib/libQt5Quick.so lib/libQt5Svg.so lib/libQt5Concurrent.so lib/libQt5AndroidExtras.so lib/libQt5QuickTemplates2.so lib/libQt5QuickControls2.so jar/QtAndroid.jar jar/QtAndroidBearer.jar jar/QtAndroidExtras.jar plugins/platforms/android/libqtforandroid.so plugins/iconengines/libqsvgicon.so plugins/imageformats/libqsvg.so qml/Qt/labs/calendar/DayOfWeekRow.qml qml/Qt/labs/calendar/DayOfWeekRow.qmlc qml/Qt/labs/calendar/libqtlabscalendarplugin.so qml/Qt/labs/calendar/MonthGrid.qml qml/Qt/labs/calendar/MonthGrid.qmlc qml/Qt/labs/calendar/qmldir qml/Qt/labs/calendar/WeekNumberColumn.qml qml/Qt/labs/calendar/WeekNumberColumn.qmlc qml/QtGraphicalEffects/Blend.qml qml/QtGraphicalEffects/BrightnessContrast.qml qml/QtGraphicalEffects/Colorize.qml qml/QtGraphicalEffects/ColorOverlay.qml qml/QtGraphicalEffects/ConicalGradient.qml qml/QtGraphicalEffects/Desaturate.qml qml/QtGraphicalEffects/DirectionalBlur.qml qml/QtGraphicalEffects/Displace.qml qml/QtGraphicalEffects/DropShadow.qml qml/QtGraphicalEffects/FastBlur.qml qml/QtGraphicalEffects/GammaAdjust.qml qml/QtGraphicalEffects/GaussianBlur.qml qml/QtGraphicalEffects/Glow.qml qml/QtGraphicalEffects/HueSaturation.qml qml/QtGraphicalEffects/InnerShadow.qml qml/QtGraphicalEffects/LevelAdjust.qml qml/QtGraphicalEffects/libqtgraphicaleffectsplugin.so qml/QtGraphicalEffects/LinearGradient.qml qml/QtGraphicalEffects/MaskedBlur.qml qml/QtGraphicalEffects/OpacityMask.qml qml/QtGraphicalEffects/qmldir qml/QtGraphicalEffects/RadialBlur.qml qml/QtGraphicalEffects/RadialGradient.qml qml/QtGraphicalEffects/RectangularGlow.qml qml/QtGraphicalEffects/RecursiveBlur.qml qml/QtGraphicalEffects/ThresholdMask.qml qml/QtGraphicalEffects/ZoomBlur.qml qml/QtGraphicalEffects/private/DropShadowBase.qml qml/QtGraphicalEffects/private/DropShadowBase.qmlc qml/QtGraphicalEffects/private/FastGlow.qml qml/QtGraphicalEffects/private/FastGlow.qmlc qml/QtGraphicalEffects/private/FastInnerShadow.qml qml/QtGraphicalEffects/private/FastInnerShadow.qmlc qml/QtGraphicalEffects/private/FastMaskedBlur.qml qml/QtGraphicalEffects/private/FastMaskedBlur.qmlc qml/QtGraphicalEffects/private/GaussianDirectionalBlur.qml qml/QtGraphicalEffects/private/GaussianDirectionalBlur.qmlc qml/QtGraphicalEffects/private/GaussianGlow.qml qml/QtGraphicalEffects/private/GaussianGlow.qmlc qml/QtGraphicalEffects/private/GaussianInnerShadow.qml qml/QtGraphicalEffects/private/GaussianInnerShadow.qmlc qml/QtGraphicalEffects/private/GaussianMaskedBlur.qml qml/QtGraphicalEffects/private/GaussianMaskedBlur.qmlc qml/QtGraphicalEffects/private/libqtgraphicaleffectsprivate.so qml/QtGraphicalEffects/private/qmldir qml/QtQml/qmldir qml/QtQml/Models.2/libmodelsplugin.so qml/QtQml/Models.2/qmldir qml/QtQuick/Controls.2/AbstractButton.qml qml/QtQuick/Controls.2/Action.qml qml/QtQuick/Controls.2/ActionGroup.qml qml/QtQuick/Controls.2/ApplicationWindow.qml qml/QtQuick/Controls.2/BusyIndicator.qml qml/QtQuick/Controls.2/Button.qml qml/QtQuick/Controls.2/ButtonGroup.qml qml/QtQuick/Controls.2/CheckBox.qml qml/QtQuick/Controls.2/CheckDelegate.qml qml/QtQuick/Controls.2/ComboBox.qml qml/QtQuick/Controls.2/Container.qml qml/QtQuick/Controls.2/Control.qml qml/QtQuick/Controls.2/DelayButton.qml qml/QtQuick/Controls.2/Dial.qml qml/QtQuick/Controls.2/Dialog.qml qml/QtQuick/Controls.2/DialogButtonBox.qml qml/QtQuick/Controls.2/Drawer.qml qml/QtQuick/Controls.2/Frame.qml qml/QtQuick/Controls.2/GroupBox.qml qml/QtQuick/Controls.2/ItemDelegate.qml qml/QtQuick/Controls.2/Label.qml qml/QtQuick/Controls.2/libqtquickcontrols2plugin.so qml/QtQuick/Controls.2/Menu.qml qml/QtQuick/Controls.2/MenuBar.qml qml/QtQuick/Controls.2/MenuBarItem.qml qml/QtQuick/Controls.2/MenuItem.qml qml/QtQuick/Controls.2/MenuSeparator.qml qml/QtQuick/Controls.2/Page.qml qml/QtQuick/Controls.2/PageIndicator.qml qml/QtQuick/Controls.2/Pane.qml qml/QtQuick/Controls.2/Popup.qml qml/QtQuick/Controls.2/ProgressBar.qml qml/QtQuick/Controls.2/qmldir qml/QtQuick/Controls.2/RadioButton.qml qml/QtQuick/Controls.2/RadioDelegate.qml qml/QtQuick/Controls.2/RangeSlider.qml qml/QtQuick/Controls.2/RoundButton.qml qml/QtQuick/Controls.2/ScrollBar.qml qml/QtQuick/Controls.2/ScrollIndicator.qml qml/QtQuick/Controls.2/ScrollView.qml qml/QtQuick/Controls.2/Slider.qml qml/QtQuick/Controls.2/SpinBox.qml qml/QtQuick/Controls.2/StackView.qml qml/QtQuick/Controls.2/SwipeDelegate.qml qml/QtQuick/Controls.2/SwipeView.qml qml/QtQuick/Controls.2/Switch.qml qml/QtQuick/Controls.2/SwitchDelegate.qml qml/QtQuick/Controls.2/TabBar.qml qml/QtQuick/Controls.2/TabButton.qml qml/QtQuick/Controls.2/TextArea.qml qml/QtQuick/Controls.2/TextField.qml qml/QtQuick/Controls.2/ToolBar.qml qml/QtQuick/Controls.2/ToolButton.qml qml/QtQuick/Controls.2/ToolSeparator.qml qml/QtQuick/Controls.2/ToolTip.qml qml/QtQuick/Controls.2/Tumbler.qml qml/QtQuick/Controls.2/Material/ApplicationWindow.qml qml/QtQuick/Controls.2/Material/BoxShadow.qml qml/QtQuick/Controls.2/Material/BusyIndicator.qml qml/QtQuick/Controls.2/Material/Button.qml qml/QtQuick/Controls.2/Material/CheckBox.qml qml/QtQuick/Controls.2/Material/CheckDelegate.qml qml/QtQuick/Controls.2/Material/CheckIndicator.qml qml/QtQuick/Controls.2/Material/ComboBox.qml qml/QtQuick/Controls.2/Material/CursorDelegate.qml qml/QtQuick/Controls.2/Material/DelayButton.qml qml/QtQuick/Controls.2/Material/Dial.qml qml/QtQuick/Controls.2/Material/Dialog.qml qml/QtQuick/Controls.2/Material/DialogButtonBox.qml qml/QtQuick/Controls.2/Material/Drawer.qml qml/QtQuick/Controls.2/Material/ElevationEffect.qml qml/QtQuick/Controls.2/Material/Frame.qml qml/QtQuick/Controls.2/Material/GroupBox.qml qml/QtQuick/Controls.2/Material/ItemDelegate.qml qml/QtQuick/Controls.2/Material/Label.qml qml/QtQuick/Controls.2/Material/libqtquickcontrols2materialstyleplugin.so qml/QtQuick/Controls.2/Material/Menu.qml qml/QtQuick/Controls.2/Material/MenuBar.qml qml/QtQuick/Controls.2/Material/MenuBarItem.qml qml/QtQuick/Controls.2/Material/MenuItem.qml qml/QtQuick/Controls.2/Material/MenuSeparator.qml qml/QtQuick/Controls.2/Material/Page.qml qml/QtQuick/Controls.2/Material/PageIndicator.qml qml/QtQuick/Controls.2/Material/Pane.qml qml/QtQuick/Controls.2/Material/Popup.qml qml/QtQuick/Controls.2/Material/ProgressBar.qml qml/QtQuick/Controls.2/Material/qmldir qml/QtQuick/Controls.2/Material/RadioButton.qml qml/QtQuick/Controls.2/Material/RadioDelegate.qml qml/QtQuick/Controls.2/Material/RadioIndicator.qml qml/QtQuick/Controls.2/Material/RangeSlider.qml qml/QtQuick/Controls.2/Material/RectangularGlow.qml qml/QtQuick/Controls.2/Material/RoundButton.qml qml/QtQuick/Controls.2/Material/ScrollBar.qml qml/QtQuick/Controls.2/Material/ScrollIndicator.qml qml/QtQuick/Controls.2/Material/Slider.qml qml/QtQuick/Controls.2/Material/SliderHandle.qml qml/QtQuick/Controls.2/Material/SpinBox.qml qml/QtQuick/Controls.2/Material/StackView.qml qml/QtQuick/Controls.2/Material/SwipeDelegate.qml qml/QtQuick/Controls.2/Material/SwipeView.qml qml/QtQuick/Controls.2/Material/Switch.qml qml/QtQuick/Controls.2/Material/SwitchDelegate.qml qml/QtQuick/Controls.2/Material/SwitchIndicator.qml qml/QtQuick/Controls.2/Material/TabBar.qml qml/QtQuick/Controls.2/Material/TabButton.qml qml/QtQuick/Controls.2/Material/TextArea.qml qml/QtQuick/Controls.2/Material/TextField.qml qml/QtQuick/Controls.2/Material/ToolBar.qml qml/QtQuick/Controls.2/Material/ToolButton.qml qml/QtQuick/Controls.2/Material/ToolSeparator.qml qml/QtQuick/Controls.2/Material/ToolTip.qml qml/QtQuick/Controls.2/Material/Tumbler.qml qml/QtQuick/Layouts/libqquicklayoutsplugin.so qml/QtQuick/Layouts/qmldir qml/QtQuick/Templates.2/libqtquicktemplates2plugin.so qml/QtQuick/Templates.2/qmldir qml/QtQuick/Window.2/libwindowplugin.so qml/QtQuick/Window.2/qmldir qml/QtQuick.2/libqtquick2plugin.so qml/QtQuick.2/qmldir plugins/qmltooling/libqmldbg_debugger.so plugins/qmltooling/libqmldbg_inspector.so plugins/qmltooling/libqmldbg_local.so plugins/qmltooling/libqmldbg_messages.so plugins/qmltooling/libqmldbg_native.so plugins/qmltooling/libqmldbg_nativedebugger.so plugins/qmltooling/libqmldbg_preview.so plugins/qmltooling/libqmldbg_profiler.so plugins/qmltooling/libqmldbg_quickprofiler.so plugins/qmltooling/libqmldbg_server.so plugins/qmltooling/libqmldbg_tcp.so
This seems to be caused by commit 6fdf398ab4b32c7a70af08191963c4e4f5a885fe in qtbase. The following patch fixes it for me:
--- a/qtbase/src/tools/androiddeployqt/main.cpp +++ b/qtbase/src/tools/androiddeployqt/main.cpp @@ -1639,9 +1639,11 @@ QStringList getQtLibsFromElf(const Options &options, const QString &fileName) const int pos = line.lastIndexOf('[') + 1; library = QString::fromLatin1(line.mid(pos, line.length() - pos - 2)); } - QString libraryName = QLatin1String("lib/") + library; - if (QFile::exists(absoluteFilePath(&options, libraryName))) - ret += libraryName; + if (!library.isEmpty()) { + QString libraryName = QLatin1String("lib/") + library; + if (QFile::exists(absoluteFilePath(&options, libraryName))) + ret += libraryName; + } } pclose(readElfCommand);
Note that i am building with clang, but i want androiddeployqt to use GNU tools. I am not sure if this is supported, but i do not see how this code in androiddeployqt can work differently when compiling with GCC. Before the commit i have specified above, code which i have wrapped in if was executed only for lines of readelf output which contain "(NEEDED)", but now it is executed for every line.