(转)
Qt for Android 配置( Unbutu 11.04 )
一.环境搭建
1. Java 下载安装 :
-> jdk-6u25-linux-i586.bin
url: http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u25-download-346242.html
-> 1 、 jdk-1_5_0_06-linux-i586.bin 下载到 /usr/soft, 赋予可执行权限: chmod 755 jdk-1_5_0_06-linux-i586.bin
2 、执行: ./jdk-6u25-linux-i586.bin 空格键翻页,到最后输入 yes
3 、配置环境变量:在 /etc/profile 中加入:
export PATH=/usr/soft/jdk*.*/bin:$PATH
export JAVA_HOME=/usr/soft/jdk*.*.*
4 、运行: source /etc/profile 使配置文件生效
5 、运行: java -version, 显示 jdk 版本, jdk 安装成功
-> linux 操作系统可能默认会安装有 openjdk
需要将自己安装的 Java 设置为默认的:
sudo update-alternatives --install /usr/bin/java java /usr/local/jdk1.6.0_26/bin/java 1160
2. git GIT 是用于 Linux 开发的版本控制工具
-> unbutu 11.04 安装:
sudo apt-get install git git-core
3. Android SDK
-> http://developer.android.com/sdk/index.html
-> 解压下载的 SDK 文件 到 <Android_SDK_Path>
例如: /usr/local/bin/android-sdk-linux_x86-1.5_r2
-> 修改 /etc/profile 文件
-> export PATH=${PATH} : <Android_SDK_Path>/tools
例如: export PATH=${PATH} : <SDK_Path>/
android-sdk-linux_x86-1.5_r2/tools
-> save
-> restart
-> 输入: sudo android
-> 通过弹出界面配置 SDK (此时的 SDK 并未安装完成,需要通过网络完成全部安装)。
-> 在 Settings 处勾选 force https://......
-> 在 Available Packages 处 勾选要安装的包
-> Install Selectted 进行安装
-> android avd 配置信息的生成
-> android avd 的创建格式为 :android create avd -n your-avd-name -t your-targets
-> 其中 : -n 的参数为我们要创建的 avd 的名字 ;
-t 的参数为 Available Android targets 的 id,
我们可以使用命令: android list 查寻其具体信息。
-> $android list
Available Android targets:
id: 1
Name: Android 1.1
Type: Platform
API level: 2
Skins: HVGA-P, HVGA (default), QVGA-P, HVGA-L, QVGA-L
id: 2
Name: Android 1.5
Type: Platform
API level: 3
Skins: HVGA-P, HVGA (default), QVGA-P, HVGA-L, QVGA-L
id: 3
.....................
-> 创建 avd: $android create avd -n android1.5 -t 2
Android 1.5 is a basic Android platform.
Do you wish to create a custom hardware profile [no]yes
Device ram size: The amount of physical RAM on the device, in megabytes.
hw.ramSize [96]:128
Touch-screen support: Whether there is a touch screen or not on the device.
hw.touchScreen [yes]:yes
Track-ball support: Whether there is a trackball on the device.
hw.trackBall [yes]:yes
Keyboard support: Whether the device has a QWERTY keyboard.
hw.keyboard [yes]:yes
DPad support: Whether the device has DPad keys
hw.dPad [yes]:yes
GSM modem support: Whether there is a GSM modem in the device.
hw.gsmModem [yes]:yes
Camera support: Whether the device has a camera.
hw.camera [no]:
Camera support: Whether the device has a camera.
hw.camera [no]:yes
Maximum horizontal camera pixels
hw.camera.maxHorizontalPixels [640]:854
Maximum vertical camera pixels
hw.camera.maxVerticalPixels [480]:480
GPS support: Whether there is a GPS in the device.
hw.gps [yes]:yes
Battery support: Whether the device can run on a battery.
hw.battery [yes]:yes
Accelerometer: Whether there is an accelerometer in the device.
hw.accelerometer [yes]:yes
Audio recording support: Whether the device can record audio
hw.audioInput [yes]:yes
Audio playback support: Whether the device can play audio
hw.audioOutput [yes]:yes
SD Card support: Whether the device supports insertion/removal of virtual SD Cards.
hw.sdCard [yes]:yes
Cache partition support: Whether we use a /cache partition on the device.
disk.cachePartition [yes]:yes
Cache partition size
disk.cachePartition.size [66MB]:100MB
Created AVD ''android-sdk-15'' based on Android 1.5
-> 启动模拟器界面: $emulator @android-sdk-15 -show-kernel
-> 配置 eclipse, 使之支持 android sdk (安装 ADT 插件):
Eclipse , Help->Software Updates->Available Software( 根据提示进行相应操作 )
4. Android NDK
-> http://developer.android.com/sdk/ndk/index.html
-> 解压 NDK 包到指定目录
-> 配置 PATH
-> 修改 /etc/profile 文件
-> NDKROOT=/usr/local/bin/android-ndk-r5c ( 用户根据自己的实际安装配置 )
PATH=$PATH:$NDKROOT
-> save
->restart
-> 测试环境变量:
-> cd /usr/local/bin/android-ndk-r5c/samples/hello-jni
-> ndk-build
-> 将看到系统会编译出 libhello-jni.so
5. 安装 necessitas
http://sourceforge.net/projects/necessitas/files/
( 包括 Qt 的库, Qt Creater for Android, 同时可以选择安装 NDK 和 SDK( 但是由于网速问题建议不要选择可以自己安装 )):
-> 下载 necessitas-0.2-online-sdk-installer-linux
-> 使用 chmod 添加可执行权限
-> 安装过程需要网络环境
6. Ministro
需要在 android 上安装 Ministro service
url: http://sourceforge.net/projects/ministro.necessitas.p/files/
7. 模拟器启动命令
在命令行输入: emulator -help ,即可显示emulator 支持的所有命令。
Android Emulator usage:
emulator [options] [-qemu args]
options:
-sysdir <dir> 在目录<dir> 中搜索system.img
-system <file> 读取system.img 文件<file>
-datadir <dir> 写入用户数据到目录 <dir>
-kernel <file> 使用指定内核kernel-qemu 文件
-ramdisk <file> 指定ram 镜像文件ramdisk.img
-image <file> obsolete, use -system <file> instead
-init-data <file> initial data image (default <system>/userdata.img
-initdata <file> same as '-init-data <file>'
-data <file> data image
(default <datadir>/userdata-qemu.i
mg
-partition-size <size> 分区大小MBs
-cache <file> cache.img
-no-cache 禁止缓存
-nocache 禁止缓存
-sdcard <file> sdcard.img
-wipe-data reset the use data image (copy it from initda
ta)
-avd <name> 使用指定AVD 设备
-skindir <dir> search skins in <dir> (default <system>/skins
)
-skin <name> select a given skin
-no-skin don't use any emulator skin
-noskin same as -no-skin
-memory <size> 物理内存大小MBs
-netspeed <speed> 最大网速
-netdelay <delay> 网络延迟
-netfast disable network shaping
-trace <name> enable code profiling (F9 to start)
-show-kernel 显示内核消息
-shell 终端启用root shell
-no-jni disable JNI checks in the Dalvik runtime
-nojni same as -no-jni
-logcat <tags> 查看日志
-no-audio disable audio support
-noaudio same as -no-audio
-audio <backend> use specific audio backend
-audio-in <backend> use specific audio input backend
-audio-out <backend> use specific audio output backend
-raw-keys disable Unicode keyboard reverse-mapping
-radio <device> 无线猫
-port <port> 连接控制台的TCP 端口.
-ports <consoleport>,<adbport> TCP ports used for the console and adb bridge
-onion <image> use overlay PNG image over screen
-onion-alpha <%age> specify onion-skin translucency
-onion-rotation 0|1|2|3 specify onion-skin rotation
-scale <scale > 窗口缩放
-dpi-device <dpi> specify device's resolution in dpi (default 1
65)
-http-proxy <proxy> HTTP/HTTPS 代理
-timezone <timezone> 时区
-dns-server <servers> DNS 服务器
-cpu-delay <cpudelay> throttle CPU emulation
-no-boot-anim disable animation for faster boot
-no-window disable graphical window display
-version 版本
-report-console <socket> report console port to remote socket
-gps <device> redirect NMEA GPS to character device
-keyset <name> specify keyset file name
-shell-serial <device> specific character device for root shell
-old-system support old (pre 1.4) system images
-tcpdump <file> 记录网络数据包
-bootchart <timeout> enable bootcharting
-prop <name>=<value> 设置系统属性
-qemu args... pass arguments to qemu
-qemu -h 显示qemu 帮助
-verbose same as '-debug-init'
-debug <tags> enable/disable debug messages
-debug-<tag> enable specific debug messages
-debug-no-<tag> disable specific debug messages
-help 帮助
-help-<option> print option-specific help
-help-disk-images about disk images
-help-keys supported key bindings
-help-debug-tags debug tags for -debug <tags>
-help-char-devices character <device> specification
-help-environment environment variables
-help-keyset-file key bindings configuration file
-help-virtual-device virtual device management
-help-sdk-images about disk images when using the SDK
-help-build-images about disk images when building Android
-help-all 帮助( 所有)
在 3 的基础上:
emulator –avd Android2.3.3 –partition-size 512 (即可启动模拟器)
7. 常用 ADB 命令:
命令行工具 ADB ( Andvoid Debug Bridge )是 Android 提供的一个通用的调试工具,借助这个工具,我们可以管理设备或手机模拟器的状态。还可以进行以下的操作:
1 、快速更新设备或手机模拟器中的代码,如应用或 Android 系统升级;
2 、在设备上运行 shell 命令;
3 、管理设备或手机模拟器上的预定端口;
4 、在设备或手机模拟器上复制或粘贴文件;
5 、安装 .apk 文件到仿真器上。
以下为一些常用的操作:
1 、安装应用到模拟器:
adb install
比较郁闷的是, Android 并没有提供一个卸载应用的命令,只能自己手动删除:
adb shell
cd /data/app
rm app.apk
2 、进入设备或模拟器的 shell :
adb shell
通过上面的命令,就可以进入设备或模拟器的 shell 环境中,在这个 Linux Shell 中,你可以执行各种 Linux 的命令,另外如果只想执行一条 shell 命令,可以采用以下的方式:
adb shell [command]
如: adb shell dmesg 会打印出内核的调试信息。
3 、发布端口:
你可以设置任意的端口号,做为主机向模拟器或设备的请求端口。如:
adb forward tcp:5555 tcp:8000
4 、复制文件:
你可向一个设备或从一个设备中复制文件,
复制一个文件或目录到设备或模拟器上:
adb push
如: adb push test.txt /tmp/test.txt
从设备或模拟器上复制一个文件或目录:
adb pull
如: adb pull /addroid/lib/libwebcore.so .
5 、搜索模拟器 / 设备的实例:
取得当前运行的模拟器 / 设备的实例的列表及每个实例的状态:
adb devices
6 、查看 bug 报告:
adb bugreport
7 、记录无线通讯日志:
一般来说,无线通讯的日志非常多,在运行时没必要去记录,但我们还是可以通过命令,设置记录:
adb shell
logcat -b radio
8 、获取设备的 ID 和序列号:
adb get-product
adb get-serialno
9 、访问数据库 SQLite3
adb shell
sqlite3
模拟器上网设置:
1. 在 adb shell 模式下执行以下命令
sqlite3 /data/data/com.android.providers.settings/databases/settings.db "INSERT INTO system VALUES(99,'http_proxy',' 10.10.26 .252:1080 ')"
2. 重新启动Android 模拟器,程序可以登录http 网站。
3. 如果要删除配置: sqlite3 /data/data/com.android.providers.settings/databases/settings.db "DELETE FROM system WHERE _id=99"
4. 在 adb shell 模式下执行查询命令
sqlite3 /data/data/com.android.providers.settings/databases/settings.db "SELECT * FROM system"
5 .如果还无法连接Internet ,则需要设置DNS
$ adb shell
$ getprop
$ getprop 会列出系统当前的各项属性
得到模拟器的DNS 地址
在结果里可以看到:
[net.dns1]: [10.0.2.3]
[net.dns2]: [10.0.2.4]
[net.dns3]: [10.0.2.5]
[net.dns4]: [10.0.2.6]
把dns 改成我们自己的DNS
$ setprop net.dns1 192.168.1.1
注:一般TP-LINK 及D-LINK 的DNS 都是192.168.1.1 ,如果不是请使用ipcnofig /all 命令确认。
注意: 在配置环境变量时,请确保配置路径完全正确,否则不要操作 /etc/profile 文件,因为这个文件不正确可能导致系统无法启动,
所以可以在当前用户目录下找到 .bashrc, 配置环境变量,这样配置的值适合当前用户使用不是全局的。 )
二. 创建工程
1. 打开 necessitas (当前虚拟机上安装在: /home/frank/necessitas/ QtCreator/bin/ ),你可以在桌面创建快捷方式,或者将其配置到环境变量中。
主界面如下:
可以通过 File 打开一个 *.pro 工程文件或者自己创建一个
在 Project 选项中可以进行相应的设置
在 Qt Version 选项处点击 Manage 弹出一下对话框,根据现有的 SDK 、 NDK 和 Ant 的安装进行设置:
注意 Run Settings 中设置 Package 为 10 或者更高否则无法使用 Qt 编译通过:
此时点击 Build 可以编译程序,如果模拟器没有打开 necessitas 会自动打开模拟器。
其它的设置可以根据自己的实际需求进行相应的设置。
Qt Demo ( animatedtiles )运行效果图:
附:
1. tar 用法实例 tar 命令
tar 文件是几个文件和(或)目录在一个文件中的集合。这是创建备份和归档的佳径。
tar 使用的选项有:
-c — 创建一个新归档。
-f — 当与 -c 选项一起使用时,创建的 tar 文件使用该选项指定的文件名;当与 -x 选项
一起使用时,则解除该选项指定的归档。
-t — 显示包括在 tar 文件中的文件列表。
-v — 显示文件的归档进度。
-x — 从归档中抽取文件。
-z — 使用 gzip 来压缩 tar 文件。
-j — 使用 bzip2 来压缩 tar 文件。
要创建一个 tar 文件,键入:
tar -cvf filename.tar directory/file
可以使用 tar 命令同时处理多个文件和目录,方法是将它们逐一列出,并用空格间隔:
tar -cvf filename.tar /home/mine/work /home/mine/school
上面的命令把 /home/mine 目录下的 work 和 school 子目录内的所有文件都放入当前
目录中一个叫做 filename.tar 的新文件里。
要列出 tar 文件的内容,键入:
tar -tvf filename.tar
要抽取 tar 文件的内容,键入
tar -xvf filename.tar
这个命令不会删除 tar 文件,但是它会把被解除归档的内容
复制到当前的工作目录下,并保留归档文件所使用的任何
目录结构。譬如,如果这个 tar 文件中包含一个叫做
bar.txt 的文件,而这个文件包含在 foo/ 目录中,那么,
抽取归档文件将会导致在你当前的工作目录中创建
foo/ 目录,该目录中包含 bar.txt 文件
tar 默认不压缩文件。
要创建一个使用 tar 和 bzip 来归档压缩的文件,使用 -j 选项:
tar -cjvf filename.tbz file
以上命令创建了一个归档文件,然后将其压缩为 filename.tbz 文件。如果你使用 bunzip2 命令为 filename.tbz 文件解压, filename.tbz 文件会被删除,继
之以 filename.tar 文件。
你还可以用一个命令来扩展并解除归档 bzip tar 文件:
tar -xjvf filename.tbz
要创建一个用 tar 和 gzip 归档并压缩的文件,使用 -z 选项:
tar -czvf filename.tgz file
这个命令创建归档文件 filename.tar ,然后把它压缩为 filename.tgz 文件(文件 filename.tar 不被保留)。
如果你使用 gunzip 命令来给 filename.tgz 文件解压, filename.tgz 文件会被删除,并被
替换为 filename.tar 。
你可以用单个命令来扩展 gzip tar 文件:
tar -xzvf filename.tgz
一 . tar
1. 压缩一组文件为 tar.gz 后缀。
# tar cvf backup.tar /etc
#gzip -q backup.tar
或
# tar cvfz backup.tar.gz /etc/
tar zxvf XXXX.tar.gz
tar jxvf XXXX tar.bz2
2. 释放一个后缀为 tar.gz 的文件。
#gunzip backup.tar.gz
#tar xvf backup.tar
或
# tar xvfz backup.tar.gz
3. 用一个命令完成压缩
#tar cvf - /etc/ | gzip -qc > backup.tar.gz
4. 用一个命令完成释放
# gunzip -c backup.tar.gz | tar xvf -
5. 如何解开 tar.Z 的文件?
# tar xvfz backup.tar.Z
或
# uncompress backup.tar.Z
#tar xvf backup.tar
6. 如何解开 .tgz 文件?
#gunzip backup.tgz
7. 如何压缩和解压缩 .bz2 的包?
#bzip2 /etc/smb.conf
这将压缩文件 smb.conf 成 smb.conf.bz2
#bunzip2 /etc/smb.conf.bz2
这将在当前目录下还原 smb.conf.bz2 为 smb.conf
注 : .bz2 压缩格式不是很常用,你可以 man bzip2