Posts Tagged ‘android market’

Google Android 3.0 的 Market 對 Google Analytics 丟資料

Thursday, April 28th, 2011

又一個 Root 手機的好理由.

最近在看 logcat 時, 常常會瞄到這些訊息:

04-28 12:30:43.770: DEBUG/NetworkRequestUtil/ConstructEventRequestPath(2275): /__utm.gif?utmwv=4.5ma&utmn=1845718205&utmt=event&utme=5(details%3Fdoc%3Dcom.amazon.kindle*VIEW_ITEM*1743839399)&utmcs=UTF-8&utmsr=1280x800&utmul=en-US&utmac=UA-19761900-1&utmcc=__utma%3D999.1840870358.1303223573.1303963419.1303963501.42

04-28 12:30:43.800: DEBUG/NetworkRequestUtil/ConstructPageviewRequestPath(2275): /__utm.gif?utmwv=4.5ma&utmn=1672526910&utmcs=UTF-8&utmsr=1280x800&utmul=en-US&utmp=%2Fhttp%3A%2F%2Fandroid.clients.google.com%2Ffdfe%3Fe%3DRELATED%26c%3D&utmac=UA-19761900-1&utmcc=__utma%3D999.1840870358.1303223573.1303963419.1303963501.42

04-28 12:30:43.800: DEBUG/NetworkRequestUtil/ConstructPageviewRequestPath(2275): /__utm.gif?utmwv=4.5ma&utmn=488885935&utmcs=UTF-8&utmsr=1280x800&utmul=en-US&utmp=%2Fhttp%3A%2F%2Fandroid.clients.google.com%2Ffdfe%3Fe%3DRELATED%26c%3D-1827484239&utmac=UA-19761900-1&utmcc=__utma%3D999.1840870358.1303223573.1303963419.1303963501.42

04-28 12:30:43.800: DEBUG/NetworkRequestUtil/ConstructPageviewRequestPath(2275): /__utm.gif?utmwv=4.5ma&utmn=1226858699&utmcs=UTF-8&utmsr=1280x800&utmul=en-US&utmp=%2Fhttp%3A%2F%2Fandroid.clients.google.com%2Ffdfe%3Fe%3DDETAILS%26c%3D1743839399&utmac=UA-19761900-1&utmcc=__utma%3D999.1840870358.1303223573.1303963419.1303963501.42

04-28 12:30:43.800: DEBUG/NetworkRequestUtil/ConstructPageviewRequestPath(2275): /__utm.gif?utmwv=4.5ma&utmn=564046613&utmcs=UTF-8&utmsr=1280x800&utmul=en-US&utmp=%2Fhttp%3A%2F%2Fandroid.clients.google.com%2Ffdfe%3Fe%3DRELATED%26c%3D&utmac=UA-19761900-1&utmcc=__utma%3D999.1840870358.1303223573.1303963419.1303963501.42

04-28 12:30:43.800: DEBUG/NetworkRequestUtil/ConstructPageviewRequestPath(2275): /__utm.gif?utmwv=4.5ma&utmn=951601809&utmcs=UTF-8&utmsr=1280x800&utmul=en-US&utmp=%2Fhttp%3A%2F%2Fandroid.clients.google.com%2Ffdfe%3Fe%3DRELATED%26c%3D-1827484239&utmac=UA-19761900-1&utmcc=__utma%3D999.1840870358.1303223573.1303963419.1303963501.42

起初不以為意, 但經過一而再再而三 log 的 “洗腦”, 越看越發覺得有些 keyword 很眼熟, 而在安裝 AdFree 之後才恍然大悟:

04-28 12:35:43.090: DEBUG/NetworkRequestUtil/ConstructPageviewRequestPath(3253): /__utm.gif?utmwv=4.5ma&utmn=1709128022&utmcs=UTF-8&utmsr=1280x800&utmul=en-US&utmp=%2Fhttp%3A%2F%2Fandroid.clients.google.com%2Ffdfe%3Fe%3DBROWSE%26c%3D1743839399&utmac=UA-19761900-1&utmcc=__utma%3D999.1840870358.1303223573.1303963501.1303965303.43

04-28 12:35:43.150: WARN/googleanalytics(3253): Problem with socket or streams.

04-28 12:35:43.150: WARN/googleanalytics(3253): java.net.ConnectException: www.google-analytics.com/127.0.0.1:80 - Connection refused

04-28 12:35:43.150: WARN/googleanalytics(3253):     at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:211)

04-28 12:35:43.150: WARN/googleanalytics(3253):     at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:431)

04-28 12:35:43.150: WARN/googleanalytics(3253):     at java.net.Socket.connect(Socket.java:901)

04-28 12:35:43.150: WARN/googleanalytics(3253):     at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:119)

04-28 12:35:43.150: WARN/googleanalytics(3253):     at com.google.android.apps.analytics.PipelinedRequester.maybeOpenConnection(Unknown Source)

04-28 12:35:43.150: WARN/googleanalytics(3253):     at com.google.android.apps.analytics.PipelinedRequester.addRequest(Unknown Source)

04-28 12:35:43.150: WARN/googleanalytics(3253):     at com.google.android.apps.analytics.NetworkDispatcher$DispatcherThread$AsyncDispatchTask.dispatchSomePendingEvents(Unknown Source)

04-28 12:35:43.150: WARN/googleanalytics(3253):     at com.google.android.apps.analytics.NetworkDispatcher$DispatcherThread$AsyncDispatchTask.run(Unknown Source)

04-28 12:35:43.150: WARN/googleanalytics(3253):     at android.os.Handler.handleCallback(Handler.java:587)

04-28 12:35:43.150: WARN/googleanalytics(3253):     at android.os.Handler.dispatchMessage(Handler.java:92)

04-28 12:35:43.150: WARN/googleanalytics(3253):     at android.os.Looper.loop(Looper.java:126)

04-28 12:35:43.150: WARN/googleanalytics(3253):     at android.os.HandlerThread.run(HandlerThread.java:60)

04-28 12:35:53.110: DEBUG/NetworkRequestUtil/ConstructPageviewRequestPath(3253): /__utm.gif?utmwv=4.5ma&utmn=1709128022&utmcs=UTF-8&utmsr=1280x800&utmul=en-US&utmp=%2Fhttp%3A%2F%2Fandroid.clients.google.com%2Ffdfe%3Fe%3DBROWSE%26c%3D1743839399&utmac=UA-19761900-1&utmcc=__utma%3D999.1840870358.1303223573.1303963501.1303965303.43

04-28 12:35:53.110: WARN/googleanalytics(3253): Problem with socket or streams.

04-28 12:35:53.110: WARN/googleanalytics(3253): java.net.ConnectException: www.google-analytics.com/127.0.0.1:80 - Connection refused

04-28 12:35:53.110: WARN/googleanalytics(3253):     at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:211)

04-28 12:35:53.110: WARN/googleanalytics(3253):     at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:431)

04-28 12:35:53.110: WARN/googleanalytics(3253):     at java.net.Socket.connect(Socket.java:901)

04-28 12:35:53.110: WARN/googleanalytics(3253):     at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:119)

04-28 12:35:53.110: WARN/googleanalytics(3253):     at com.google.android.apps.analytics.PipelinedRequester.maybeOpenConnection(Unknown Source)

04-28 12:35:53.110: WARN/googleanalytics(3253):     at com.google.android.apps.analytics.PipelinedRequester.addRequest(Unknown Source)

04-28 12:35:53.110: WARN/googleanalytics(3253):     at com.google.android.apps.analytics.NetworkDispatcher$DispatcherThread$AsyncDispatchTask.dispatchSomePendingEvents(Unknown Source)

04-28 12:35:53.110: WARN/googleanalytics(3253):     at com.google.android.apps.analytics.NetworkDispatcher$DispatcherThread$AsyncDispatchTask.run(Unknown Source)

04-28 12:35:53.110: WARN/googleanalytics(3253):     at android.os.Handler.handleCallback(Handler.java:587)

04-28 12:35:53.110: WARN/googleanalytics(3253):     at android.os.Handler.dispatchMessage(Handler.java:92)

04-28 12:35:53.110: WARN/googleanalytics(3253):     at android.os.Looper.loop(Looper.java:126)

04-28 12:35:53.110: WARN/googleanalytics(3253):     at android.os.HandlerThread.run(HandlerThread.java:60)

原來當你在使用 Android Market, 不管看過哪些程式, 安裝哪些軟體, 搜尋哪些遊戲, 這些動作通通都會回報給 Google .. 分析 (?), 也許拿來改善 Market 的設計, 又或者計算程式的排名.

不過我好不容易翻出 Android Market Terms of Service, 左看右看卻找不到會蒐集使用者資料的說明, 而印象中某 Google 工程師在介紹 Google Analytics for Mobile 時提到, 使用這個 API 一定得告知使用者, 最好還有個選項可以關閉資料的蒐集. (Software principles from Google Analytics API – Terms & Conditions) 但不知道是我眼殘, 還是這些說明及開關都埋在很深的 UI 裡面, 我怎麼也找不到他要我接受 ToS 的地方, 也找不到可以禁用 Google Analytics 的方法..

還好目前可以透過 Root 的方式使用 AdFree 把這類的連線 “關閉”, 雖然吃到飽的 3G 網路不會因為這點小封包受到影響, 但這種蒐集使用者習慣的方式讓人感到不是很舒服 (Android 2.3 之前的 Market 都沒這現象) 讓我 Root Android device 的理由再添上一筆 !

圖解在 Android 2.2 emulator 中使用 Android Market

Tuesday, July 20th, 2010

小站的熱門文章為 在 Android Emulator 中使用 Android Market 的方法, 看來不少人有這方面的需求. 先前發文時 Android 2.2 尚未正式 release, 後來有網友碰到不少問題, 所以決定發一篇圖文解說帶大家一步步打造可用 Android Market 的 Emulator 環境.

(more…)

在 Android Emulator 中使用 Android Market 的方法

Thursday, June 17th, 2010

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 這行移除, 再依照後面提到的步驟放回去.

做好前述步驟, 便可開始進行下一階段工作.

(more…)

窮人 Android 開發者測試 Donut 版本 Market 問題的方法

Wednesday, June 16th, 2010

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 之後 ? 我再找找.. :-)