我将 ubuntu 14.04 升级到 14.10 以使用最新的 ubuntu-sdk。但是当我创建一个简单的 UI 项目时,“import Ubuntu.Components.1.1”下只有一条红色波浪线。所以我将鼠标移到红色波浪线上。弹出一个窗口,内容如下:
Errors while reading typeinfo files:
Failed to parse 'usr/lib/x86_64-linux-gnu/qt5/Ubuntu/Component/plugins.qmltypes'.
Error:/usr/lib/x86_64-linux-gnu/qt3/qml/Ubuntu/Components/plugins.qmltypes:632:19:Expected string literal to contain 'Package/Name major.minor' or 'Name major.minor'.
/usr/lib/x86_64-linux-gnu/qt3/qml/Ubuntu/Components/plugins.qmltypes:633:36:Expected array literal with only number literal members.
这行是什么意思?我该如何解决这些问题?
答案1
我今天遇到了同样的问题,但是我刚刚发现了解决方案(以及具体错误是什么)。
问题是所需的 qml 插件文件不在当前指定的包含目录中。
如果你创建一个新的应用程序并选择,那么在应用程序项目根目录中将App with Simple UI
会有一个名为的文件。[projectName].qmlproject
在我的网站上,包含内容位于页面底部附近,如下所示:
/* List of plugin directories passed to QML runtime */
importPaths: [ "." ,"/usr/bin","/usr/lib/x86_64-linux-gnu/qt5/qml"]
我运行find / -name *qml*
后发现一个看起来合适的目录,其中有许多项目很可能是qml
插件,所以我复制了该目录,转到[projectName].qmlproject
上面发布的语句并添加了该目录。最终的 importPaths 语句如下所示:
/* List of plugin directories passed to QML runtime */
importPaths: [ "." ,"/usr/bin","/usr/lib/x86_64-linux-gnu/qt5/qml","/var/lib/schroot/chroots/click-ubuntu-sdk-14.10-armhf/usr/lib/arm-linux-gnueabihf/qt5/qml/Ubuntu/Components/" ]
完成后,我可以在该项目的设计器中打开 qml 文件,也可以在另一个没有文件的设计器中打开 qml 文件qmlproject
,所以我认为该目录的内存被保留了。
然而,问题是它在错误的目录中寻找 qml 插件文件,因此找到这些文件并找到包含它们的方法(上面指定的方法为我解决了这个问题)。
答案2
我遇到了同样的问题,为了解决这个问题,我编辑了 plugins.qmltypes 文件。按照错误消息中的路径,您需要超级用户权限。错误消息说无法解析某些行。查看文件,这些行包含在某种 JSON 对象中,在我的情况下,位于文件末尾。我删除了整个对象,它就起作用了。
Component {
prototype: "QObject"
name: "UbuntuColors"
exports: ["UbuntuColors -1.-1"]
exportMetaObjectRevisions: [-1]
isComposite: true
isCreatable: false
isSingleton: true
Property { name: "orange"; type: "QColor"; isReadonly: true }
Property { name: "lightAubergine"; type: "QColor"; isReadonly: true }
Property { name: "midAubergine"; type: "QColor"; isReadonly: true }
Property { name: "darkAubergine"; type: "QColor"; isReadonly: true }
Property { name: "warmGrey"; type: "QColor"; isReadonly: true }
Property { name: "coolGrey"; type: "QColor"; isReadonly: true }
Property { name: "orangeGradient"; type: "QQuickGradient"; isPointer: true }
Property { name: "greyGradient"; type: "QQuickGradient"; isPointer: true }
Property { name: "lightGrey"; type: "QColor"; isReadonly: true }
Property { name: "darkGrey"; type: "QColor"; isReadonly: true }
Property { name: "red"; type: "QColor"; isReadonly: true }
Property { name: "green"; type: "QColor"; isReadonly: true }
Property { name: "blue"; type: "QColor"; isReadonly: true }
Property { name: "purple"; type: "QColor"; isReadonly: true }
}
答案3
我的解决方案是更改文件plugins.qmltypes
:
此错误是由于在仅定义了一个的块上
exportMetaObjectRevisions
设置而导致的。删除逗号和第二个可以修复此问题。[0,0]
Component
export
0
此更改需要应用于以下文件的第 1058、1067 和 1085 行:
/usr/lib/x86_64-linux-gnu/qt5/qml/Ubuntu/Components/plugins.qmltypes
一旦我做出了这些改变,我就能够使用 qmake 进入新的 QML 应用程序的设计页面,而不会遇到阻止弹出窗口的问题。
我正在运行具有 amd64 架构的全新安装的 Ubuntu 15.10;其他架构可能需要用
x86_64-linux-gnu
更适合系统的内容替换文件路径的一部分。
更多信息#2:
https://bugs.launchpad.net/ubuntu/+source/ubuntu-ui-toolkit/+bug/1511728