開發者最頭痛的莫過於程式在 上找不到, 偏偏這問題又無法在自個兒的開發手機上重現, 再加上
Programmer 都很窮 (?) 沒法把出問題的手機通通買回來測, 最後只好忍痛放棄那些殷殷企盼的使用者.
當然網路上有不少這類問題的解法, 痛過一次之後身體就會牢牢記住那些地雷, 似乎往後也沒有厚著臉皮到處借錢買手機的必要. 俗話說工欲善其事,
必先利其器, 如果有便宜又好用的方法可以測試自己的程式, 那再好不過. 小的在這邊提供一個很簡單又便宜的方法讓開發者可以反覆的測,
直到網路斷線為止. - 由於最常出問題的是 Donut 版本 (1.6) 與 QVGA, 所以請先在電腦上安裝 1.6 SDK, 並建立一個 QVGA 的 avd.
- 接著到HTC Developer網站抓Android Dev Phone 1的 1.6 System Image (目前的檔名是 signed-dream_devphone_userdebug-img-14721.zip)
- 解開下載的 image 將 system.img 放在 avd 目錄下. 使用者可以在 C:\Documents
and Settings\\.android\ 找到你所建立的 avd 目錄, Mac 使用者則可在
~/.android/avd 找到.
- 最後啟動 Emulator, 開機後輸入 帳號相關資料, 即可快樂使用 Donut 的 Market.
1.5 也可以用類似的方法, 至於 2.0 之後 ? 我再找找.. :- |
在2.1上的安装方法
1.5, 1.6 之前的版本可以參考上一篇, 這邊提供 2.1 的方法, 其實只要 GMS 有修改, 使用方式都會不太一樣, 不過原理大同小異. :-) 要在 Emulator 上跑 Android Market 有几点要注意: - 首先要有相应版本的 Google Android Mobile Service, 通常网上可以找得到 (GoogleBits-sdk7)
- Emulator 的 default partition size 似乎是 66MB, 但是后來的版本 system.img
都超过这个 size, 导致开启emulator后,用 df 查看 free space 都是 0. 所以在启动emulator时, 得加上
-partition-size 96 产生free space 塞档案. (emulator -avd android_2.1 -partition-size 96)
- Emulator 不会启动 Google check in service, 少了它便无法登陆Google账号, 所以得先启动emulator, 通过adb pull /system/build.prop , 将build.prop取到本地,将
ro.config.nocheckin=yes 這行移除, 再依照後面提到的步驟放回去.
做好前述步驟, 便可開始進行下一階段.
- 切換至 avd 的目錄, 將
/platforms/android-7/images/system.img 複製過來,
印象中不這麼做資料無法寫入, 而且萬一做錯了得重新 Download 一份 SDK 才能救回, 所以保險起見還是分開使用.
- 啟動 Emulator, 別忘了加上 -partition-size 96 這個參數.
- 此時可以開啟 ddms 觀察是否啟動完全 (log 停止不再吐出來) 接著執行 adb remount 讓 system partition 可以寫入資料.
- 將先前修改的 build.prop 塞回去: adb push build.prop /system/
- 解開 Googlebits 那包壓縮檔, 將 system 目錄下列檔案塞入 Emulator 裡
adb push etc/permissions/com.google.android.datamessaging.xml /system/etc/permissions/ adb push etc/permissions/com.google.android.gtalkservice.xml /system/etc/permissions/ adb push framework/com.google.android.gtalkservice.jar /system/framework/ adb push app/EnhancedGoogleSearchProvider.apk /system/app adb push app/GoogleCheckin.apk /system/app adb push app/GoogleApps.apk /system/app adb push app/gtalkservice.apk /system/app adb push app/SetupWizard.apk /system/app adb push app/Vending.apk /system/app adb push app/TalkProvider.apk /system/app - 將 SdkSetup.apk (adb shell rm /system/app/SdkSetup.apk)移除, 這樣重開後就會直接執行 SetupWizard
- 關閉 Emulator.
- 刪除 cache.img 與 userdata-qemu.img (如果你的avd是通过SDK创建的,C:\Documents
and Settings\\.android\ 找到你所建立的 avd 目錄; 如果是通过命令行的行式创建的,找到创建avd时的路径)
- 重新啟動 Emulator, 也许大功告成 ! 如果在用已有的google account登录的时候出现“can't open”的问题,则adb pull /etc/hosts, 然后添加或改动,gmail的地址到hosts中去,重新启动一般就可以了
啟動後會出現 SetupWizard, 登入 Google 帳號後即可使用 Android Market ! :D 2010-06-17 Updated: 2.2 的作法似乎更簡單, 首先可以從上找一下Froyo 的 ROM, 接下來步驟同前述, 第 5 步裡面塞的 apk 換成 GoogleServicesFramework.apk 與 Vending.apk 即可 ! 看來 dependency 沒這麼複雜囉.. |
在SDK 2.2模擬器中安裝Market
1. 建立AVD,名稱為DAVID_2.2
2.
執行「開始—執行—cmd」,預設會在這個資料夾:
C:\Documents and Settings\%HOME%>
3.
切換目錄至「.android/avd/DAVID_2.2」,指令參考如下:
C:\Documents and
Settings\David.Lanz>cd .android
C:\Documents and
Settings\David.Lanz\.android>cd avd
C:\Documents and
Settings\David.Lanz\.android\avd>cd
DAVID_2.2.avd
畫面結果:
C:\Documents and
Settings\David.Lanz\.android\avd\DAVID_2.2.avd>
4.複製SDK裡的system.img至此,指令如下:
copy
d:\sdk\android\platforms\android-8\images\system.ing
5.在DOS視窗中切換目錄至SDK的tools資料夾,手動啟動模擬器,指令:
cd
d:\sdk\android\tools\
emulator -avd DAVID_2.2 -partition-size 96
順利執行模擬器畫面
6.在DOS視窗裡執行指令,取出build.prop檔案。
adb
pull /system/build.prop
7.利用文字編輯器開啟編輯build.prop這個檔案,將
ro.config.nocheckin=yes 移除(再最前面加上 mark 符號 #)
8.將剛才取出修改好的檔案存檔,然後執行以下指令將檔案放回去。
adb
remount 必须执行,否则文件不可写
adb push build.prop /system9.至此程式,將之解壓縮後,存放至SDK資料夾(舉例如下):
(也可以拿个2.2平台的手机,从手机中将这两个文件拷贝出来)
D:\SDK\android\tools\
GoogleServicesFramework.apkD:\SDK\android\tools\
Vending.apk10.將步驟9的兩個apk檔案丟入模擬器/system/app資料夾,並刪除SdkSetup.apk,指令如下:
adb
push GoogleServicesFramework.apk /system/app
adb push Vending.apk
/system/app
adb shell rm /system/app/SdkSetup.apk
11.
關閉
Emulator(直接關閉模擬器的視窗即可)。
12.切換目錄至avd的資料夾下:
C:\Documents and
Settings\%HOME%\.android\avd\DAVID_2.2.avd>
執行以下指令,刪除由系統產生的「userdata-qemu.img」與「userdata.img」、「cache.img
」這三個檔案刪除,讓Emulator完成初始化。
del userdata*.img cache.img
13.執行「Android
SDK and AVD Manager」來啟動模擬器。
大功告成,Market順利在模擬器裡執行。第一次執行Market必須要以google帳號登入,登入後即可下載程式囉。