201703-25 Android应用安全风险与防范 Hello,大家好,我是Clock。最近一段时间在做Android应用安全方面的功课,本文进行简单梳理方便以后Review,有错误和遗漏之处还请大家指出。代码混淆Android开发除了部分功能采用C/C++编码外,其余主要都是采用Java进行编码开发功能。Java应用非常容易被反编译,Android自然也不例外。只要利用apktool等类似的反编译工具,就可以通过安装包获取源代码。Google为了保护开发者的知识产权,为Android提供了ProGuard混淆方... 继续阅读 >
201702-22 作为 Android 开发者必须了解的 Gradle 知识 在Android开发中,很多时候我们不需要修改*.gradle文件太多,我们添加依赖、修改targetcompile、最低支持APIlevel,或者修改签名配置和build类型。其它更复杂一些逻辑,我们最后可能就是从StackOverflow中copy了一些自己也不太懂的代码。本文中我们将一步一步介绍Android工程中用到的gradle文件及其背后的原理。1.Groovy1.1语法Gradle文件其实是用Groovy脚本写的,我们都会写java,所以入门Groovy非常简单。... 继续阅读 >
201702-18 你可能不知道 Google 最近的「小动作」 了解我的人知道,我是一名不折不扣的G粉,一直在关注Google,最近Google有一些小动作,可能很多人不太了解,借这个机会,给大家普及下。而且断断续续有人问我一些这样的问题,比如:Android的前景怎么样?我想学习编程,到底学什么更好呢?移动互联网已经走下坡路了,下一个风口是什么呢?对于Google的一些动作,我有一些思考以及自己的看法,分享给你们,很可能看完之后以上问题就有答案了。PWA... 继续阅读 >
201702-09 Android应用瘦身,从18MB到12.5MB 开篇语前阵子老大交给了我一个任务,主要是帮我们开发的直播应用做Android端的安装包瘦身,花了大概一周的时间把安装包从18MB减小到了12.5MB。原本完全可以优化到10MB之下,但由于其他原因的限制,所以目前阶段只到12.5MB为止。在此记录一下优化的思路和用到的工具,方便自己以后Review,有需要的童鞋也可供参考。瘦身的目的从目的导向来看,我们是不会无缘无故去做一件事情的,那我们对应用瘦身的目的... 继续阅读 >
201701-16 6 个可以让代码变得更整洁的 Android 库 Android开发是有趣的——这毫无疑问。然而,还是有很多平台迫使我们编写重复的样板代码。很多时候这都与需要你处理的UI组件相关。有一些确实是你需要的,当你希望你的应用程序架构能够干干净净的时候。有很多操作在后台异步执行;事实上,最后很容易成为一堆意大利面条似的代码,不可读或者就是让人感觉不正确。今天,我们将看看6个可以帮助保持代码清晰和可读性的Android库,并且使用示例项目以方便你可以看到库的作用。... 继续阅读 >
201701-16 Android性能优化之被忽视的优化点 对于性能优化这个知识点来说,实在是太广了,博主本人也一直非常关注这方面的学习,而对于性能优化来说它包括了非常非常非常多方面,比如:I/O的优化、网络操作的优化、内存的优化、数据结构的优化、代码层次的优化、UI渲染优化、CPU资源使用率的优化、异常处理的优化等等等等。。。本篇文章就博主本人的理解来讲述一些在Android开发中可以优化的地方ArrayList和VectorArrayList和Vector都是内部以数组实现的Li... 继续阅读 >
201701-03 一个简单的网速显示悬浮窗 2016转眼就要过去了,刚刚参加完学院举办的元旦晚会,看了看系里的大牛的各种事迹,内心感慨万分。回来继续安心做我的小码农,顺便更一下将近一个月没有更新的博客。这次带来的是一个悬浮窗网速显示计,先看下效果:demo这里主要是在桌面上显示一个悬浮窗,利用了WindowManager以及Service,接下来看看如何实现这样一个效果:首先APP必须获得在桌面上显示悬浮窗的机会,很多第三方ROM都限制了这一权限,我们... 继续阅读 >
201701-03 一道经典的Android面试题 摘要今天,给各位分享一个很有意思,而且非常经典的Android面试题。试题引入题目:原Activity启动一个新Activity,然后关闭这个新Activity回到原Activty,在这个过程中这两个Activity的生命周期经历了怎样的变化?很多面试者给出了这样的答案:activity_error.png答案真的如此吗?╮( ̄▽ ̄)╭相信一些有经验的老司机们已经开始笑了~其实,这是一个很简单的问题,打印一下Log日志就知道... 继续阅读 >
201612-30 Android开发必知的java嵌套类 嵌套类指定义在另一个类的内部的类,嵌套类的存在只是为了他的外围类。嵌套类有四种:静态成员类,非静态成员类,匿名类,局部类。静态成员类是最简单的一种嵌套类。最好把它看做是一个普通的类,只是恰好定义在另一个类的内部。静态成员类可以访问外围类的所有成员,包括那些私有的变量。静态成员类同样遵守可访问性规则,如果将它定位私有,它就指在外围类的内部才能访问到。在Android中最为熟悉lis... 继续阅读 >
201612-19 安卓下的刮刮卡摸奖的实现 效果如下:呱呱卡开奖前呱呱卡开奖后实现思路一张呱呱卡有三层,最底层我用一个TextView控件显示中奖内容,中间层是刮完之后的显示图样,最上面一层是刮刮卡的封面。手指刮除封面的过程就是把刮刮卡最上面一层裁剪的过程。涉及的知识点canvas.clipPath(),Path类,Region.Op类onDraw方法和onTouchEvent方法的配合核心代码如下:publicclassLotteryViewextendsView{p... 继续阅读 >
201612-08 Android通用标题栏组合控件 由于项目中经常用到此种组合控件,就封装了下,具体效果看下图,老司机可以绕道哈!Image.png一、主要功能支持左右图标动态设置支持左右、中间文字动态修改支持字体大小、颜色修改支持左右图标,左中右文字隐藏显示支持左右图标和文案的点击监听二、基本使用方式<com.example.android.customvView.CustomNavigatorBarandroid:id="@+id/customView"android... 继续阅读 >
201612-08 Android 混淆从入门到精通 简介作为Android开发者,如果你不想开源你的应用,那么在应用发布前,就需要对代码进行混淆处理,从而让我们代码即使被反编译,也难以阅读。混淆概念虽然容易,但很多初学者也只是网上搜一些成型的混淆规则粘贴进自己项目,并没有对混淆有个深入的理解。本篇文章的目的就是让一个初学者在看完后,能在不进行任何帮助的情况下,独立写出适合自己代码的混淆规则。说在前面这里我们直接用AndroidStudio来说明如何进... 继续阅读 >
201612-06 在线看Android系统源码,相见恨晚的几种方案 前言:最近在研究MediaCodec,u盘坏了,之前下载的源码也就自然没有了,真是个难过的事情,不能因为没有源码了,就阻挡我的计划了呀,于是就是今天一文,在线看Android源码,加之此前很多人也有向我留言,如何看android系统的源码,今天来敲黑板,划重点了。不管是做Android底层开发,还是做应用层开发,在Android这条路上走下去,必须对于Android源码够了解,如某一个功能,某一个机制,或者某一个API,它到底是如何实现... 继续阅读 >
201612-06 Android APK 更新之路 一、前言提到APK更新,大家可能会想到友盟(umeng)更新,市场上已有数万款应用在使用友盟自动更新的服务。但友盟于2016年10月15日起停止了更新服务。那么我们需要自己处理APK更新的业务。本篇主要讲解以下知识点:使用DownloadManager更新基于RxJava和retrofit扩展的Android线程安全http请求库下载APK更新热更新(AndFix)我们来啾啾第一个知识点。Downlo... 继续阅读 >
201612-06 Android 反编译初探 应用是如何被注入广告的 一、概述最近和朋友聊天,发现一些灰色产业链通过批量反编译市场上的apk,然后进行注入广告,再重新打包上渠道。我想大家都不希望自己家的产品或者自己的app那么容易被“占据”,但是想要自身能够防御,首先要知道对方的手段。所以本篇博客的目的不是教大家如何破解别人的app,而是让大家提升安全防御意识,对我们的应用做一些必要的防护,让自己的app不会那么容易被“占领”。因为是初探,也不需要掌握太多的技术... 继续阅读 >
201612-02 Android控件布局属性全解(必看必会) Android功能强大,界面华丽,但是众多的布局属性就害苦了开发者,下面这篇文章结合了网上不少资料.第一类:属性值为true或falseandroid:layout_centerHrizontal水平居中(Hrizontal表示水平)android:layout_centerVertical垂直居中(Vertiacl表示垂直)android:layout_centerInparent相对于父元素完全居中android:layout_alignParentBottom贴紧父元素的下边缘(align表示使什么成为一行)andro... 继续阅读 >