最新のubuntu-sdkを使用するために、ubuntu 14.04を14.10にアップグレードしました。しかし、単純な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.
この行はどういう意味ですか?これらの問題を解決するにはどうすればよいですか?
今日は同じ問題を抱えていましたが、解決策を発見したばかりです(具体的にはエラーの内容)。
問題は、必要な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/" ]
その後、そのプロジェクトのデザイナーとqmlproject
ファイルを持たない別のプロジェクトでqmlファイルを開くことができるため、ディレクトリのメモリは保持されていると想定します。
ただし、問題は、qmlプラグインファイルの間違ったディレクトリを探しているため、それらとそれらを含める方法を見つけることです(上記で指定した方法で問題が解決しました)。
同じ問題を抱えていたので、それを修正するために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 }
}
私の解決策は、plugins.qmltypes
ファイルを変更することでした。
このバグは、
exportMetaObjectRevisions
が1つしか定義されていないComponent
ブロックでexport
を[0,0]
に設定することにより発生します。コンマと2番目の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