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

4ktjp1zp  于 2022-11-29  发布在  Android
关注(0)|答案(2)|浏览(286)

我正在用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)
ou6hu8tu

ou6hu8tu1#

解决方案是按以下方式设置ANDROID_PACKAGE_SOURCE_DIR

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

现在,构建android包时考虑了文件android/AndroidManifest.xml

yacmzcpb

yacmzcpb2#

在Qt6中,它是一个属性,并具有QT_前缀。
因此,可以通过以下方式设置自定义AndroidManifest:
第一个
https://doc.qt.io/qt-6/cmake-target-property-qt-android-package-source-dir.html

相关问题