Android开发周报:反编译对抗研究、动手制作智能镜子

jopen 8年前

 

新闻

  1. 《Android Wear落地中国 谷歌增强安卓生态控制力》 :9月8日,由摩托罗拉推出的智能手表Moto 360二代作为国内发售的第一款搭载官方Android Wear的设备,正式在上海发布。值得注意的是,摩托罗拉这款智能手表搭载的不是Google Play和谷歌地图,而是联想应用商店和搜狗地图。这意味着,谷歌开始接受其安卓生态系统和原生服务分离的方式进入国内市场。这种现象在以前是无法想象的。
  2. 《安卓6.0正式版将不带夜间模式》 :在谷歌的第一个Android M开发者预览版中,新增了一个夜间模式主题,受到了很多人的欢迎,然而不知为什么,在之后的Beta2和Beta3中,这一功能不见了踪影。夜间模式对于用户在夜间的阅读体验也确实有很大提升,不知为何谷歌要做出取消该功能的决定,现在用户只能寄希望于第三方主题。
  3. 《安卓5.0/5.1份额突破20%,依然落后安卓4.4》 :近日谷歌公布了9月第一周的安卓系统版本数据,数据显示,Android Lollipop(5.0和5.1)的占有率首次突破20%,达到21%。但相比Android 4.4 KitKat 39.2%的占有率以及Android 4.1/4.2/4.3 Jelly Bean 31.8%的占有率仍存在很大差距。与此同时,整体来说安卓系统的碎片化问题依然非常严重。

教程

  1. 《Android分包MultiDex原理详解》 :当Android系统安装一个应用的时候,有一步是对Dex进行优化,这个过程有一个专门的工具来处理,叫DexOpt。DexOpt的执行过程是在第一次加载Dex文件的时候执行的。但旧版本的DexOpt有一个问题,它会把每一个类的方法id检索起来,存在一个链表结构里面,而链表的长度是用一个 short类型来保存的,导致了方法id的数目不能够超过65536个。当一个项目足够大的时候,就会报方法数超限有错误信息。为了解决方法数超限的问题,需要将该dex文件拆成两个或多个,本文给大家详细介绍了拆包的原理。
  2. 《Android Log工具类》 :Log是调试程序必不可少的工具,当然在Android开发过程中也会面临许多关于Log的问题,比如不容易找到自己设置打印的内容,找到Log但是定位到Java源码有不是很方便,对Log打印需要设置Tag,发布正式版本需要注释或者关掉很多Log开关等。一个优秀的Log工具可以帮助我们节约大量的调试时间,本文详细介绍了Log的优化策略,并给出了封装好的Log Utils。
  3. 《Android的消息机制之ThreadLocal的工作原理》 : Android的消息机制主要是指Handler的运行机制,Handler的运行需要底层的MessageQueue和Looper的支撑。 Handler创建的时候会采用当前线程的Looper来构造消息循环系统,那么Handler内部如何获取到当前线程的Looper呢?这就要使用 ThreadLocal了,ThreadLocal可以在不同的线程之中互不干扰地存储并提供数据,通过ThreadLocal可以轻松获取每个线程的 Looper。ThreadLocal是一个线程内部的数据存储类,通过它可以在指定的线程中存储数据。本文结合实例,分析了ThreadLocal的工作原理。
  4. 《Android内存泄露案例分析》 :一款优秀的Android应用,不仅要有完善的功能,也要有良好的体验,而性能是影响体验的重要因素之一。内存泄露是Android开发中常见的性能问题。本文作者以真实案例演示内存泄露从发现、分析定位到最终解决的全过程。
  5. 《Android程序的反编译对抗研究》 :对抗反编译是指让Apk文件或者dex文件无法正常通过反编译工具,而且有可能导致工具异常或者崩溃。目前大多数Android软件的反编译工具都是开源的,比如apktool、Dex2jar、baksamli,大家可以非常方便的从github下载并源阅读代码,然后找到可以利用的点,再在自己的软件中加入干扰代码,让反编译工具出现异常或者无法正常阅读代码。本文作者实践了对抗的详细过程。

开源项目

  1. HomeMirror :近年来智能化这个概念炒的很是火热,很多家电都已经实现了智能化,比如智能灯泡、电视等。或许你也在视频里看到过智能镜子,但应该从来没想到自己也能制作一块这样的镜子。HomeMirror提交不到一个月,获得了4000+的star,可想项目多么受欢迎。该项目实现了一块比较智能的镜子,镜子能显示日期、天气、股票以及一些娱乐信息等。项目中给出了包括软件、硬件的完整实现过程。当然,更强大的功能还需要你去发挥想像。如果英文不太好,也可以看 这里 的中文翻译。
  2. Colorful :这是一个基于Theme的Android动态换肤开源库。Colorful在实现换肤的过程中,无需重启Activity、无需自定义View。我们可以利用该项目方便的实现夜间模式功能。
  3. ExpandableLayout :由于移动设置屏幕比较小,有时候我们仅需要直接显示简介,当用户进行点击操作的时候才会展示所有内容。ExpandableLayout是一个可伸缩的自定义view,并且伸缩过程中伴随着体验非常好的动画效果。ExpandableLayout可以使用到列表展示、隐藏菜单,甚至也可以用于搜索提示。

工具

  1. Android平台主流应用程序模板 :虽然移动互联网在近年来势头很猛,但如今无论是Android还是iOS,大部分应用几乎没有下载量。有大量开发商其实并没有必要从头到尾去独立开发一款App,可以从网络上下载或购买各类应用模板,并利用它们构建自己的移动应用项目。这样不仅能够在为初创公司时省Money,还能够节省下大量时间。本文收集了市场上十套最具实用性的Android应用模板(收费),希望能够帮助大家轻松打造出属于自己的应用成果。 这里 是英文原文,内附模板下载地址。
  2. Android逆向工程工具集 :这是一个Android反编译工具的合集,收集了目前比较流行的反编译软件,项目持续更新中,你如果有更好的反编译工具,欢迎参与到项目中来。