Qt/Android/CMake:未考虑自定义 AndroidManifest.xml

问题描述 投票:0回答:2

我正在使用 Qt for Android 构建一个 Qt 项目。

我需要在

AndroidManifest.xml
文件中添加 uses-feature 标签。为此,我使用 Qt Creator 制作了一个模板,然后将 android/AndroidManifest.xml 文件添加到应用程序源中。

无论我在 android/AndroidManifest.xml 文件中放入什么内容,它都会被忽略并使用默认/内部文件。

这是我的 CMakeLists.txt 文件:

    set(CMAKE_AUTOMOC ON)
    set(CMAKE_AUTORCC ON)
    set(CMAKE_AUTOUIC ON)
    
    set(CMAKE_CXX_STANDARD 11)
    set(CMAKE_CXX_STANDARD_REQUIRED ON)
    set(CMAKE_INCLUDE_CURRENT_DIR ON)
    
    find_package(QT NAMES Qt5 COMPONENTS Widgets REQUIRED)
    find_package(Qt5 COMPONENTS Widgets REQUIRED)
    
    file(GLOB_RECURSE SOURCES
      ${PROJECT_SOURCE_DIR}/*.cpp
      ${PROJECT_SOURCE_DIR}/*.ui
      ${PROJECT_SOURCE_DIR}/*.h
      ${PROJECT_SOURCE_DIR}/*.qrc
      ${PROJECT_SOURCE_DIR}/android/AndroidManifest.xml
    )
    if(ANDROID)
      set(ANDROID_MIN_SDK_VERSION 21)
      set(ANDROID_PACKAGE_SOURCE_DIR ${PROJECT_SOURCE_DIR}/android/)
    
      add_library(myapp SHARED ${SOURCES})
    else()
      add_executable(evotest ${SOURCES})
    endif()
    
    target_link_libraries(myapp Qt5::Widgets)
    
    install(TARGETS myapp DESTINATION bin)
android qt cmake
2个回答
8
投票

解决方案是这样设置 ANDROID_PACKAGE_SOURCE_DIR :

set(ANDROID_PACKAGE_SOURCE_DIR ${PROJECT_SOURCE_DIR}/android CACHE INTERNAL "")

现在,构建 android 包时会考虑文件

android/AndroidManifest.xml


3
投票

在 Qt 6 中,它是一个属性,并且有一个

QT_
前缀。
所以自定义的AndroidManifest可以通过以下方式设置:

set_target_properties(myapp PROPERTIES
    MACOSX_BUNDLE TRUE
    WIN32_EXECUTABLE TRUE
    ...
    ...
    QT_ANDROID_PACKAGE_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/android
)

set_property(TARGET myapp APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/android)

https://doc.qt.io/qt-6/cmake-target-property-qt-android-package-source-dir.html

© www.soinside.com 2019 - 2024. All rights reserved.