Skip to content

Instantly share code, notes, and snippets.

@signedav
Created February 13, 2019 15:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save signedav/d07a8ac6f28dc6393cfc89b7ac506e1c to your computer and use it in GitHub Desktop.
Save signedav/d07a8ac6f28dc6393cfc89b7ac506e1c to your computer and use it in GitHub Desktop.
qfield android stuff

Kuhns Vorgaben

  • x86 (anstatt arm)

  • im BIOS Virtualisierig aktiviere (falls /dev/kvm nöd existiert)

  • neuers Gradle bruche (siehe Pull opengisch/QField#252)

  • Zum direkt im QtCreator z'kompiliere

    Build chain installiere (android sdk / android ndk /qt 5.9.4)

    OSGeo4A libs direkt us em docker kopiere:

    docker run opengisch/qfield-sdk:20190123 bash
    docker ps -a # CONTAINER ID vom oberste Container
    docker cp [CONTAINER ID]:/home/osgeo4a /home/david/dev/osgeo4a

PS. Qt hab ich auch so kopiert:

docker cp 425aeba35544:/opt/Qt/5.11.1 /home/david/Qt/5.11.1

Installation

Man braucht

  • Qt (habe ich über den Webinstaller in meinem home dir installiert) habe dort einen Folder namens Qt. Im Subfolder Tools/QtCreator/bin liegt dann auch
  • qtcreator
  • Android SDK (das wo man halt findet)
  • Android NDK (wobei hier das crystax verwendet werden kann)
  • JDK (Hatte ich zuerst Oracle Java 10 aber nicht sicher ob das geht. Später mit 1.8.0 openjdk gehts)

Und QT Creator mit QT 5.9.4 und von dort aus starten: Qt/Tools/QtCreator/bin/qtcreator...

Einstellung in QtCreator:

Tools->Options->Build & Run schauen ob Kits für Android vorhanden:

Android for armeabi-v7a... etc.

Tools->Options->Devices:

JDK location: /usr/lib/jvm/java-1.8.0-openjdk

Android SDK location: /home/david/Android/Sdk

Android NDK location: /home/david/Android/crystax-ndk-10.3.2

Zusätzliche Info:

(Java path findet man so raus:)

[david@localhost ~]$  which javac
/usr/bin/javac
cd /usr/bin/javac

und

[david@localhost bin]$ ls -l javac
lrwxrwxrwx. 1 root root 23 Mar 26 17:48 javac -> /etc/alternatives/javac
[david@localhost bin]$ ls -l  /etc/alternatives/javac
lrwxrwxrwx. 1 root root 26 Mar 26 17:48 /etc/alternatives/javac -> /usr/java/jdk-10/bin/javac
[david@localhost bin]$ ls -l /usr/java/jdk-10/bin/javac
-rwxr-xr-x. 1 root root 9906 Mar  8 03:17 /usr/java/jdk-10/bin/javac

Problem beim erstellen eines Devices

Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
	at com.android.repository.api.SchemaModule$SchemaModuleVersion.<init>(SchemaModule.java:156)
	at com.android.repository.api.SchemaModule.<init>(SchemaModule.java:75)
	at com.android.sdklib.repository.AndroidSdkHandler.<clinit>(AndroidSdkHandler.java:81)
	at com.android.sdklib.tool.AvdManagerCli.run(AvdManagerCli.java:213)
	at com.android.sdklib.tool.AvdManagerCli.main(AvdManagerCli.java:200)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
	... 5 more

Lösung: Ich hatte die Java Version 10 eingestellt: java -version Dann habe ich aber umgeschaltet auf 1.8... von openJDK mit dem Command: sudo update-alternatives --config java

Problem, dass es QGIS Klassen nicht gefunden hat

In file included from ../../QFieldWork_camfix01/src/androidplatformutilities.h:22:0,
                 from ../../QFieldWork_camfix01/src/androidplatformutilities.cpp:19:
../../QFieldWork_camfix01/src/platformutilities.h:23:22: fatal error: qgsfield.h: No such file or directory
 #include <qgsfield.h>

Lösung: im config.pri muss der Pfad zum osgeo4a richtig sein... entweder /home/osgeo4a oder /home/david/dev/osgeo4a oder whatever.

Problem sdk

Failed to install the following Android SDK packages as some licences have not been accepted.
     build-tools;28.0.2 Android SDK Build-Tools 28.0.2

check mal /home/david/Android/Sdk und sehe du hast kein 28...

I start the studio:

/home/david/Android/android-studio/bin/studio.sh

Dort auf SDK Manager

Testen auf Gerät

Builden und dann:

[david@localhost QFieldWork_camfix01]$ adb install ../build-QField-Android_for_armeabi_v7a_GCC_4_9_Qt_5_9_4_for_Android_armv7-Debug/android-build/build/outputs/apk/android-build-debug.apk

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment