使用 ubuntu-sdk 创建应用程序时出现问题

使用 ubuntu-sdk 创建应用程序时出现问题

我将 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]Componentexport0

此更改需要应用于以下文件的第 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

相关内容