Fwd: Subsurface-mobile crosssbuild

Axel Richter Axel.Richter at freenet.de
Sun Jul 17 12:35:00 PDT 2016


Am 17.07.2016 um 15:58 schrieb Willem Ferguson:
>
> Hallo Axel,
> I hope that the text underneath is not too unreadable.
>
> The short version of my request:
>     I get an error when running a cross-built Subsurface 
> Android,
> indicating kirigami has not been loaded.
>
> The long version of my request;
>     I installed Qt5.7 (see location in build.sh)
>     Did the patches you suggested.
>     Exported JAVA_HOME
>     The build runs ok, creating the .apk
>
>     Underneath the listings of:
>         build.sh in packaging/android
>         mobile-resources.qrc
>         mobile-components.sh
>         adb logcat output.
>
> Any ideas what I am doing wrong?
>
> Kind regards,
> willem
>
> git describe
> ==========
> v4.5.2-1475-geaed18b
>
> Build.sh:
> =================
> set -e
> PLATFORM=$(uname)
> # (trick to get the absolute path, either if we're called 
> with a
> # absolute path or a relative path)
> pushd $(dirname $0)/../../
> export SUBSURFACE_SOURCE=$PWD
> popd
>
> # is this a release or debug build
> BUILD_TYPE=Debug
> if [ "$1" = "release" ] || [ "$1" = "Release" ] ; then
>     shift
>     BUILD_TYPE=Release
> fi
> if [ "$1" = "debug" ] || [ "$1" = "Debug" ] ; then
>     # this is the default - still need to eat the argument 
> if given
>     shift
> fi
>
> if [ "$1" = "-buildnr" ] ; then
>     shift
>     BUILD_NR="\"$1\""
>     shift
> else
>     BUILD_NR="\"0\""
> fi
>
> # Configure where we can find things here
> export ANDROID_NDK_ROOT=/usr/share/android-ndk-r12     # --->
> export QT5_ANDROID=/home/willem/Qt/5.7                 # --->
>
> #if [ ! -z "$QT5_ANDROID" ] ; then
> #    echo "Using Qt5 in $QT5_ANDROID"
> #elif [ -d "$SUBSURFACE_SOURCE/../Qt/5.7" ] ; then
> #    export QT5_ANDROID=$SUBSURFACE_SOURCE/../Qt/5.7
> #elif [ -d "$SUBSURFACE_SOURCE/../Qt/5.6" ] ; then
> #    export QT5_ANDROID=$SUBSURFACE_SOURCE/../Qt/5.6
> #elif [ -d "$SUBSURFACE_SOURCE/../Qt/5.5" ] ; then
> #    export QT5_ANDROID=$SUBSURFACE_SOURCE/../Qt/5.5
> #else
> #    echo "Cannot find Qt 5.7, 5.6 or 5.5 under 
> $SUBSURFACE_SOURCE/../Qt"
> #    exit 1
> #fi
>
> if [ $PLATFORM = Darwin ] ; then
>        export
> ANDROID_SDK_ROOT=${ANDROID_SDK_ROOT-$SUBSURFACE_SOURCE/../android-sdk-macosx} 
>
>        export ANDROID_NDK_HOST=darwin-x86_64
> else
>        export 
> ANDROID_SDK_ROOT=/usr/share/android-sdk-linux     # --->
>        export ANDROID_NDK_HOST=linux-x86
> fi
>
>     ........................................
>
> export QT5_ANDROID_BIN=${QT5_ANDROID}/android_${QT_ARCH}/bin
>
> if [ ! -e ndk-$ARCH ] ; then
>  $ANDROID_NDK_ROOT/build/tools/make_standalone_toolchain.py
> --arch=$ARCH --install-dir=ndk-$ARCH --api=16
> fi
> export BUILDROOT=$PWD
> export PATH=${BUILDROOT}/ndk-$ARCH/bin:$PATH
> export PREFIX=${BUILDROOT}/ndk-$ARCH/sysroot/usr
> export PKG_CONFIG_LIBDIR=${PREFIX}/lib/pkgconfig
> export CC=${BUILDROOT}/ndk-$ARCH/bin/${BUILDCHAIN}-gcc
> export CXX=${BUILDROOT}/ndk-$ARCH/bin/${BUILDCHAIN}-g++
> # autoconf seems to get lost without this
> export SYSROOT=${BUILDROOT}/ndk-$ARCH/sysroot
> export CFLAGS="--sysroot=${SYSROOT}"
> export CPPFLAGS="--sysroot=${SYSROOT}"
> export CXXFLAGS="--sysroot=${SYSROOT}"
> # Junk needed for qt-android-cmake
> export ANDROID_STANDALONE_TOOLCHAIN=${BUILDROOT}/ndk-$ARCH
> #if [ $PLATFORM = Darwin ] ; then
> #    JAVA_HOME=$(/usr/libexec/java_home)
> #    export JAVA_HOME
> #else
>     export JAVA_HOME=/usr/share/jdk1.8.0_77             # 
> ----->
> #    export JAVA_HOME=/usr                              # 
> ----->
> #fi
>
>
> mobile-resouces.qrc
> ===================
> <RCC>
>     <qresource prefix="/qml">
>         <file>main.qml</file>
>         <file>Preferences.qml</file>
>         <file>About.qml</file>
>         <file>CloudCredentials.qml</file>
>
>             ...........
>
>         <file 
> alias="menu-edit.png">icons/menu-edit.png</file>
>         <file 
> alias="menu-back.png">icons/menu-back.png</file>
>         <file alias="nocloud.svg">icons/nocloud.svg</file>
>     </qresource>
>     <qresource prefix="/imports">
>         <file
> alias="org/kde/kirigami/Action.qml">kirigami/Action.qml</file> 
>
>                 # ---->
>         <file
> alias="org/kde/kirigami/ApplicationWindow.qml">kirigami/ApplicationWindow.qml</file> 
>
>
>
> Mobile-components.sh
> =====================
> #!/bin/bash
> #
> # if you run the build.sh script to build Subsurface 
> you'll never need
> # this, but if you build your binaries differently for 
> some reason and
> # you want to build Subsurface-mobile, running this from 
> within the
> # checked out source directory (not your build directory) 
> should do the
> # trick - you can also run this to update to the latest 
> upstream when
> # you don't want to rerun the whole build.sh script.
>
> SRC=$(cd .. ; pwd)
>
> if [ ! -d "$SRC/subsurface" ] || [ ! -d "mobile-widgets" ] 
> || [ ! -d
> "core" ] ; then
>     echo "please start this script from the Subsurface 
> source directory
> (which needs to be named \"subsurface\")."
>     exit 1
> fi
>
> if [ "$1" = "-nopull" ] ; then
>     NOPULL=1
> fi
>
> # now bring in the latest Kirigami mobile components plus 
> a couple of
> icons that we need
> # first, get the latest from upstream
> # yes, this is a bit overkill as we clone a lot of stuff 
> for just a few
> files, but this way
> # we stop having to manually merge our code with upstream 
> all the time
> # as we get closer to shipping a production version we'll 
> likely check
> out specific tags
> # or SHAs from upstream
> cd $SRC
> if [ ! -d kirigami ] ; then
>     git clone git://github.com/KDE/kirigami
> fi
> if [ "$NOPULL" = "" ] ; then
>     pushd kirigami
>     git pull
>     popd
> fi
> if [ ! -d breeze-icons ] ; then
>     git clone git://anongit.kde.org/breeze-icons
> fi
> if [ "$NOPULL" = "" ] ; then
>     pushd breeze-icons
>     git pull
>     popd
> fi
>
> # now copy the components and a couple of icons into plae
> MC=$SRC/subsurface/mobile-widgets/qml/kirigami
> PMMC=kirigami/src/controls                                
> # ------------->
> BREEZE=breeze-icons
>
> rm -rf $MC
> mkdir -p $MC/icons
> cp -R $PMMC/* $MC/
> #cp $PMMC/../fallbacktheme/*qml $MC/
> cp -R $PMMC/templates/* 
> $MC/                                  #
> ----------->
>
> # fix plugin requirement
> sed -i -e 's/^plugin kirigamiplugin/# plugin 
> kirigamiplugin/' $MC/qmldir
>
>
> adb logcat | -i subsurface:
> ===========================
> 07-17 11:08:38.755  4145  4145 I ApplicationPackageManager:
> load=org.subsurfacedivelog.mobile, bg=192-192, dr=192-192
> 07-17 11:08:48.805  4438  4438 I Timeline: Timeline:
> Activity_launch_request id:org.subsurfacedivelog.mobile 
> time:9386825
> 07-17 11:08:48.835 13025 13025 W SELinux : SELinux:
> seapp_context_lookup: seinfo=default, level=s0:c512,c768,
> pkgname=org.subsurfacedivelog.mobile
> 07-17 11:08:48.875  3468  3579 D ISSUE_DEBUG: 
> InputChannelName : 8ae118c
> Starting org.subsurfacedivelog.mobile
> 07-17 11:08:48.875 13025 13025 D InjectionManager: 
> fillFeatureStoreMap
> org.subsurfacedivelog.mobile
> 07-17 11:08:48.875 13025 13025 I InjectionManager: 
> Constructor
> org.subsurfacedivelog.mobile, Feature store :{}
> 07-17 11:08:48.925  3468  3579 V WindowStateAnimator: 
> Finishing drawing
> window Window{8ae118c u0 d0 Starting 
> org.subsurfacedivelog.mobile}:
> mDrawState=DRAW_PENDING
> 07-17 11:08:48.925  3468  3579 V WindowStateAnimator: 
> Finishing drawing
> window Window{8ae118c u0 d0 Starting 
> org.subsurfacedivelog.mobile}:
> mDrawState=COMMIT_DRAW_PENDING
> 07-17 11:08:49.065 13025 13025 W linker  :
> /data/app/org.subsurfacedivelog.mobile-1/lib/arm/libQt5Concurrent.so: 
>
> unused DT entry: type 0x1d arg 0xc8e
> 07-17 11:08:49.065 13025 13025 W linker  :
> /data/app/org.subsurfacedivelog.mobile-1/lib/arm/libQt5Concurrent.so: 
>
> unsupported flags DT_FLAGS_1=0x81
> 07-17 11:08:49.065 13025 13025 W linker  :
> /data/app/org.subsurfacedivelog.mobile-1/lib/arm/libQt5Gui.so: 
> unused DT
> entry: type 0x1d arg 0x5066f
> 07-17 11:08:49.065 13025 13025 W linker  :
> /data/app/org.subsurfacedivelog.mobile-1/lib/arm/libQt5Gui.so: 
>
> unsupported flags DT_FLAGS_1=0x81
> 07-17 11:08:49.075 13025 13025 W linker  :
> /data/app/org.subsurfacedivelog.mobile-1/lib/arm/libQt5Widgets.so: 
>
> unused DT entry: type 0x1d arg 0x6b435
> 07-17 11:08:49.075 13025 13025 W linker  :
> /data/app/org.subsurfacedivelog.mobile-1/lib/arm/libQt5Widgets.so: 
>
> unsupported flags DT_FLAGS_1=0x81
> 07-17 11:08:49.085 13025 13025 W linker  :
> /data/app/org.subsurfacedivelog.mobile-1/lib/arm/libQt5Svg.so: 
> unused DT
> entry: type 0x1d arg 0x8f3b
> 07-17 11:08:49.085 13025 13025 W linker  :
> /data/app/org.subsurfacedivelog.mobile-1/lib/arm/libQt5Svg.so: 
>
> unsupported flags DT_FLAGS_1=0x81
> 07-17 11:08:49.095 13025 13025 W linker  :
> /data/app/org.subsurfacedivelog.mobile-1/lib/arm/libQt5Positioning.so: 
>
> unused DT entry: type 0x1d arg 0x5afb
> 07-17 11:08:49.095 13025 13025 W linker  :
> /data/app/org.subsurfacedivelog.mobile-1/lib/arm/libQt5Positioning.so: 
>
> unsupported flags DT_FLAGS_1=0x81
> 07-17 11:08:49.105 13025 13025 W linker  :
> /data/app/org.subsurfacedivelog.mobile-1/lib/arm/libQt5Network.so: 
>
> unused DT entry: type 0x1d arg 0x119fc
> 07-17 11:08:49.105 13025 13025 W linker  :
> /data/app/org.subsurfacedivelog.mobile-1/lib/arm/libQt5Network.so: 
>
> unsupported flags DT_FLAGS_1=0x81
> 07-17 11:08:49.105 13025 13025 W linker  :
> /data/app/org.subsurfacedivelog.mobile-1/lib/arm/libQt5Qml.so: 
> unused DT
> entry: type 0x1d arg 0x33ce0
> 07-17 11:08:49.105 13025 13025 W linker  :
> /data/app/org.subsurfacedivelog.mobile-1/lib/arm/libQt5Qml.so: 
>
> unsupported flags DT_FLAGS_1=0x81
> 07-17 11:08:49.115 13025 13025 W linker  :
> /data/app/org.subsurfacedivelog.mobile-1/lib/arm/libQt5Quick.so: 
> unused
> DT entry: type 0x1d arg 0x3d948
> 07-17 11:08:49.115 13025 13025 W linker  :
> /data/app/org.subsurfacedivelog.mobile-1/lib/arm/libQt5Quick.so: 
>
> unsupported flags DT_FLAGS_1=0x81
> 07-17 11:08:49.125 13025 13025 W linker  :
> /data/app/org.subsurfacedivelog.mobile-1/lib/arm/libQt5AndroidExtras.so: 
>
> unused DT entry: type 0x1d arg 0x5920
> 07-17 11:08:49.125 13025 13025 W linker  :
> /data/app/org.subsurfacedivelog.mobile-1/lib/arm/libQt5AndroidExtras.so: 
>
> unsupported flags DT_FLAGS_1=0x81
> 07-17 11:08:49.135 13025 13025 W linker  :
> /data/app/org.subsurfacedivelog.mobile-1/lib/arm/libQt5Bluetooth.so: 
>
> unused DT entry: type 0x1d arg 0x6e39
> 07-17 11:08:49.135 13025 13025 W linker  :
> /data/app/org.subsurfacedivelog.mobile-1/lib/arm/libQt5Bluetooth.so: 
>
> unsupported flags DT_FLAGS_1=0x81
> 07-17 11:08:49.135 13025 13025 W linker  :
> /data/app/org.subsurfacedivelog.mobile-1/lib/arm/libQt5QuickParticles.so: 
> unused
> DT entry: type 0x1d arg 0x365b
> 07-17 11:08:49.135 13025 13025 W linker  :
> /data/app/org.subsurfacedivelog.mobile-1/lib/arm/libQt5QuickParticles.so: 
> unsupported
> flags DT_FLAGS_1=0x81
> 07-17 11:08:49.145 13025 13025 W linker  :
> /data/data/org.subsurfacedivelog.mobile/qt-reserved-files/plugins/platforms/android/libqtforandroid.so: 
>
> unused DT entry: type 0x1d arg 0x9315
> 07-17 11:08:49.145 13025 13025 W linker  :
> /data/data/org.subsurfacedivelog.mobile/qt-reserved-files/plugins/platforms/android/libqtforandroid.so: 
>
> unsupported flags DT_FLAGS_1=0x81
> 07-17 11:08:49.145 13025 13025 W linker  :
> /data/data/org.subsurfacedivelog.mobile/qt-reserved-files/plugins/platforms/android/libqtforandroid.so: 
>
> is missing DT_SONAME will use basename as a replacement:
> "libqtforandroid.so"
> 07-17 11:08:49.155 13025 13025 W linker  :
> /data/data/org.subsurfacedivelog.mobile/qt-reserved-files/plugins/bearer/libqandroidbearer.so: 
>
> unused DT entry: type 0x1d arg 0x1746
> 07-17 11:08:49.155 13025 13025 W linker  :
> /data/data/org.subsurfacedivelog.mobile/qt-reserved-files/plugins/bearer/libqandroidbearer.so: 
>
> unsupported flags DT_FLAGS_1=0x81
> 07-17 11:08:49.155 13025 13025 W linker  :
> /data/data/org.subsurfacedivelog.mobile/qt-reserved-files/plugins/bearer/libqandroidbearer.so: 
>
> is missing DT_SONAME will use basename as a replacement:
> "libqandroidbearer.so"
> 07-17 11:08:49.155 13025 13025 W linker  :
> /data/data/org.subsurfacedivelog.mobile/qt-reserved-files/plugins/position/libqtposition_android.so: 
>
> unused DT entry: type 0x1d arg 0x132d
> 07-17 11:08:49.155 13025 13025 W linker  :
> /data/data/org.subsurfacedivelog.mobile/qt-reserved-files/plugins/position/libqtposition_android.so: 
>
> unsupported flags DT_FLAGS_1=0x81
> 07-17 11:08:49.155 13025 13025 W linker  :
> /data/data/org.subsurfacedivelog.mobile/qt-reserved-files/plugins/position/libqtposition_android.so: 
>
> is missing DT_SONAME will use basename as a replacement:
> "libqtposition_android.so"
> 07-17 11:08:49.205  3468  4436 D ISSUE_DEBUG: 
> InputChannelName : 8e404c1
> org.subsurfacedivelog.mobile/org.qtproject.qt5.android.bindings.QtActivity 
>
> 07-17 11:08:49.345 13025 13077 D libGLESv1: DTS_GLAPI : 
> DTS is not
> allowed for Package : org.subsurfacedivelog.mobile
> 07-17 11:08:49.385  3468  4451 V WindowStateAnimator: 
> Finishing drawing
> window Window{8e404c1 u0 d0
> org.subsurfacedivelog.mobile/org.qtproject.qt5.android.bindings.QtActivity}: 
>
> mDrawState=DRAW_PENDING
> 07-17 11:08:49.405  3468  3579 I ActivityManager: Displayed
> org.subsurfacedivelog.mobile/org.qtproject.qt5.android.bindings.QtActivity: 
>
> +587ms
> 07-17 11:08:49.405  3468  3579 I Timeline: Timeline:
> Activity_windows_visible id: ActivityRecord{523995c u0
> org.subsurfacedivelog.mobile/org.qtproject.qt5.android.bindings.QtActivity 
>
> t83} time:9387428
> 07-17 11:08:49.415 13025 13091 W Subsurface: (null):0 
> ((null)):
> QFont::setPointSizeF: Point size <= 0 (-1.000000), must be 
> greater than 0
> 07-17 11:08:49.435 13025 13105 W linker  :
> /data/data/org.subsurfacedivelog.mobile/qt-reserved-files/qml/QtQuick.2/libqtquick2plugin.so: 
>
> unused DT entry: type 0x1d arg 0x4bd
> 07-17 11:08:49.435 13025 13105 W linker  :
> /data/data/org.subsurfacedivelog.mobile/qt-reserved-files/qml/QtQuick.2/libqtquick2plugin.so: 
>
> unsupported flags DT_FLAGS_1=0x81
> 07-17 11:08:49.435 13025 13105 W linker  :
> /data/data/org.subsurfacedivelog.mobile/qt-reserved-files/qml/QtQuick.2/libqtquick2plugin.so: 
>
> is missing DT_SONAME will use basename as a replacement:
> "libqtquick2plugin.so"
> 07-17 11:08:49.445 13025 13105 W linker  :
> /data/data/org.subsurfacedivelog.mobile/qt-reserved-files/qml/QtQuick/Controls/libqtquickcontrolsplugin.so: 
>
> unused DT entry: type 0x1d arg 0x41f5
> 07-17 11:08:49.445 13025 13105 W linker  :
> /data/data/org.subsurfacedivelog.mobile/qt-reserved-files/qml/QtQuick/Controls/libqtquickcontrolsplugin.so: 
>
> unsupported flags DT_FLAGS_1=0x81
> 07-17 11:08:49.445 13025 13105 W linker  :
> /data/data/org.subsurfacedivelog.mobile/qt-reserved-files/qml/QtQuick/Controls/libqtquickcontrolsplugin.so: 
>
> is missing DT_SONAME will use basename as a replacement:
> "libqtquickcontrolsplugin.so"
> 07-17 11:08:49.455 13025 13105 W linker  :
> /data/data/org.subsurfacedivelog.mobile/qt-reserved-files/qml/QtQuick/Window.2/libwindowplugin.so: 
>
> unused DT entry: type 0x1d arg 0x493
> 07-17 11:08:49.455 13025 13105 W linker  :
> /data/data/org.subsurfacedivelog.mobile/qt-reserved-files/qml/QtQuick/Window.2/libwindowplugin.so: 
>
> unsupported flags DT_FLAGS_1=0x81
> 07-17 11:08:49.455 13025 13105 W linker  :
> /data/data/org.subsurfacedivelog.mobile/qt-reserved-files/qml/QtQuick/Window.2/libwindowplugin.so: 
>
> is missing DT_SONAME will use basename as a replacement:
> "libwindowplugin.so"
> 07-17 11:08:49.455 13025 13105 W linker  :
> /data/data/org.subsurfacedivelog.mobile/qt-reserved-files/qml/QtQuick/Dialogs/libdialogplugin.so: 
>
> unused DT entry: type 0x1d arg 0x249b
> 07-17 11:08:49.455 13025 13105 W linker  :
> /data/data/org.subsurfacedivelog.mobile/qt-reserved-files/qml/QtQuick/Dialogs/libdialogplugin.so: 
>
> unsupported flags DT_FLAGS_1=0x81
> 07-17 11:08:49.455 13025 13105 W linker  :
> /data/data/org.subsurfacedivelog.mobile/qt-reserved-files/qml/QtQuick/Dialogs/libdialogplugin.so: 
>
> is missing DT_SONAME will use basename as a replacement:
> "libdialogplugin.so"
> 07-17 11:08:49.465 13025 13105 W linker  :
> /data/data/org.subsurfacedivelog.mobile/qt-reserved-files/qml/QtQuick/Layouts/libqquicklayoutsplugin.so: 
>
> unused DT entry: type 0x1d arg 0x1b00
> 07-17 11:08:49.465 13025 13105 W linker  :
> /data/data/org.subsurfacedivelog.mobile/qt-reserved-files/qml/QtQuick/Layouts/libqquicklayoutsplugin.so: 
>
> unsupported flags DT_FLAGS_1=0x81
> 07-17 11:08:49.465 13025 13105 W linker  :
> /data/data/org.subsurfacedivelog.mobile/qt-reserved-files/qml/QtQuick/Layouts/libqquicklayoutsplugin.so: 
>
> is missing DT_SONAME will use basename as a replacement:
> "libqquicklayoutsplugin.so"
> 07-17 11:08:49.475 13025 13091 W Subsurface: (null):0 
> ((null)):
> QQmlApplicationEngine failed to load component
> 07-17 11:08:49.475 13025 13091 W Subsurface: (null):0 
> ((null)):
> qrc:///qml/main.qml:9 module "org.kde.kirigami" is not 
> installed
> 07-17 11:08:49.475 13025 13091 W Subsurface:
> 07-17 11:08:49.855  4145  4145 I ApplicationPackageManager:
> load=org.subsurfacedivelog.mobile, bg=192-192, dr=192-192
>
Dear Willem,

I think kirigami must be installed seperately and will no 
longer copied/build in to subsurface. I'll have a look this 
week. Maybe Marco Martin has some clue on this, I think he 
prepares a patch to use kirigami in a different way.

Axel.

-- 
Axel Richter



More information about the subsurface mailing list