代码地址:https://github.com/papyros/qml-material、
编译代码需要使用Windows上的Git Bash终端,最好以管理员权限运行,因为使用Windows的PowerShell执行make install时src.pro里的这两条命令执行失败,使用Git Bash则可以成功。
一.编译Windows平台
注:1. 我在执行qmake和make时,都使用的绝对路径,设置环境变量的话效果等同。
2. Windows路径和Git Bash里使用的路径格式不同。
我的QT mingw编译器的qmake路径是:C:\Qt\5.15.2\mingw81_64\bin,GCC/G++所在路径是:C:\Qt\Tools\mingw810_64\bin
$ cd qml-material/src/
$ mkdir build-mingw
$ cd build-mingw/
$ /C/Qt/5.15.2/mingw81_64/bin/qmake.exe ../
第一次执行qmake出现下面的错误,需要设置g++所在路径的环境变量。
环境变量设置之后要关掉Git Bash终端,重新开启。
再次运行 /C/Qt/5.15.2/mingw81_64/bin/qmake.exe .. (注意命令后面有个空格和两个点,因为是对上一级目录做qmake)
qmake执行成功:
因为刚刚已经设置过环境变量了,接下来直接执行make和make install,我的环境没有遇到问题。
$ mingw32-make
$ mingw32-make install
install成功之后在QT的mingw套件路径下会有以下内容:
用QT Creator打开代码路径/demo/下的demo.pro,顺便说一下,我的QT Creator版本是9.0.2,QT的版本是5.15.2
打开之后,直接运行成功:
二。编译Android平台
$ mkdir build-android
$ cd build-android/
$ /c/Qt/5.15.2/android/bin/qmake .. (注意命令后面有。。)
第一次执行qmake时出现如下错误,需要把安卓的默认NDK的路径赋值给环境变量ANDROID_NDK_ROOT。
就是上图中的这个路径,选默认使用的那个,执行export设置该环境变量
$ export ANDROID_NDK_ROOT=/c/Users/seanp/AppData/Local/Android/android-sdk/ndk/21.3.6528147/
export之后再次执行qmake,成功
NDK的make.exe藏的比较深,我的路径是:C:\Users\seanp\AppData\Local\Android\android-sdk\ndk\21.3.6528147\prebuilt\windows-x86_64\bin\make.exe 为了方便,我提前添加了环境变量。
执行make和make install,我的环境都没出现问题。
$ make
$ make install
Install之后,在QT的安卓套件的QML路径下会多出一堆内容,如下图。
此时用QT Creator去构建安卓的APK是可以成功的,但是运行起来之后是个空白界面,提示信息是没有安装material。我手动拷贝了几个文件,src编译成功之后在qml-material\src\build-android路径下会生成几个so文件:其中应该有libmaterial_arm64-v8a.so 和 libmaterial_armeabi-v7a.so,
将这几个so文件(实际上只需要其中一个)拷贝到Qt\5.15.2\android\qml\Material路径下,再次打包APK,成功了。谁有更合适的解决办法,还请告知。