随着智能手机的普及,功能越来越强大。程序也越来多和复杂化。研究一下android系统的逆向工程也是挺有意思的。 目前android逆向工程还处于初级阶段。表现在于:
- 1.没有完整的动态调试程序。目前由于android系统的bionic并不完全支持POSIX,导致现有编译的gdb不支持多线程无符号调试。(我实验了一下,的确多线程问题比较多,当然,gdb本身也有问题)。所以对于NDK逆向工程比较麻烦,以静态分析为主。
- 2.手机本身种类较多,而且android版本繁多,更新较快,增加了逆向的难度。
随着智能手机的普及,功能越来越强大。程序也越来多和复杂化。研究一下android系统的逆向工程也是挺有意思的。 目前android逆向工程还处于初级阶段。表现在于:
通过电量的计算公式我们可以看到影响电量的因子无非就是CPU的时间和网络数据以及Wakelock,GPS的使用。 在09年Google IO大会Jeffrey Sharkey的演讲(Coding for Life — Battery Life, That Is)中就探讨了这个问题,指出android应用的耗电主要在以下三个方面:
1 2 3 |
|
Android横竖屏要解决的问题应该就两个:
最近项目中用用到语言切换功能,第一想到的就是资源文件,没错。
在资源文件中新建一个文件夹values-en,en表示英语,有一些还细化到地区,如values-en-rUS 即美国地区的英语,r是必需的。在里面新建一个strings.xml,把默认values文件夹中的strings.xml中的内容Copy至values-en中的strings.xml,再把该文件夹中的中文内容转换为英文,例如
编写Android程序时要时刻考虑执行的效率,这系统不是想象中的那么快,并且你还要考虑它电池的续航能力。写程序的时候,要尽可能的使你的代码优化而提高效率。
对于如何判断一个系统的不合理,这里有两个基本的原则:
在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框, 这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框。用户可以选择“等待”而让程序继续运行, 也可以选择“强制关闭”。所以一个流畅的合理的应用程序中不能出现anr,而让用户每次都要处理这个对话框。 因此,在程序里对响应性能的设计很重要,这样系统不会显示ANR给用户。默认情况下,在android中Activity的最长执行时间是5秒, BroadcastReceiver的最长执行时间则是10秒。
菜单是任何应用程序必不可少的一项。按下Menu键或者长按某个View就会弹出相应菜单,当然前提是应用程序有实现菜单功能。 Android平台下的菜单有:Options Menu(选项菜单)、Submenu(子菜单)、Context Menu(上下文菜单)。 这次的案例用以前的索尼真机测试,就不贴代码和运行截图,主要贴些理论知识。菜单这块比较简单,代码实例看这里
XML语言是跨平台,JAVA对XML语言支持得比较好,android系统的应用层平台是JAVA做的,所以用XML。 XML解析比较简单。XML解析就是将获取到的数据分离出来,基本的网络数据传输,需要使用XML 比如天气预报,从网上获取的是XML文件,通过XML解析可以把天气状态读出来 例:
1 2 3 |
|
可得到 2009-07-31 晴 湿度:65%
还有一作用是保存你的数据,比如做个旅游网站,你需要把全国各个省、城市名称写到XML文件进行保存,在程序中通过解析读取调用。
Animation动画主要有两种:帧动画(Frame Animation)和补间动画(Tween Animation)。 补间动画主要包括对位置、角度、尺寸等属性的变化,而帧动画则是通过若干帧图片轮流切换显示的。
按顺序显示事先准备好的图片,跟动漫类似。主要用到的类AnimationDrawable,每个帧都是AnimationDrawable对象。 定义帧动画可以在代码直接进行。也可以通过XML文件定义,定义帧动画的文件存放在res/anim目录下。XML指定帧出现的顺序 及每个帧的持续时间。