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.
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
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