Android开发周报:Android相机开发、内存泄漏总结

jopen 9年前

新闻

  1. 《在Google看来应用商店都将消亡,而搜索永存》 :智能手机用户每天都要和各种各样的App打交道,当然每天也要下载一定数量的App。而目前来说,要下载App,iOS用户需要去App Store,而Android用户则需要使用Google Play或是国内的应用商店。这似乎已经成为了理所当然的一件事。然而,根据国外媒体的报道,Google目前正在测试一种新的下载App的方法,在未来,Android用户也许不用再使用Google Play就可以直接下载App了。
  2. 《每20部Android手机就有1部被root》 :国外的研究人员研究结果表明:仅有10%的Android设备拥有预装“输入密码”设备加密的功能,这种情况会导致许多手机丢失或被偷之后陷入数据泄露的威胁境地。另外,每3部Android智能手机就有1部没有使用“输入密码”锁屏功能,这就让攻击者更容易访问设备了。而在iPhone中,仅有5%的用户没有启用这项功能。让情况变得更加糟糕的是,每20部Android手机中就有1部被root,而iPhone的越狱比例只有0.4%。

教程

  1. 《Android相机开发那些坑》 :Android系统提供了两种使用手机相机资源实现拍摄功能的方法,一种是直接通过Intent调用系统相机组件,这种方法快速方便,适用于直接获得照片的场景,如上传相册,微博、朋友圈发照片等。另一种是使用相机API来定制自定义相机,这种方法适用于需要定制相机界面或者开发特殊相机功能的场景,如需要对照片做裁剪、滤镜处理,添加贴纸,表情,地点标签等。这篇文章总结了Android相机开发的相关知识、流程,以及容易遇到的坑,希望能帮助今后可能会接触Android相机开发的朋友快速上手,节省时间,少走弯路。
  2. 《Android Studio2.0预览版之Android模拟器》 :新 Android模拟器的早期预览版现在可以试用了。作为Android Studio 2.0的一部分,除了用于测试的物理Android硬件外,最新版本的Android模拟器可帮助你针对各种屏幕尺寸和配置测试你的应用。此外,使用官方版Android模拟器可以让你使用最新版本的Android 进行测试。在此基础上,新Android模拟器的两大优势包括:速度和性能、易用性和强大的用户界面。
  3. 《指定App是否位于前台判断》 :有时候我们需要通过判断App是否运行在前台而进行一些UI处理。本文提供一个判断App是否处于前台的工具类,拥有多达5种判断方法,最后一种方法堪称Android黑科技,既可以突破Android5.0以上的权限封锁,获取任意前台App的包名,又不需要权限。
  4. 《Android内存泄漏总结》 :内存管理的目的就是让我们在开发中怎么有效的避免应用出现内存泄漏的问题。内存泄漏大家都不陌生了,简单粗俗的讲,就是该被释放的对象没有释放,一直被某个或某些实例所持有却不再被使用导致GC不能回收。作者从Java内存泄漏的基础知识开始,并通过具体例子说明了Android引起内存泄漏的各种原因,以及如何利用工具分析了应用内存泄漏。
  5. 《Android应用安全开发之源码安全》 :Android Apk很容易通过逆向工程进行反编译,从而是其代码完全暴露给攻击者,使Apk面临破解,软件逻辑修改,插入恶意代码,替换广告商ID等风险。本文从混淆保护、二次打包防护、SO保护、资源文件保护、反调试技术、应用加固技术几方面介绍了如何保护Apk。文中提到的技术非常实用,推荐大家大胆实践。
  6. 《Android子线程真的不能更新UI吗?》 :当一个程序第一次启动的时候,Android会同时启动一个对应的主线程,这个主线程就是UI线程,也就是ActivityThread。UI线程主要负责处理与UI相关的事件,如用户的按键点击、用户触摸屏幕以及屏幕绘图等。系统不会为每个组件单独创建一个线程,在同一个进程里的UI组件都会在UI线程里实例化,系统对每一个组件的调用都从UI线程分发出去。所以,响应系统回调的方法永远都是在UI线程里运行。那么子线程真的不能更新UI吗?阅读文章,看看作者是如何回答该问题的。
  7. 《APK瘦身实践》 :Apk瘦身应该是每一位Android工程师都会进行的一项工作。比如会开启minifyEnabled、开启shrinkResources、去除不相关的大型库、去除没有使用到的图片和代码。但即使这样,往往不能达到老板们的要求,所以我们需要进行深度的瘦身。本文介绍了几种减小Apk大小的技巧,相信对大家会有所帮助。
  8. 《Android M Launcher3主流程源码浅析》 :有些人可能觉得Launcher很高端,其实Launcher的实质也就是一个普通应用,它只是比普通应用多配置了Category的android:name=“android.intent.category.HOME”属性而已。当Android开机启动成功以后框架层会尝试启动包含上面属性配置的Activity,这样被启动的那个Activity就成了桌面。当我们按下设备的Home键时也会触发包含该属性的Activity。只不过当系统中只存在一个包含该属性的应用时,无论开机还是Home键触发都只会自动启动默认的;当存在多个时无论哪种触发都会弹出选择框进行选择设置。本文是一篇介绍Launcher3源码的文章,简单的介绍了Launcher3的加载流程。

开源项目

  1. uCrop :uCrop是一款漂亮又实用的图片裁剪库。
  2. SmoothCheckBox :这是一个自定义的CheckBox,提供了动画支持,并且颜色、边框都可以配置,集成也很方便。SmoothCheckBox比系统自带的CheckBox漂亮很多。
  3. blockcanary :BlockCanary是一个Android平台的一个非侵入式的性能监控组件,应用只需要实现一个抽象类,提供一些该组件需要的上下文环境,就可以在平时使用应用的时候检测主线程上的各种卡慢问题,并通过组件提供的各种信息分析出原因并进行修复。
  4. SwipeStack :SwipeStack实现了卡片堆积效果,支持手势滑动移除功能,效果很赞。

工具

  1. Androl4b :专为安卓测试、安全研究准备的一个虚拟机系统,里面集成了一系列Android应用程序评估测试所需的工具,可用于逆向工程和恶意软件分析。

 

来自: http://www.infoq.com/cn/news/2016/02/Android-weekly-apk