转载:http://blog.23corner.com/2010/06/16/%E7%AA%AE%E4%BA%BA-android-%E9%96%8B%E7%99%BC%E8%80%85%E6%B8%AC%E8%A9%A6-donut-%E7%89%88%E6%9C%AC-market-%E5%95%8F%E9%A1%8C%E7%9A%84%E6%96%B9%E6%B3%95/
Android 開發者最頭痛的莫過於程式在 Market 上找不到, 偏偏這問題又無法在自個兒的開發手機上重現, 再加上 Programmer 都很窮 (?) 沒法把出問題的手機通通買回來測, 最後只好忍痛放棄那些殷殷企盼的使用者. 當然網路上有不少這類問題的解法, 痛過一次之後身體就會牢牢記住那些地雷, 似乎往後也沒有厚著臉皮到處借錢買手機的必要. 俗話說工欲善其事, 必先利其器, 如果有便宜又好用的方法可以測試自己的程式, 那再好不過. 小的在這邊提供一個很簡單又便宜的方法讓開發者可以反覆的測, 直到網路斷線為止.
1.由於最常出問題的是 Donut 版本 (1.6) 與 QVGA, 所以請先在電腦上安裝 1.6 SDK, 並建立一個 QVGA 的 avd.
2.接著到HTC Developer網站抓Android Dev Phone 1的 1.6 System Image (目前的檔名是 signed-dream_devphone_userdebug-img-14721.zip)
3.解開下載的 image 將 system.img 放在 avd 目錄下. Windows 使用者可以在 C:\Documents and Settings\<user>\.android\ 找到你所建立的 avd 目錄, Mac 使用者則可在 ~/.android/avd 找到.
4.最後啟動 Emulator, 開機後輸入 Google 帳號相關資料, 即可快樂使用 Donut 的 Market.
1.5 也可以用類似的方法, 至於 2.0 之後 ? 我再找找.. :-
在2.1上的安装方法
1.5, 1.6 之前的版本可以參考上一篇文章, 這邊提供 2.1 的方法, 其實只要 GMS 有修改, 使用方式都會不太一樣, 不過原理大同小異. :-)
要在 Emulator 上跑 Android Market 有幾點要注意:
1.首先要有相對映版本的 Google Android Mobile Service, 通常網路上可以找得到 (GoogleBits-sdk7)
2.Emulator 的 default partition size 似乎是 66MB, 但是後來的版本 system.img 都超過這個 size, 導致開啟後用 df 查看 free space 都是 0. 所以在啟動 emulator 時, 得加上 -partition-size 96 產生 free space 塞檔案.
3.Emulator 不會啟動 Google check in service, 少了它便無法登錄 Google 帳號, 所以得先啟動 emulator, 透過 adb pull /system/build.prop 將設定檔案取回, 將 ro.config.nocheckin=yes 這行移除, 再依照後面提到的步驟放回去.
做好前述步驟, 便可開始進行下一階段工作.
1.切換至 avd 的目錄, 將 <sdk_dir>/platforms/android-7/images/system.img 複製過來, 印象中不這麼做資料無法寫入, 而且萬一做錯了得重新 Download 一份 SDK 才能救回, 所以保險起見還是分開使用.
2.啟動 Emulator, 別忘了加上 -partition-size 96 這個參數.
3.此時可以開啟 ddms 觀察是否啟動完全 (log 停止不再吐出來) 接著執行 adb remount 讓 system partition 可以寫入資料.
4.將先前修改的 build.prop 塞回去: adb push build.prop /system/
5.解開 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
6.將 SdkSetup.apk (adb shell rm /system/app/SdkSetup.apk)移除, 這樣重開後就會直接執行 SetupWizard
7.關閉 Emulator.
8.刪除 cache.img 與 userdata-qemu.img (如果你的avd是通过SDK创建的,C:\Documents and Settings\<user>\.android\ 找到你所建立的 avd 目錄; 如果是通过命令行的行式创建的,找到创建avd时的路径<avd_dir>)
9.重新啟動 Emulator, 大功告成 !
啟動後會出現 SetupWizard, 登入 Google 帳號後即可使用 Android Market ! :D
2010-06-17 Updated: 2.2 的作法似乎更簡單, 首先可以從MoDaCo 的論壇上找一下Froyo 的 ROM, 接下來步驟同前述, 第 5 步裡面塞的 apk 換成 GoogleServicesFramework.apk 與 Vending.apk 即可 ! 看來 dependency 沒這麼複雜囉..