Update dockerfile and devcontainer.json to execute poststart.sh and forward x11

This commit is contained in:
2025-04-14 18:51:30 +02:00
parent 8941d84bc8
commit e2cffa11f4
4 changed files with 116 additions and 5 deletions

View File

@@ -16,15 +16,26 @@ RUN apk update && \
libxrandr \
libxcursor \
libxi \
libx11 \
libx11-dev \
libxcb \
libxcb-dev \
libxkbcommon \
libxkbcommon-dev \
xcb-util-dev \
xcb-util-image-dev \
xcb-util-keysyms-dev \
xcb-util-renderutil-dev \
xcb-util-wm-dev \
xcb-util-cursor-dev \
mesa-dev \
freetype-dev \
fontconfig-dev \
dbus-dev \
libusb
# Set environment variables for Qt and Android SDK
ENV QT_VERSION=6.8.0
ENV QT_INSTALL_PATH=/opt/qt-${QT_VERSION}
ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk
ENV ANDROID_SDK_ROOT=/opt/android-sdk
ENV PATH="${QT_INSTALL_PATH}/bin:${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin:${ANDROID_SDK_ROOT}/platform-tools:${ANDROID_SDK_ROOT}/emulator:${ANDROID_SDK_ROOT}/tools:${ANDROID_SDK_ROOT}/tools/bin:${JAVA_HOME}/bin:$PATH"
# Download and install Qt 6.8.0 from the official Qt website
RUN mkdir -p ${QT_INSTALL_PATH} && \
@@ -56,6 +67,10 @@ RUN mkdir -p ${QT_INSTALL_PATH} && \
make install && \
rm -rf ${QT_INSTALL_PATH}/qt-everywhere-src-${QT_VERSION}
ENV ANDROID_SDK_ROOT=/opt/android-sdk
ENV PATH="${QT_INSTALL_PATH}/bin:${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin:${ANDROID_SDK_ROOT}/platform-tools:${ANDROID_SDK_ROOT}/emulator:${ANDROID_SDK_ROOT}/tools:${ANDROID_SDK_ROOT}/tools/bin:${JAVA_HOME}/bin:$PATH"
# Install Android SDK Command Line Tools
RUN mkdir -p ${ANDROID_SDK_ROOT}/cmdline-tools && \
curl -o sdk-tools-linux.zip https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip && \
@@ -74,6 +89,13 @@ RUN sdkmanager --list
# Set working directory
WORKDIR /workspace
# Set environment variables for Qt and Android SDK
ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk
ENV QT_QPA_PLATFORM=xcb
ENV QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/qt6/plugins/platforms
ENV LD_LIBRARY_PATH=/opt/qt-6.8.0
ENV QT_DEBUG_PLUGINS=1
# Expose ADB debugging port
EXPOSE 5555

View File

@@ -4,6 +4,11 @@
"dockerfile": "Dockerfile",
"context": "."
},
"postStartCommand": "./.devcontainer/poststart.sh",
"runArgs": [
"-e", "DISPLAY=${env:DISPLAY}",
"-v", "/tmp/.X11-unix:/tmp/.X11-unix"
],
"customizations": {
"vscode": {
"settings": {
@@ -14,7 +19,8 @@
"ms-vscode.cpptools",
"ms-vscode.makefile-tools",
"androidtool.android",
"ms-azuretools.vscode-docker"
"ms-azuretools.vscode-docker",
"bbenoist.QML"
]
}
},

2
.devcontainer/poststart.sh Executable file
View File

@@ -0,0 +1,2 @@
#!/bin/bash
echo "Welcome"

View File

@@ -0,0 +1,81 @@
cmake_minimum_required(VERSION 3.16)
project(WeatherRoutes VERSION 0.1 LANGUAGES CXX)
# Define versioning information
set(VERSION_CODE 1) # Change this to your desired version code
set(VERSION_NAME "0.1") # Your version name
# Include this in the Android section
set(ANDROID_PACKAGE_NAME "com.example.weatherroutes")
set(ANDROID_VERSION_CODE ${VERSION_CODE})
set(ANDROID_VERSION_NAME ${VERSION_NAME})
set(CMAKE_ANDROID_MANIFEST "${CMAKE_CURRENT_SOURCE_DIR}/android/AndroidManifest.xml")
set(CMAKE_AUTOMOC ON)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(RESOURCE_FILES resources.qrc)
find_package(Qt6 REQUIRED COMPONENTS Quick)
find_package(Qt6 REQUIRED COMPONENTS Core)
find_package(Qt6 REQUIRED COMPONENTS Location)
find_package(Qt6 REQUIRED COMPONENTS Positioning)
find_package(Qt6 REQUIRED COMPONENTS Network)
qt_add_resources(RESOURCES_RCC "${RESOURCE_FILES}")
qt_add_executable(appWeatherRoutes
main.cpp
${RESOURCES_RCC}
)
qt6_add_qml_module(appWeatherRoutes
URI WeatherRoutes
VERSION 1.0
QML_FILES
Main.qml
SOURCES
QML_FILES
QML_FILES qml/WaypointData.qml
QML_FILES qml/WeatherDetailsView.qml
QML_FILES qml/CustomInputField.qml
QML_FILES qml/MapView.qml
QML_FILES
QML_FILES qml/HomeScreen.qml
SOURCES mvc/data/waypoint.h mvc/data/waypoint.cpp
SOURCES mvc/data/mapdata.cpp mvc/data/mapdata.h
SOURCES mvc/model/mapdatamodel.h mvc/model/mapdatamodel.cpp
SOURCES mvc/data/weatherdetailsdata.h mvc/data/weatherdetailsdata.cpp
SOURCES mvc/enums/weatherstatus.h
SOURCES mvc/data/weatherdata.h mvc/data/weatherdata.cpp
SOURCES mvc/controller/weathercontroller.h mvc/controller/weathercontroller.cpp
SOURCES mvc/controller/networkmanager.h mvc/controller/networkmanager.cpp
SOURCES mvc/controller/stylecontroller.h mvc/controller/stylecontroller.cpp
)
target_include_directories(appWeatherRoutes
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/mvc
)
# Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1.
# If you are developing for iOS or macOS you should consider setting an
# explicit, fixed bundle identifier manually though.
set_target_properties(appWeatherRoutes PROPERTIES
# MACOSX_BUNDLE_GUI_IDENTIFIER com.example.appWeatherRoutes
MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
MACOSX_BUNDLE TRUE
WIN32_EXECUTABLE TRUE
)
target_link_libraries(appWeatherRoutes PRIVATE Qt6::Quick Qt6::Location Qt6::Positioning)
set(CMAKE_AUTORCC ON)
include(GNUInstallDirs)
install(TARGETS appWeatherRoutes
BUNDLE DESTINATION .
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)