Categories
Android

Android Market 架构设计解析

1. 没有源代码。 2. 通过反编译工具(apktool/dex2jar),察看网络数据包工具(tcpdump/wireshark)研究,不能保证100%的正确,但整体的思路还是能看出来的。国内也有很多第三方电子市场,但形像神不像。 Android Market Overview : Client & Server 大致的代码目录(android 1.5版本, 后续版本比较复杂): Vending |– AndroidManifest |– res | |– drawable | |– drawable-finger | |– layout | |– menu | |– values | `– xml `– src `– com |– android | `– vending | |– SuggestionsProvider.java | |– … | |– VendingNotificationManager.java […]

Categories
Android

Android代码真是精益求精

看了一个ChangeLog, private OnItemClickListener mMessageClickedHandler = new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View v, int position, long id) { Intent intent; – int i = position – 1; + position = position – 1; – switch (i) { + switch (position) { 一个变量都不想加,对应的ddx格式为: 67 sub-int v0, p3, v2 68 69 .line 339 70 .local v0, […]

Categories
Android

Android网络应用开发

Android网络应用开发 反复研究了 Android Market,总结一下,之前发在新浪微博上,但不够详细,主要是提高用户体验。 1.网络异常处理,重试机制。 上wifi常常网络断开,那就看运用程序是否健壮。可以用Android 提供的 frameworks/base/core/java/android/net/NetworkConnectivityListener.java 监控网络变化,然后做相应的处理。 2.Cache 这个是必须的。比如手机QQ的头像,不可能每一次登录,重新把头像下载一遍。可以是内存cache,也可以写入SD卡。 3. 本地数据与服务器同步机制 4.请求异步处理机制 给一个app打分,打分后,马上回到之前的界面,而不是一直在等是否把数据发送到了服务器再响应。 5. push消息通知 有软件可以更新,在状态栏提示。新浪微博在右上方显示有新数据。 6.lazyload 延时加载,比如图标,头像,分页。 7.数据交换格式:对象序列化/protobuf/json/xml。 8. 设计模式:MVC,chain。

Categories
Android

解决android 2.2 market搜索结果偏少的问题

那是很久很久以前的事了,大概花了两个星期去折腾,整理整理,与朋友们分享一下。 我们开始移植到 2.2时,market运行很好,过一段时间测试组提出bug。问题现象:Android market 搜素记录严重偏少,比如搜索 qq,在我们的broncho a1上,只有1条记录。 首先,确定apk包是没有问题的。同样的包安装在G1上,可以找到300多条记录。此外,特意让上海龙旗的一位网友看了他们公司的手机,说可以搜索到25条qq记录,他们的分辨率是 800 * 600, 我们的是480 * 320。他把apk包发给我,在我们机器上还是同样的结果。 其次,在javaeye上,有网友说跟机器有 root权限有关,他发布一款软件到market上,他的机器是root权限,搜索不到他刚发布的程序,改为普通用户后,就可以了。这有可能,因为我们的机器一直是root权限,重新编译kernel,改为普通用户,还是不行。 后来有人说,跟market上设置的protected权限有关。我为此还花了25$注册 market开发者,写个小程序放上去,关闭权限,结果还是没有生效。 解决问题最好的方法是找差异。为此,getprop 获取G1系统参数做比较,还是没有找到有异常嫌疑之处。gpps包是从cm上获取的,我们没有通过正规的渠道拿到,怀疑是跟授权有关,如果真的是这样,那就没办法了,不过,上海龙旗既然可以搜索到25条记录,我想应该跟这没关系。 用 tcpdump与 wireshark 工具观察 market请求发出的数据包找出url,那是一串经过序列化然后再经过base64加密后的字符串。有开源的 android market api,基于protobuf协议,之前也是运行好好的,最近就不行了。翻遍它的 google groups,说什么帐号跟手机的deviceId挂钩了,我重新注册个gmail帐号,还是一样。又有说根据ip来源,返回不同的搜索结果。我干脆把程序放在美国的服务器上跑,还是没成功。 绝望,绝望!!! 一个android手机,如果电子市场不能使用,那简直是暗淡无光。 正值网络上爆出android暗含高达40% 的扣费短信。wusong童鞋无聊给我发个帖子链接《近期 Android 平台扣费软件检测的分析心得与思路分享》,说是如何扫描apk包含扣费短信的,文章中说通过反编译apk,插入 Log.v 打印出非法信息。灵光一闪,既然我无法全部理解那长长的url,那何不如让它自己打印出自己的信息呢? 修改ProtoBuf里的insertObject函数,添加Object toString()打印对象,如果是vector,就遍历打印。 结果发现,我们只有这个信息: 1222 insertObject: W tag=10 index=0com.google.android.feature.GOOGLE_BUILD 相应的g1的有很多信息,经查询, 问题出现在 FeatureInfo[] systemAvailableFeatures = packageManager.getSystemAvailableFeatures(); 这个函数。 运行时,PackageManagerService.java 从 […]

Categories
Android

Android Market 之 deviceId

有时候我们在market上无法下载软件,总停留在 downloading… 界面,有时候恢复出厂设置又可以下载了,这是为什么呢? 在market上下载一个应用程序发出的URL请求,可以参考Tim Strazzere的博文 Downloading market applications without the vending app 其中涉及到一个参数手机设备号,与Android_ID有关,这个Android_ID可以参看官方文档 http://developer.android.com/reference/android/provider/Settings.Secure.html#ANDROID_ID “A 64-bit number (as a hex string) that is randomly generated on the device’s first boot and should remain constant for the lifetime of the device. (The value may change if a factory reset is performed on the device.) ” AndroidId,通常用做识别唯一设备。可以通过下面的函数获取: […]

Pages: Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 Next