大阪市中央区 システムソフトウェア開発会社

営業時間:平日09:15〜18:15
MENU

Qt – Androidアプリ開発 – exportとproperty alias問題

株式会社クローバーフィールドの経営理念
著者:津路高広
公開日:2020/02/29
最終更新日:2020/02/29
カテゴリー:技術情報
タグ:

前回のQt – Androidアプリ開発 – property aliasでは、mainWindowsエイリアスが他のqmlから認識できない問題が起きました。

これは、exportの仕方とproperty aliasの関係から起きたと考えています。
そこで、今までの作業を見直しました。
まず、Rectangleなどの画面要素は、ナビゲーターからライブラリに切り替えて、選択配置する。
外部から引っ張ってくるリソースファイルは、qmlフォルダに入れて、ライブラリのリリースタブで確認して利用する。
そして、mainWindow,bubbleをexportするという意味は、Pageをルートアイテムとして、その配下のアイテムプロパティとして、参照できるようにする、といった意味だと思います。
property alias bubble: bubble
property alias mainWindow: mainWindow
が、Pageのスクリプトに追加されます。
さて、bubbleを右クリックして、Move Component into separate fileという作業は、現在Page1に定義されている、imageとしてのbubbleを外部ファイルに出すといった作業のようです。
その目的は、デザインモードでは付加できない方法でbubbleを動かすことです。

move component into separate file


上記画面では、x,yなどの位置情報も外部に出し、ui.qmlファイルを作らず、Bubble.qmlファイルを作成します。

結果として、Page1FormのRectangleは以下のようになります。

ここでビルドしますと、次のワーニングが出ます。
注意:一部の入力ファイルは非推奨のAPIを使用またはオーバーライドしています。
注意:詳細は、-Xlint:deprecationオプションを指定して再コンパイルしてください。
このワーニングは、Androidに関するもので、少し古いコードができているようです。
他にも以下のワーニングが出ます。
C:\Users\…\AppData\Local\Android\Sdk\ndk-bundle\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin\arm-linux-androideabi-strip: ‘D:\Qt\Qt-projects\build-firstsample-bubble-Android_for_armeabi_v7a_Clang_Qt_5_12_6_for_Android_ARMv7-Debug\android-build\build\intermediates\transforms\mergeJniLibs\debug\0\lib\armeabi-v7a\libqml_QtQuick_Controls.2_Fusion_libqtquickcontrols2fusionstyleplugin.so’: No such file

C:\Users\…\AppData\Local\Android\Sdk\ndk-bundle\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin\arm-linux-androideabi-strip: ‘D:\Qt\Qt-projects\build-firstsample-bubble-Android_for_armeabi_v7a_Clang_Qt_5_12_6_for_Android_ARMv7-Debug\android-build\build\intermediates\transforms\mergeJniLibs\debug\0\lib\armeabi-v7a\libqml_QtQuick_Controls.2_Material_libqtquickcontrols2materialstyleplugin.so’: No such file

C:\Users\…\AppData\Local\Android\Sdk\ndk-bundle\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin\arm-linux-androideabi-strip: ‘D:\Qt\Qt-projects\build-firstsample-bubble-Android_for_armeabi_v7a_Clang_Qt_5_12_6_for_Android_ARMv7-Debug\android-build\build\intermediates\transforms\mergeJniLibs\debug\0\lib\armeabi-v7a\libqml_QtQuick_Controls.2_Universal_libqtquickcontrols2universalstyleplugin.so’: No such file

また、apkを作成したあと、以下のワーニングが出ます。
Warning: QML import could not be resolved in any of the import paths: QtQuick.Controls.impl
Warning: QML import could not be resolved in any of the import paths: QtQuick.Controls.Fusion.impl
Warning: QML import could not be resolved in any of the import paths: QtQuick.Controls.Imagine.impl
Warning: QML import could not be resolved in any of the import paths: QtQuick.Controls.Material.impl
Warning: QML import could not be resolved in any of the import paths: QtQuick.Controls.Universal.impl
これらは、ビルドが成功して、端末で動く限り、無視して問題ありません。

    上に戻る