"module "QtQuick" is not installed"(安卓移植)
"module “QtQuick” is not installed" (Android porting)
我正试图用qt5.4将我的应用程序移植到android,但我遇到了以下错误:
W/Qt(30916):qrc:/qml/FrontEnd.qml:1((null)):qrc:/qml/FrontEnd.qml:1:1:未安装模块"QtQuick"
这是我的.pro
TEMPLATE = app
TARGET = sandbox-build-android
QT+= qml quick widgets printsupport xml svg
INCLUDEPATH += [...]# my include path
# Input
HEADERS += [...] # my include
SOURCES += [...] # my source
RESOURCES += ../sandbox/resources.qrc
LIBS += -L$$PWD/../../edalab/else-datamodel-classes/build-buildAndroid-Android_for_armeabi_v7a_GCC_4_9_Qt_5_4_0-Debug/ -lbuildAndroid
INCLUDEPATH += [...]
DEPENDPATH += [...]
contains(ANDROID_TARGET_ARCH,armeabi-v7a) {
ANDROID_EXTRA_LIBS = [..]
}
# Default rules for deployment.
include(deployment.pri)
这是我的部署。pri:
android-no-sdk {
target.path = /data/user/qt
export(target.path)
INSTALLS += target
} else:android {
x86 {
target.path = /libs/x86
} else: armeabi-v7a {
target.path = /libs/armeabi-v7a
} else {
target.path = /libs/armeabi
}
export(target.path)
INSTALLS += target
} else:unix {
isEmpty(target.path) {
qnx {
target.path = /tmp/$${TARGET}/bin
} else {
target.path = /opt/$${TARGET}/bin
}
export(target.path)
}
INSTALLS += target
}
export(INSTALLS)
在我的FrontEnd.qml中,我有这个导入:
import QtQuick 2.4
import QtQuick.Controls 1.3
我看不出与在Android上正常工作的示例项目.pr有任何实质性的区别。
更新
我看到了另一个例子"日历",我注意到我缺少这个标志"OTHER_FILES",所以我将QML文件的所有路径都添加到了它中,但问题仍然存在。
我还从我的智能手机中检索到了apk,并提取了内容。我注意到我的apk没有包括一些库,这些库存在于有效的apk示例中:
libqml_Qt_labs_folderlistmodel_libqmlfoldlistmodelplugin.solibqml_Qt_labs_settings_libqmlseettingsplugin.solibqml_QtQml_Models.2_libmodelsplugin.solibqml_QtQml_StateMachine_libqtqmlstatemachine.solibqml_QtQuick.2_libqtquick2plugin.solibqml_QtQuick_Controls_libqtquickcontrolsplugin.solibqml_QtQuick_Controls_Styles_Android_libqtquickcontrolsandroidstyleplugin.solibqml_QtQuick_Dialogs_libdialogplugin.solibqml_QtQuick_Dialogs_Private_libdialogsprivateplugin.solibqml_QtQuick_Layout_libqquicklayoutsplugin.solibqml_QtQuick_Window2_libwindowplugin.so
我的项目目录结构
.
├── Project1
│ ├── file.pro
│ ├── images
│ │ ├── ...
│ ├── include
│ │ ├── sub1
│ │ │ ├── file1.hh
│ │ │ └── sub1.1
│ │ │ └── file2.hh
│ │ └── sub2
│ │ └── file3.hh
│ ├── qml
│ │ ├── file1.qml
│ │ └── sub1
│ │ ├── file2.qml
│ │ └── sub1.1
│ │ └── file3.qml
│ ├── README.txt
│ ├── resources.qrc
│ ├── src
│ │ ├── sub1
│ │ │ ├── file1.cc
│ │ │ └── sub1.1
│ │ │ └── file2.cc
│ │ ├── sub2
│ │ │ └── file3.cc
│ │ └── Main.cc
│ └── webUtils
│ └── file.html
这里是一个示例.pro
文件。我已经放弃了太具体的东西。目录结构如下:
.
├── Project
│ ├── app.pro
| ├── android
| │ ├── res
| | │ ├── drawable-hdpi
| | | └── ...
| | ├── AndroidManifest
│ ├── content
│ │ ├── file1.qml
│ │ └── ...
| ├── icons
│ ├── images
│ │ ├── ...
| ├── include
│ │ ├── sub1
│ │ │ ├── file1.hh
│ │ │ └── sub1.1
│ │ │ └── file2.hh
│ │ └── sub2
│ │ └── file3.hh
| ├── ios
| | └── Info.plist
| ├── libs
| | ├── droid
| | ├── ios
| | ├── macx
| | ├── nix
| | ├── win
| | └── winphone
│ ├── Qml.qrc
| ├── Resources.qrc
| ├── SubProject
| ├── translations
| | ├── app_en.qm
| | ├── ...
│ ├── [.cpp]
| ├── [.h]
| ├── app_en.ts
与您不同的是,我没有src
目录,QML
文件被移动到content
目录。我还有一个资源文件,用于相同的QML
文件,即Qml.qrc
。翻译文件(也称为.ts
文件)包含在带有源的主目录中。编译后的翻译(也称为.qm
)文件位于子目录translations
中。
目录android
和ios
包含特定于平台的文件,特别是res
目录可用于为android平台的应用程序提供图标和壁纸。相同的android
目录用作APK包源(请参阅下面的.pro
)。ios
目录包含属性列表。
lib
目录包含每个平台的一个子目录,其中包含为该环境重新编译的库。
以下是相应的项目文件:
TEMPLATE = app
macx:CONFIG += app_bundle
# QT IMPORT
QT += gui qml quick [...]
#include subproject
include(SubProject/subproject.pri)
# Default rules for deployment
include(deployment.pri)
# Compilation flags [specific to the different OSs]
include(flags.pri)
TARGET = "appName" # just needed for me since I change target between "App" and "AppPRO"
INCLUDEPATH += [...]
$$PWD/include/sub1
$$PWD/include/sub2
!isEmpty(QMAKE_LFLAGS_RPATH):LIBS +=
$$QMAKE_LFLAGS_RPATH$${TOP_BUILD_DIR}/lib #(UNIX ONLY): libs linked preferibly at runtime
# DESKTOP PLATFORMS
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/lib/win/ -lLIBNAME1
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/lib/win/ -lLIBNAMEd
unix:!macx:!ios:!android: LIBS += -L$$PWD/lib/nix -lLIBNAME
macx: LIBS += -L$$PWD/lib/macx/ -lLIBNAME
# MOBILE PLATFORMS
ios: LIBS += -L$$PWD/lib/ios -lLIBNAME
android: LIBS += -L$$PWD/lib/droid -lLIBNAME
winphone: LIBS += -L$$PWD/lib/winphone/ -lLIBNAME
# ADDITIONAL ANDROID SETTING
ANDROID_EXTRA_LIBS = $$PWD/lib/droid/libLIBNAME.so
# SOURCE FILES (.CPP)
SOURCES += [.cpp]
# HEADER FILES (.H)
HEADERS += [.h]
# objective-c++ sources for ios platform
ios {
QT += gui_private
#QT -= printsupport
HEADERS += [.h]
OBJECTIVE_SOURCES += [.mm]
}
# QML sources are added here!
RESOURCES += Resources.qrc
Qml.qrc
# ANDROID ADDITION
android {
ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android # contains the dir structure of the APK, actually it contains just res
OTHER_FILES += androidPro/AndroidManifest.xml # <--- manifest for the Pro version
}
#### ICONS SECTION ####
win32:RC_ICONS += $$ICON_PATH/multiIcon.ico # ICONS for WIN
mac:!ios:ICON = $$ICON_PATH/icons.icns # ICONS for MAC
#IOS BUNDLE # ICONS for IOS
ios {
BUNDLE_DATA.files = [...]
QMAKE_BUNDLE_DATA += BUNDLE_DATA
QMAKE_INFO_PLIST = $$PWD/ios/Info.plist
}
# list QML sources for linguist purposes
lupdate_only{
SOURCES = *.qml
*.js
content/*.qml
content/*.js
}
# and the .ts file for translation!
TRANSLATIONS = app_en.ts
app_fr.ts
app_de.ts
app_sp.ts
app_en.ts
这是manifest
。Qt Creator允许通过UI界面进行编辑或文本编辑。要添加清单(Qt Creator 3.3),如注释中所述,只需转到Projects > Build > Build Android APK > Create Templates
即可。
<?xml version="1.0"?>
<manifest android:versionCode="21" android:installLocation="auto" package="JAVA_PACKAGE" android:versionName="1.0.12" xmlns:android="http://schemas.android.com/apk/res/android">
<application android:hardwareAccelerated="true" android:label="@string/app_name" android:name="org.qtproject.qt5.android.bindings.QtApplication" android:icon="@drawable/icon">
<activity android:screenOrientation="unspecified" android:label="@string/app_name" android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|locale|fontScale|keyboard|keyboardHidden|navigation" android:name="org.qtproject.qt5.android.bindings.QtActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<meta-data android:value="app" android:name="android.app.lib_name"/>
<meta-data android:resource="@array/qt_sources" android:name="android.app.qt_sources_resource_id"/>
<meta-data android:value="default" android:name="android.app.repository"/>
<meta-data android:resource="@array/qt_libs" android:name="android.app.qt_libs_resource_id"/>
<meta-data android:resource="@array/bundled_libs" android:name="android.app.bundled_libs_resource_id"/>
<!-- Deploy Qt libs as part of package -->
<meta-data android:value="-- %%BUNDLE_LOCAL_QT_LIBS%% --" android:name="android.app.bundle_local_qt_libs"/>
<meta-data android:resource="@array/bundled_in_lib" android:name="android.app.bundled_in_lib_resource_id"/>
<meta-data android:resource="@array/bundled_in_assets" android:name="android.app.bundled_in_assets_resource_id"/>
<!-- Run with local libs -->
<meta-data android:value="-- %%USE_LOCAL_QT_LIBS%% --" android:name="android.app.use_local_qt_libs"/>
<meta-data android:value="/data/local/tmp/qt/" android:name="android.app.libs_prefix"/>
<meta-data android:value="-- %%INSERT_LOCAL_LIBS%% --" android:name="android.app.load_local_libs"/>
<meta-data android:value="-- %%INSERT_LOCAL_JARS%% --" android:name="android.app.load_local_jars"/>
<meta-data android:value="-- %%INSERT_INIT_CLASSES%% --" android:name="android.app.static_init_classes"/>
<!-- Messages maps -->
<meta-data android:value="@string/ministro_not_found_msg" android:name="android.app.ministro_not_found_msg"/>
<meta-data android:value="@string/ministro_needed_msg" android:name="android.app.ministro_needed_msg"/>
<meta-data android:value="@string/fatal_error_msg" android:name="android.app.fatal_error_msg"/>
<!-- Messages maps -->
<!-- Splash screen -->
<meta-data android:resource="@drawable/splash" android:name="android.app.splash_screen_drawable"/>
<!-- Splash screen -->
</activity>
</application>
<uses-sdk android:targetSdkVersion="19" android:minSdkVersion="9"/>
<supports-screens android:normalScreens="true" android:smallScreens="true" android:xlargeScreens="true" android:largeScreens="true" android:anyDensity="true"/>
<!-- %%INSERT_PERMISSIONS -->
<!-- %%INSERT_FEATURES -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
</manifest>
- 使用自定义 nodejs 插件时的"The specified module could not be found"
- Boost.Python 和导入 dll,"The specified module could not be found"
- 如何在 module.reload() 之后保持 py::objects 存活
- 如何在自定义操作DLL(MSI / Wix)中获取"INSTALLED"属性?
- Clang and C++ Module TS
- 在Visual Studio中将python嵌入C ++时"No module named site"
- emscripten 断言=1 生成链接器错误"Referencing global in another module!"
- Nginx - nchan module in Cygwin
- C# 到非托管 C++ DLL 访问冲突/"frame not in module"
- 用 rice/ruby 包裹的纯虚拟 C++ 类在运行时引发 TypeError ( "is not a class (Module)" )
- win32 API 函数 GetModuleFileName 或 GetModuleHandle 中的"Module"是什么?
- '' 的类型初始值设定项<Module>引发异常
- 查找适用于"The specified module could not be found"的 DLL
- 如何摆脱 OSX10.10 SDK 中的 module.map 警告
- 使用 Python.h 时"AttributeError: 'module' object has no attribute 'argv'"
- Visual Studio 2012 no C-Header installed?
- SWIG:未使用%module或-module指定模块名称
- 10 手机:"The specified module could not be found. (Exception from HRESULT: 0x8007007E)" :空
- nginx RTMP 编译 for Windows 错误 U1052 & rtmp-module-master/config 未找到
- "module "QtQuick" is not installed"(安卓移植)