web-dev-qa-db-ja.com

ubuntu-sdkを使用して問題のあるアプリを作成する

最新の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.

この行はどういう意味ですか?これらの問題を解決するにはどうすればよいですか?

3
Wayne

今日は同じ問題を抱えていましたが、解決策を発見したばかりです(具体的にはエラーの内容)。

問題は、必要な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プラグインファイルの間違ったディレクトリを探しているため、それらとそれらを含める方法を見つけることです(上記で指定した方法で問題が解決しました)。

2
JVE999

同じ問題を抱えていたので、それを修正するために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 }
    }
2
sillo01

私の解決策は、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

1
delijati