顯示具有 emulator 標籤的文章。 顯示所有文章
顯示具有 emulator 標籤的文章。 顯示所有文章

2013年10月30日 星期三

如何自动cradle wince模拟器

http://m.blog.csdn.net/blog/chief1985/5429861#

wince的模拟器有个Device Emulator Manager,这里面可以对模拟器进行cradle,之后Device Emulator Manager会是activesync和模拟器建立连接(DMA方式),之后wince的一些工具就可以用了。例如cecopy.exe,cedir.exe等,下面是一个列表:
cecopy.exe:拷贝文件到wince设备或模拟器(反过来也可以)
cedel.exe:删除wince设备或模拟器上的文件
cedir.exe:列举文件
ceexec.exe:执行程序
cegetinfo.exe:获取剩余空间信息
cemkdir.exe:创建目录
cereg.exe:注册表操作
这些工具的意义看名字就知道了,可以在http://www.microsoft.com/downloads/details.aspx?familyid=74473FD6-1DCC-47AA-AB28-6A2B006EDFE9&displaylang=en下载,这里面还有一些别的工具。
cradle一般的做法是Device Emulator Manager右键来选择。对于喜欢命令行一键搞定的程序员来说,cradle是一个比较麻烦的事,有没有可以在命令行里面cradle的方法呢?
答案是肯定的。在msdn里面,微软提供了一个对Device Emulator Manager编程的方法(http://msdn.microsoft.com/en-us/library/bb887543.aspx)。大家可以从http://download.microsoft.com/download/3/6/1/361517d0-2054-4d41-af95-36d18e141df5/DEMAutomationSetup.msi下载这个例子,然后进行编译,编译一般会报错,说找不到DEMComInterface.tlb,这就需要更改一些工程的Include目录。例子的作者将Device Emulator装在d盘,我们只需要将这个目录改为自己的Device Emulator安装地方就可以了。DEMAutomation支持如下命令,其中就有cradle 。Device Emulator Manager提供的API可以参考http://msdn.microsoft.com/en-us/library/bb531169.aspx
List :列举模拟器
bringtofront [VMID|Name] :窗口置顶
connect [VMID|Name] :连接
cradle [VMID|Name]
clearsavestate [VMID|Name]
getconfiguration [VMID|Name] [existing device configuration file]
reset [VMID|Name]
uncradle [VMID|Name]
setconfiguration [VMID|Name] [device configuration file to create]
shutdown [VMID|Name]

参考网址:
http://msdn.microsoft.com/en-us/library/bb887543.aspx
http://msdn.microsoft.com/en-us/library/bb531169.aspx
http://social.msdn.microsoft.com/Forums/en-US/microsoftdeviceemu/thread/84fb02dc-2510-46b4-98e9-541297d555c4

2013年5月23日 星期四

Android SDK Commands

# Android模擬器命令列啟動模式
在android-sdk-windows-1.1\tools執行emulator以執行模擬器
加上-skin參數,指定顯示模式為HVGA-L,則可轉為橫向
emulator - skin HVGA-L (480*320,水平顯示)
emulator - skin HVGA-L (320*480,垂直顯示,模擬器預設模式)
emulator - skin HVGA-L (320*240,水平顯示)
emulator - skin HVGA-L (240*320,垂直顯示)

# 使用mksdcard指令模擬1GB的記憶卡
mksdcard 1024M sdcard.img

# 模擬插入 SD 卡的模擬器
emulator - sdcard sdcard.img

# 使用 adb+push 上載檔案到SD記憶卡
adb push 001.jpg /sdcard (複製檔案到 /sdcard 目錄下)
adb push pictures /sdcard (複製 picture 照片目錄到 /sdcard 目錄下)
adb push mp3 /sdcard (複製 mp3 音樂目錄到 /sdcard 目錄下)
adb shell (Android 模擬器啟動命令列模式)
#cd /sdcard (進入 /sdcard 目錄)
#ls (查看 SD 記憶卡中的檔案)

# 使用 adb+pull 從 SD 記憶卡下載檔案
adb pull /sdcard/001.jpg . (下載 /sdcard 目錄下的檔案)
adb pull /sdcard/pictures . (下載 sdcard 目錄下的 pictures 目錄)

# 刪除 SD 卡裡面的檔案
adb shell
#ced /sdcard
#rm 001.jpg (刪除 SD 記憶卡裡的檔案)
#rm -r * (刪除 SD 記憶卡裡所有檔案與目錄)

# Android模擬器影片播放方法
mksdcard 4096M video.img (製作一個影像檔的 SD 記憶卡)
adb push video.avi /sdcard (從電腦複製影像檔到 SD 卡中)
emulator -sdcard video.img (啟動模擬器並載入 SD 卡)
下載免費的影片播放軟體,ex: Meridian Video Player (iiivpa.apk)
http://sites.google.com/site/eternalsandbox/Home/meridian-video-player
adb install iiivpa.apk (安裝Meridian Video Player)
接下來就可以用裝上去的player播放.mp4、3gp與.wmv三種檔案格式

# 安裝 APK 應用程式
adb install filename.apk (安裝filename.apk)
adb install -r filename.apk (保留已設定資料,重新安裝filename.apk)
adb -s emulator-5554 install filename.apk (指定安裝 APK 套件在 5554 的 Android 模擬器中)

# 移除 APK 應用程式
adb uninstall package
adb uninstall -k package (移除程式時,保留資料)
此package名稱不是安裝APK套裝時的檔名或顯示在模擬器中的應用程式名稱
可以先到/data/data或data/app目錄下,查詢想移除的package名稱
adb shell
ls /data/data 或 /data/app (查詢 Package 名稱)
exit
adb uninstall package (移除查詢到的 Package)

# ADB 系統除錯與連結工具
$adb devices (顯示目前有多少個模擬器正在執行)
$adb -s <serialNumber> <command> (指定模擬器來操作)
adb -s emulator-5554 install email.apk
$adb install apkfile (安裝 APK 應用程式套件)
adb install email.apk
$adb uninstall package (移除 APK 應用程式套件)
adb uninstall com.android.email
$adb shell (進入 Android 系統指令列模式)
$ls
$dmesg (查看 Android Linux Kernel 運作訊息)
ls - 顯示檔案目錄
cd - 進入目錄
rm - 刪除檔案
mv - 移動檔案
mkdir - 產生目錄
rmdir - 刪除目錄

$adb push <file/dir> (複製檔案到 SD 卡)
adb push mp3 /sdcard
$adb pull <file/dir> . (從 Android 系統下載檔案)
adb pull /data/app/com.android.email
$adb logcat (監控模擬器運作紀錄,以Ctrl + c 離開監控模式)
$adb bugreport (產生 adb 除錯報告)
$adb get-state (獲得 adb 伺服器運作狀態)
$adb start-server (啟動 adb 伺服器)
$adb kill-server (關掉 adb 伺服器)
$adb forward tcp:6100 tcp:7100 (更改模擬器網路 TCP 通訊埠)
$adb shell ps -x (顯示 Android 上所有正在執行的行程)
$adb version (顯示 adb 版本)
$adb help (顯示 adb 指令參數)

# Emulator 命令列啟動參數
emulator -timezone Asia/Taipei (指定時區)
emulator -no-boo-anim (省略開機小機器人動畫畫面)
emulator -scale auto (調整模擬器視窗大小)
emulator - scale factor (factor: 0.1-3.0)
emulator -dpi-device 300 (更改模擬器的解析度,default為 165dpi)
emulator -skin <skinID> (更改模擬器顯示模式)
emulator -help-keys (顯示鍵盤快速鍵說明)
emulator -shell (相當於adb shell 功能)
emulator -data data.img (使 /data 目錄使用 data.img 的檔案空間)
emulator -sdcard sdcard.img (使 /sdcard 目錄使用 sdcard.img 的檔案空間)
emulator -cache cache.img (瀏覽器暫存檔儲存空間)
emulator -wipe-data (使模擬器恢復到原廠設定)
emulator -help (顯示 emulator 指令參數) 


#Android : adb shell am 命令列啟動Activity或傳送Intent

例如:
//啟動瀏覽器,打開目標網址
adb shell am -a android.intent.action.VIEW -d http://www.google.com
adb shell am broadcast -a org.meshpoint.anode.START -e cmdline /data/tmp/hello.js
//撥打電話,號碼是123456789
adb shell am start -a android.intent.action.CALL -d tel:123456789
am start -a android.intent.action.CALL -d tel:123456789
Starting: Intent { action=android.intent.action.CALL data=tel:123456789}

輸入按鍵 : adb shell input keyevent [KEY ID]
      例如,想要「解鎖」就鍵入「adb shell input keyevent 82」
     00 -> "KEYCODE_UNKNOWN"
     01 -> "KEYCODE_MENU"
     02 -> "KEYCODE_SOFT_RIGHT"
     03 -> "KEYCODE_HOME"
     04 -> "KEYCODE_BACK"
     05 -> "KEYCODE_CALL"
     06 -> "KEYCODE_ENDCALL"
     07 -> "KEYCODE_0"
     16 -> "KEYCODE_9"
     17 -> "KEYCODE_STAR"
     18 -> "KEYCODE_POUND"
     19 -> "KEYCODE_DPAD_UP"
     20 -> "KEYCODE_DPAD_DOWN"
     21 -> "KEYCODE_DPAD_LEFT"
     22 -> "KEYCODE_DPAD_RIGHT"
     23 -> "KEYCODE_DPAD_CENTER"
     24 -> "KEYCODE_VOLUME_UP"
     25 -> "KEYCODE_VOLUME_DOWN"
     26 -> "KEYCODE_POWER"
     27 -> "KEYCODE_CAMERA"
     28 -> "KEYCODE_CLEAR"
     29 -> "KEYCODE_A"
     54 -> "KEYCODE_Z"
     55 -> "KEYCODE_COMMA"
     56 -> "KEYCODE_PERIOD"
     57 -> "KEYCODE_ALT_LEFT"
     58 -> "KEYCODE_ALT_RIGHT"
     59 -> "KEYCODE_SHIFT_LEFT"
     60 -> "KEYCODE_SHIFT_RIGHT"
     61 -> "KEYCODE_TAB"
     62 -> "KEYCODE_SPACE"
     63 -> "KEYCODE_SYM"
     64 -> "KEYCODE_EXPLORER"
     65 -> "KEYCODE_ENVELOPE"
     66 -> "KEYCODE_ENTER"
     67 -> "KEYCODE_DEL"
     68 -> "KEYCODE_GRAVE"
     69 -> "KEYCODE_MINUS"
     70 -> "KEYCODE_EQUALS"
     71 -> "KEYCODE_LEFT_BRACKET"
     72 -> "KEYCODE_RIGHT_BRACKET"
     73 -> "KEYCODE_BACKSLASH"
     74 -> "KEYCODE_SEMICOLON"
     75 -> "KEYCODE_APOSTROPHE"
     76 -> "KEYCODE_SLASH"
     77 -> "KEYCODE_AT"
     78 -> "KEYCODE_NUM"
     79 -> "KEYCODE_HEADSETHOOK"
     80 -> "KEYCODE_FOCUS"
     81 -> "KEYCODE_PLUS"
     82 -> "KEYCODE_MENU"
     83 -> "KEYCODE_NOTIFICATION"
     84 -> "KEYCODE_SEARCH"
     85 -> "TAG_LAST_KEYCODE"

   
#Android : aapt 使用
1. aapt l[ist] [-v] [-a] file.{zip,jar,apk}
List contents of Zip-compatible archive.
1.1 列出壓縮檔目錄
aapt l <file_path.apk>
參數:
-v:會以table的形式輸出目錄,table的表目有:Length、Method、Size、Ratio、Date、Time、CRC-32、Name。
其中Method表示壓縮形式,有:Deflate及Stored兩種,即該Zip目錄採用的演算法是壓縮模式還是存儲模式;可以看出resources.arsc、*.png採用壓縮模式,而其它採用壓縮模式。
Ratio表示壓縮率。CRC-32未明其意,Sodino盼指教。

-a:會詳細輸出所有目錄的內容。

2. aapt d[ump] [--values] WHAT file.{apk} [asset [asset ...]]
badging Print the label and icon for the app declared in APK.
permissions Print the permissions from the APK.
resources Print the resource table from the APK.
configurations Print the configurations in the APK.
xmltree Print the compiled xmls in the given assets.
xmlstrings Print the strings of the given compiled xml assets.

2.1 查看apk包的packageName、versionCode、applicationLabel、launcherActivity、permission等各種詳細資訊
aapt dump badging <file_path.apk>

2.2 查看許可權
aapt dump permissions <file_path.apk>

2.3 查看資源清單
aapt dump resources <file_path.apk>
一般都會輸出很多的資訊,如要全部查看,請用下麵這兩句:
aapt dump resources <file_path.apk> > sodino.txt
sodino.txt
這樣會把所有的資訊通過重定向符">"輸出到sodino.txt檔中,然後再打開該檔即可查看。

2.4 查看apk配置資訊
aapt dump configurations <file_path.apk>


2.5 查看指定apk的指定xml檔。
aapt dump xmltree <file_path.apk> res/***.xml
以樹形結構輸出的xml資訊。
aapt dump xmlstrings <file_path.apk> res/***.xml
輸出xml檔中所有的字串資訊。




Reference:
1. http://fecbob.pixnet.net/blog/post/35827899-android-aapt%E4%BD%BF%E7%94%A8