转到正文

iT人 – theiter

关注IT技术,研究移动开发技术,记录IT人的生活

存档

标签: Android

Google刚刚更新了其Android OS版本统计,结果显示73.8%的Android用户已经在使用2.x以上版本,其中40.4%在使用Android 2.1,2.2版用户比例达到33.4%,而之前最多人使用的1.6版仅剩下16.4%,1.5版则为9.7%。

该趋势对于Android系统的发展来说相当不错,Google Android系统一直被媒体质疑版本太多并且版本间差异过大。以下是图表:

 

image

image

干嘛要反编译,呵呵!目的就不说了…

先说些预备知识:classes.dex是java源码编译后生成的java字节码文件。但由于Android使用的dalvik虚拟机与标准的java虚拟机是不兼容的,dex文件与class文件相比,不论是文件结构还是opcode都不一样。目前常见的java反编译工具都不能处理dex文件。

一般使用dexdump和Dedexer可以反dex,但是用过的人都知道这样反出来的结果可读性极差。在这个时候大家一定要相信互联网的力量,所谓只要你能想到的或许就已经有人已经做到了。瞧瞧吧,我下面要介绍的就是别人已经给我们做好的几个工具。

dex2jar,这个别人写的一个把.dex files转换成Java .class的小工具,很不错。基本使用方法如下:在apk中提取classes.dex文件 -> 利用dex2jar把dex转换成java jar(classes.dex2jar.jar)。

到这里了,我们用普通的java反编译工具就可以看到代码了。我使用的是JD-GUI,这是一个有界面的java(.class) 代码浏览器,简单实用!另外还提供了一个Eclipse plugin(JD-Eclipse),可以吧JD-GUI的功能集成到Eclipse里面。

最后,在提供一个与Layout相关的工具,AXMLPrinter2.jar,该工具能吧apk中的xml文件转换成文本格式,这样就就可以直接欣赏别人程序中界面布局的实现方式啦。当然Android SDK也提供了一个类似的工具(hierarchyviewer.bat),个人感觉还不入AXMLPrinter2.jar转成xml后直接看来得痛快。

文中提到的所有工具都是开源或免费的,感谢这些无私奉献的人们,附工具的链接:

今天看到一则新闻关于微软手机葬礼:微软Windows Phone团队周五为自家的Kin、苹果的iPhone和RIM的黑莓举办了一次别开生面的葬礼,向世人宣示他们告别了自己的过去和对手的现在。

不管微软怎么做也罢,老实说在移动智能终端平台微软真的是落后了,当然之前的WindowsMobile就没有领先过。WPhone即将面世,但是我感觉WPhone真是有点落后啦,至少在时间表上已经落后了,别人已经做出来的东西已经玩了一年,甚至两年了,你现在才出来,除非在别人的基础上能有更多的创新之处,否则…

其实在我个人的理解中给手机分了几代,目前的iphone和Android在我看来应该是第三代手机。往前应该是曾经风光无限的Symbian和WindowsMobile,再往前就应该是非智能的普通手机。我这样划分的依据主要是从用户使用体验出发。在非智能手机时代,手机的主要功能还是以电话和短信为主,捎带着有一些小游戏和简单的娱乐功能(如拍个照,看个图片等),如果还要继续往前追溯到模拟移动电话时代(大哥大应该记得吧),那就纯粹的只有电话功能了。

进入智能手机时代,Symbian应该是鼻祖。这时的手机除了普通的电话应用之外有更为丰富的娱乐和办公功能。可能真正是在这个时候开始,大家才知道我们的手机也可以像PC一样拥有这么多丰富的应用。

如今可以说我们的手机已经进入了第三代。她们在用户体验上完全颠覆了以前的概念,个人觉得有如下几个特点比较鲜明:

  • 操作使用更为方便,炫酷
  • 输出信息更为丰富
  • 联网便捷网络资源应用丰富
  • 除了电话功能还能替代很大一部分PC所完成的工作
  • 一种系统支持更多样的终端(XPhone,xPad)

苹果是这个时代的开拓者,他们的创新为所有的厂商带来了一条全新的道路,因为苹果的创新精神;android应该是这个时代的王者,因为Google的开放和苹果的封闭。记得有句话现在很流行:苹果总是被模仿,但从来没有被超越。正是因为苹果的个性和创新,但是苹果总是走个性路线,只能为他的粉丝们所接受;而google也是在不断创新,但他是为芸芸众生服务,大多的普通老百姓都可以享受到。

最近正在研究Android开发,为了自己使用HTC hero上网搜索方便写了这个程序—-MySearch。首先简单介绍下功能:MySearch 是一个快速搜索客户端程序,可以直接输入文本进行搜索,也可以扫描条码对扫描结果进行搜索;并且用户可以选择自己喜欢的搜索引擎。

功能列表:

  • 文本搜索
  • 一维条码条码扫描搜索(商品条码
  • 二维条码扫描搜索(Qr码
  • 扫描结果复制到剪切板
  • 选择搜索引擎
  • 更新搜索引擎列表

下载MySearch:MySearch (304)

以下是MySearch程序截图:

继续阅读

移动开发的过程中,在程序中打印日志是最有效的调试手段。Android系统提供了一套很好用日志API(android.util.Log),可以在代码中添加不同级别的日志。

在开发过程中logcat可以通过adb使用也可以在设备上直接使用,先看下帮助内容:

Usage: logcat [options] [filterspecs]
options include:
  -s              Set default filter to silent.
                  Like specifying filterspec '*:s'
  -f    Log to file. Default to stdout
  -r []   Rotate log every kbytes. (16 if unspecified). Requires -f
  -n       Sets max number of rotated logs to , default 4
  -v
     Sets the log print format, where

 is one of:

                  brief process tag thread raw time threadtime long

  -c              clear (flush) the entire log and exit
  -d              dump the log and then exit (don't block)
  -g              get the size of the log's ring buffer and exit
  -b      request alternate ring buffer
                  ('main' (default), 'radio', 'events')
  -B              output the log in binary
filterspecs are a series of
  [:priority]

where  is a log component tag (or * for all) and priority is:
  V    Verbose
  D    Debug
  I    Info
  W    Warn
  E    Error
  F    Fatal
  S    Silent (supress all output)

'*' means '*:d' and  by itself means :v

If not specified on the commandline, filterspec is set from ANDROID_LOG_TAGS.
If no filterspec is found, filter defaults to '*:I'

If not specified with -v, format is set from ANDROID_PRINTF_LOG
or defaults to "brief"

继续阅读