Android平台Qt开发入门教程(2)

Android平台Qt开发入门教程


        然后使用emulator -avd <avd_name> -partition-size <size_in_megabyte>指定分区大小并启动模拟器,如下所示,我启动的是android2.2, 分区大小为256M的AVD:

aries@uu3g:~$ emulator -avd android2.2 -partition-size 256

在模拟器里面查看分区大小:

Android平台Qt开发入门教程

这里我们使用模拟器来做例子,使用adb -e push把所有Qt库push到模拟器中,你也可以使用android-lighthouse自带的脚本来完成这个任务,push_qt_libs.sh脚本内容如下(注意修改你的push_qt_libs.sh里面的strip工具路径):

#!/bin/sh

adb shell rm -r /data/local/qt || exit 0
rm -fr al
mkdir al
cp -a lib/*.so* al/

/opt/android-ndk-r5/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-strip --strip-unneeded al/*

adb push al /data/local/qt/lib
adb push imports /data/local/qt/imports
adb push plugins /data/local/qt/plugins



     运行Qt应用程序:

以上步凑结束后,我们还需要修改一些shell脚本才可以正常的工作,android-lighthouse main trunk里面的shell脚本有一些bug,这里我们就动手开始改他, 在android-lighthouse根目录下面找到create_android_lighthouse_project.sh,打开,根据你android-ndk的版本路径, 修改以下内容:

......
#修改以下2行,指向你的android-sdk和android-lighthouse源码路径
SDK_ROOT=/home/buus/dev/android-sdk-linux_x86 
LIGHTHOUSE_ROOT=/home/buus/dev/android-lighthouse
......
#我的android-sdk里面,adb在platform-tools目录下面,所以修改为$SDK_ROOT/platform-tools/adb
\$SDK_ROOT/tools/adb install -r bin/\$PROJECT_NAME-debug.apk
......
#同上
\$SDK_ROOT/tools/adb shell am start -n org.\$PROJECT_NAME.qt/.QtMain
......
#同上
\$SDK_ROOT/tools/adb install -r bin/\$PROJECT_NAME-debug.apk


       这些路径设置好后,我们再修改一些可能存在的bug, 把此脚本中的如下代码

cp $LIGHTHOUSE_ROOT/examples/android/QtAnimatedtiles/AndroidManifest.xml $J_PRO/AndroidManifest.xml
cp -r $LIGHTHOUSE_ROOT/src/android/java/src/com $PROJECT_NAME-java/src
sed -i "s/animatedtiles/$PROJECT_NAME/g" $J_PRO/AndroidManifest.xml
cp \$Q_PRO/lib\$PROJECT_NAME.so* \$J_PRO/libs/armeabi     #我们编译cpp代码时是生成可执行文件,不是生成动态库


       替换为

cp $LIGHTHOUSE_ROOT/src/android/java/AndroidManifest.xml $J_PRO/AndroidManifest.xml
cp -r $LIGHTHOUSE_ROOT/src/android/java/src/* $PROJECT_NAME-java/src
cp -r $LIGHTHOUSE_ROOT/src/android/java/res/* $PROJECT_NAME-java/res
sed -i "s/animatedtiles/$PROJECT_NAME/g" $J_PRO/src/org/$PROJECT_NAME/qt/QtMain.java
sed -i "s/calculator/$PROJECT_NAME/g" $J_PRO/src/com/nokia/qt/android/QtActivity.java
sed -i "s/example.name/$PROJECT_NAME.qt/g" $J_PRO/AndroidManifest.xml
sed -i "s/Application name/$PROJECT_NAME/g" $J_PRO/res/values/strings.xml
cp \$Q_PRO/\$PROJECT_NAME \$J_PRO/libs/armeabi/lib\$PROJECT_NAME.so #我们编译cpp代码时是生成可执行文件,不是生成动态库,但这里必须以动态库的形式加载

注意其中的几个"sed", 你所需要替代的源对象可能和这里的不一样,请根据你的情况做适当修改。
        修改这些主要是由于example里面的代码没有及时更新,并且我们还需要res里面的libs.xml文件,然后保存,这里有一份我修改好的,针对2011年1月份的trunk做的修改。
[attach]694[/attach]

以上步凑结束后,我们开始拷贝一个例子程序来开始我们的Qt for android之旅。拷贝examples/widgets/calculator整个目录到android-lighthouse根目录下面,然后使用"create_android_lighthouse_project.sh"创建此c++代码对应的java代码,我们在终端里面运行

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/23688.html