写点什么

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

  • 2015-09-17
  • 本文字数:2351 字

    阅读完需:约 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 反编译工具的合集,收集了目前比较流行的反编译软件,项目持续更新中,你如果有更好的反编译工具,欢迎参与到项目中来。

感谢徐川对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-09-17 19:003626
用户头像

发布了 121 篇内容, 共 39.8 次阅读, 收获喜欢 6 次。

关注

评论

发布
暂无评论
发现更多内容

积分商城设计思考

林一

幂等性 设计实践 重试 积分商城

千亿级数据迁移 mongodb 成本节省及性能优化实践(附性能对比质疑解答)

杨亚洲(专注MongoDB及高性能中间件)

MySQL 数据库 mongodb 架构 分布式数据库mongodb

圆梦腾讯之路!6面阿里、5面字节、4面腾讯,终斩腾讯Offer

Java 编程 架构 面试

区块链技术如何赋能医学成像?

CECBC

蜜蜂圈软件开发|蜜蜂圈APP系统开发

看CarbonData如何用四招助力Apache Spark

华为云开发者联盟

spark Apache Spark ACID CarbonData 分布式集群计算框架

2021Android高级进阶学习资料,已拿意向书!

欢喜学安卓

android 程序员 面试 移动开发

【TcaplusDB】世界青年联欢节| 让世界看到我们的光彩!

TcaplusDB

nosql tencentdb TcaplusDB

智安小区建设,智慧安防小区改造建设方案

Bi Token质押挖矿软件系统开发方案

[TcaplusDB知识库]查看TcaplusDB集群状态

TcaplusDB

nosql tencentdb TcaplusDB database

BTQQ挖矿/比特全球/BT全球系统APP开发简介

一个小坑

IT蜗壳-Tango

6月日更

2021Android高级面试题及答案,Android篇

欢喜学安卓

android 程序员 面试 移动开发

你不知道的 Linux 使用技巧

学神来啦

Test

bobcatzoo

7月日更,红心向党,党员入驻,即送马克杯~

InfoQ写作社区官方

7月日更 热门活动

测量电压调节器输出纹波和开关瞬变的方法

不脱发的程序猿

硬件研发 输出纹波测量 开关瞬变测量 电源测试 测量电压调节器

AI框架中图层IR的分析

华为云开发者联盟

mindspore IR

百度工程师手把手教你实现代码规范检测工具

百度开发者中心

百度 代码规范

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」

Java 编程 程序员 架构 面试

UC生态系统APP开发详情

秀出天际的SpringBoot笔记,让开发像搭积木一样简单

泪目!跳槽太不容易,蚂蚁金服三轮面试,四个小时灵魂拷问

Java 面试

企业资产数据大屏,打破固有管理思维僵局,杜绝资产无效流失

一只数据鲸鱼

数据可视化 资产管理 金融资产 金融大屏

扩展ADO.net实现对象化CRUD(.net core/framework)

Spook

.net ORM ado

DOLLAR CAT/Dcat币挖矿系统开发

在C++中,你真的会用new吗?

华为云开发者联盟

c++ 内存 new new operator operator new

区块链的正确应用方式与前景

CECBC

Tubacle挖矿系统APP开发搭建

GaussDB(for Redis)揭秘:Redis存算分离架构最全解析

华为云开发者联盟

redis 华为云 GaussDB(for Redis) 存算分离架构 中国系统架构师大会SACC

Android开发周报:反编译对抗研究、动手制作智能镜子_移动_郭亮_InfoQ精选文章