1. 程式人生 > >Qt for Android 配置詳細 (轉載自ak47zhangzhiwei)

Qt for Android 配置詳細 (轉載自ak47zhangzhiwei)

倒騰了近來兩個禮拜,終於在實際開發機上將Qt的Demo跑起來啦!

遇到好多問題但是網上都沒有找比較滿意的答案!

 

所以 貼出來和各位分享一下,相互交流! 有問題可以發郵件交流:sunfrank2012#google郵箱

Qt Demo 位置:http://download.csdn.net/source/3392624

 

 

Qt for Android配置(Unbutu11.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

                     exportJAVA_HOME=/usr/soft/jdk*.*.*

              4、執行:source /etc/profile  使配置檔案生效

              5、執行:java -version,顯示jdk版本,jdk安裝成功

       ->linux作業系統可能預設會安裝有openjdk

              需要將自己安裝的Java設定為預設的:

                     sudoupdate-alternatives --install /usr/bin/java java /usr/local/jdk1.6.0_26/bin/java1160

 

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

       ->輸入: sudoandroid

       ->通過彈出介面配置SDK(此時的SDK並未安裝完成,需要通過網路完成全部安裝)。

              ->在Settings 處勾選 force https://......

              ->在AvailablePackages 處 勾選要安裝的包

              ->Install Selectted 進行安裝

       ->android avd配置資訊的生成

              ->android avd的建立格式為:androidcreate avd -n your-avd-name -t your-targets

              ->其中: -n的引數為我們要建立的avd的名字;

                                   -t的引數為Available Android     targets的id,

                     我們可以使用命令:android list查尋其具體資訊。

                            ->$android list

                                   AvailableAndroid 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

 

                                   Android1.5 is a basic Android platform.

                                   Doyou wish to create a custom hardware profile [no]yes

 

                                   Deviceram size: The amount of physical RAM on the device, in megabytes.

                                   hw.ramSize[96]:128

 

                                   Touch-screensupport: Whether there is a touch screen or not on the device.

                                   hw.touchScreen[yes]:yes

 

                                   Track-ballsupport: Whether there is a trackball on the device.

                                   hw.trackBall[yes]:yes

 

                                   Keyboardsupport: Whether the device has a QWERTY keyboard.

                                   hw.keyboard[yes]:yes

 

                                   DPadsupport: Whether the device has DPad keys

                                   hw.dPad[yes]:yes

 

                                   GSMmodem support: Whether there is a GSM modem in the device.

                                   hw.gsmModem[yes]:yes

 

                                   Camerasupport: Whether the device has a camera.

                                   hw.camera[no]:

 

                                   Camerasupport: Whether the device has a camera.

                                   hw.camera[no]:yes

 

                                   Maximumhorizontal camera pixels

                                   hw.camera.maxHorizontalPixels[640]:854

 

                                   Maximumvertical camera pixels

                                   hw.camera.maxVerticalPixels[480]:480

 

                                   GPSsupport: 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

 

                                   Audiorecording support: Whether the device can record audio

                                   hw.audioInput[yes]:yes

 

                                   Audioplayback support: Whether the device can play audio

                                   hw.audioOutput[yes]:yes

 

                                   SDCard support: Whether the device supports insertion/removal of virtual SDCards.

                                   hw.sdCard [yes]:yes

 

                                   Cachepartition support: Whether we use a /cache partition on the device.

                                   disk.cachePartition[yes]:yes

 

                                   Cachepartition size

                                   disk.cachePartition.size[66MB]:100MB

 

                                   CreatedAVD ''android-sdk-15'' based on Android 1.5

                                  

                            ->啟動模擬器介面: $emulator @android-sdk-15-show-kernel

                           

       ->配置eclipse,使之支援android sdk(安裝ADT外掛):

              Eclipse,Help->SoftwareUpdates->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 Createrfor 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>           usespecific audio output backend
   -raw-keys                     disable Unicode keyboard reverse-mapping
    -radio<device>               無線貓
    -port<port>                  連線控制檯的TCP埠.
    -ports <consoleport>,<adbport> TCP ports usedfor the console and adb bridge

    -onion<image>                use overlay PNG image over screen
    -onion-alpha<%age>           specify onion-skin translucency
    -onion-rotation0|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>          throttleCPU emulation
   -no-boot-anim                 disable animation for faster boot
   -no-window                    disable graphical window display
   -version                      版本
    -report-console<socket>       report console port toremote socket
    -gps<device>                 redirect NMEA GPS to character device
    -keyset<name>                specify keyset file name
    -shell-serial<device>         specificcharacter device for root shell
   -old-system                   support old (pre 1.4) system images
    -tcpdump<file>               記錄網路資料包
    -bootchart<timeout>          enable bootcharting
    -prop<name>=<value>          設定系統屬性


     -qemuargs...                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 "INSERTINTO 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

$ adbshell

$ 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/

              tarzxvf XXXX.tar.gz

 

              tarjxvf XXXX tar.bz2

 

              2.釋放一個字尾為tar.gz的檔案。

              #gunzipbackup.tar.gz

              #tarxvf backup.tar

              或

              #tar xvfz backup.tar.gz

 

              3.用一個命令完成壓縮

              #tarcvf - /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

              #tarxvf backup.tar

 

              6.如何解開.tgz檔案?

              #gunzipbackup.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