
android
文章平均质量分 58
CankingApp
微博:http://weibo.com/canking666
Blog: http://www.canking.win
展开
-
你最了解的 SharedPreference和ContentProvider 知多少?
在技术学习的道路上,往往最常见、用的最多地方,却有着容易忽略的技术细节。某个时间点蓦然回首,才发现最应该了解和掌握的技术基础,却由于缺少总结和记录、或者是因为常态思维固化缺少场景去思考,却显得那么陌生。这篇文章将从作者自身的角度,去重新认识SharedPreference和ContentProvider这两个控件,并且以后也会在博客中有意识的记录类似的技术细节,防止这些基础的技术细节问题再次被...原创 2018-04-01 18:50:01 · 1099 阅读 · 0 评论 -
Java内存问题思考
前些天,有人问到 “开发过程中常见的内存泄漏都有哪些?”,一时脱口而出:静态的对象中(包括单例)持有一个生命周期较短的引用时,或内部类的子代码块对象的生命周期超过了外面代码的生命周期(如非静态内部类,线程),会导致这个短生命周期的对象内存泄漏。总之就是一个对象的生命周期结束(不再使用该对象)后,依然被某些对象所持有该对象强引用的场景就是内存泄漏。这样回答很明显并不是问答人想要的都有哪些场景,所...原创 2018-03-26 19:13:28 · 1066 阅读 · 1 评论 -
安卓平台中的动态加载技术分析
安卓平台的动态加载原理,本质其实还是利用java相关知识实现。然而java语言中,开发人员能通过程序进行动态操作class的,主要是字节码生成和类加载器这两部分的功能。本文中也主要是围绕这两方面的技术,展开在安卓平台上的应用分析。阅读本文,一起宏观理解安卓插件化,热修复,模块化,AOP,Java类加载等知识。动态加载技术分析一、Java基础知识1、虚拟机类的加载剖析Java虚拟机把描述类的数据从Cl原创 2018-01-08 17:51:37 · 912 阅读 · 0 评论 -
Lifecycle+Retrofit+Room完美结合 领略架构之美
安卓开发技术发展到现在已经非常成熟,有很多的技术专项如插件,热修,加固,瘦身,性能优化,自动化测试等已经在业界有了完善的或者开源的解决方案。 作为一枚多年的安卓研发,有必要学习或了解下这些优秀的解决方案,领略那些行业开创者的思想魅力,然后转化为自己的技术技能,争取应用到日常的开发中去,提高自己研发水平。Lifecycle+Retrofit+Room 云端漫步飞一般的感觉安卓项目的开发结构原创 2017-12-11 16:18:00 · 7708 阅读 · 7 评论 -
Gradle插件开发 APK瘦身资源自定义7z压缩
APK瘦身实战 资源自定义7z压缩项目开发中,随着业务的增长,常常需要在apk编译阶段对包代码或是资源做一定的自定义修改,比如热修复,插件生成,无埋点统计,渠道包生成等等。但是公司项目业务开发人员基本上都很少接触到相关技术,这里以学习的态度,实现一套用7zip压缩apk资源文件的gradle插件。APK瘦身在行业内已经有很多成熟的开源技术体现方案,如美团Android App包瘦身优化实践这篇博客中原创 2017-11-23 10:04:43 · 2200 阅读 · 2 评论 -
免sdk实现微信/支付宝转账打赏功能
安卓开发者都应该有一个属于自己的APP发布到市场,可以完善自己的技术站之外,加入广告,还可以有一份小收入。 但是这个年代,各家的应用市场是不欢迎带广告sdk的个人开发者应用的。还好我们可以用插件技术加入广告sdk,或者直接想一种方面实现打赏功能,让用户通过支付宝或微信转账到自己账户。免sdk实现 微信/支付宝 转账打赏功能安卓个人开发者如果如果想着App里实现支付打赏功能,嵌入sdk不说成本大外,原创 2017-09-21 20:00:46 · 5672 阅读 · 2 评论 -
知识总结之 插件化学习 Hook系统方法分析
这里主要讲的Hook,是利用java上的动态代理实现替换系统某个类,在方法调用过程中,利用反射,插入自己代码逻辑的一种方式。安卓插件化学习 Hook系统服务分析Hook技术主要用的是java的动态代理,掌握类动态代理,其实不难理解Hook原理,只不过是找到一个我们需要的Hook点,然后动态代理获取到系统目标类的代理对象,然后就可以在InvocationHandler中对想要修改的方法逻辑插入自己需求原创 2017-06-15 16:13:03 · 1334 阅读 · 0 评论 -
知识总结 插件化学习 Binder机制原理
Binder是android系统特有IPC方式,安卓平台中的各种服务交互基本都是Binder机制实现,理解和掌握Binder机制的实现原理可有效提升软件性能优化点,同时Binder机制的应用也是动态代理方式实现插件化基础。安卓插件化学习 Binder机制原理分析网上虽然已有很多Binder类似的优秀分析,本文处于自我学习目的,把我学理解和认识的东西记录一下。Binder设计结构理解1、通信进程两端两原创 2017-06-05 20:49:43 · 768 阅读 · 0 评论 -
知识总结 插件化学习 Activity加载分析
安卓插件化学习 插件Activity加载方式分析实现一套插件化项目很容易,但是投入生产环境,却很难。自己以学习为目的,主要分析其实现原理。在工作和学习过程中虽然用到或了解到多家安卓插件化实现方式及原理,自己并没有动手实现或参与公司插件化的研发,so业余时间从基础做起,总原创 2017-05-19 18:26:28 · 891 阅读 · 0 评论 -
知识总结之 插件化基础 java反射与代理
Java平台的反射机制是代码动态加载和调用的基本途径,在安卓系统源码中也用到了大量的反射动态加载类。反射也是安卓平台插件化实现的必要掌握的基础知识。代理是客户端灵活操作对象,间接的低耦合度操作对象的有效途径,也是插件化必要掌握知识。安卓插件化基础 java反射与代理一、反射java中反射机理比较常用,这里主要以代码实例展示其用法。什么是反射?指程序运行时 加载、获取一个未知类(已知类名)及类属性和方原创 2017-05-11 17:09:59 · 972 阅读 · 0 评论 -
知识总结之 插件化基础ClassLoader
安卓插件化技术已经作为一个优秀的合格研发必备要求,学习和掌握现有不同种类动态加载方案 是提升个人技术深度有效途径。插件化基础 ClassLoaderClassLoader是什么?ClassLoader 是将java编译后的字节码加载到虚拟机内存中的用到工具类。Android平台虚拟机Dalvik/ART可以运行的字节码为.dex文件,Java平台JVM虚拟机可以被加载的字节码为.class文件。针对原创 2017-05-05 18:25:41 · 745 阅读 · 0 评论 -
知识总结之 JobQueue 源码解析
知识总结之 JobQueue 源码解析本文主要分析及调研开源项目android-priority-jobqueue的基本原理及知识点,目的为更加深入的了解安卓平台后台 任务处理,及多线程调度的理解。Android Priority Job Queue一、JobQueue是什么? Priority Job Queue is an implementation of a Job Queue spe原创 2017-05-02 15:22:11 · 2797 阅读 · 0 评论 -
知识总结之 AsyncTask 源码解析
知识总结之 AsyncTask 源码解析虽然这个类没什么特别地方,也是很常用的类,前段时间面试发现很多公司还是很喜欢问到这个类的原理,及使用场景,so,这里做下总结。一、 一句话概括「AsyncTask = ThreadPool + Handler;」AsyncTasks是android提供的轻量级执行异步任务的类,提供了执行耗时任务的方法,及各个任务阶段UI线程回调。二、 优缺点优点 使用简单原创 2017-04-28 19:01:30 · 726 阅读 · 0 评论 -
Gradle基本认识及理解
Gradle基本认识及理解Gradle是什么?gradle首先可以理解为一个项目构建工具,或者理解深入点,是一种编程框架,安卓项目最流行原创 2016-12-09 17:09:49 · 2158 阅读 · 0 评论 -
辅助功能 之 小米手机悬浮窗权限
辅助功能 之 小米手机悬浮窗权限最近做项目遇到小米手机比较人(zhuang)性(bi)化的悬浮窗权限,当在小米手机上安装完应用后默认是关闭这个权限的,需要用户手动到应用详情页打开该权限。重(keng)要(die)的是使用这个权限开关系统window后, 小米手机不给任何提示就是不给弹窗。一开始以为是自己代码逻辑写错了,半天才反应过来,小米还有个这个权限,当天6.0以上安卓系统也需要这个权限,但是会有原创 2016-06-02 19:30:40 · 18657 阅读 · 2 评论 -
Android Theme-安卓样式换肤实践方案
所谓的主题切换,就是能够根据不同的设定,呈现不同风格的界面给用户,也就是所谓的换肤。 本文主要总结了目前作者所知的两种实现方案.概述一直以来,认为App换肤是件很酷的东西,不同用户可以自己打造喜欢的颜色,类似墨迹,QQ,或是软件夜间模式,给用户很酷的体验.在写这个换肤实践方案之前,我也参考了其他人的一些总结,基本上大家都是从这几个思路去实现, 如果出现有误或者不够详细的地方,希望大家提出意见或者自行原创 2016-03-31 18:05:48 · 3171 阅读 · 0 评论 -
安卓通知栏管理详解及分析 NotificationListenerService
NotificationListenerService 安卓通知栏管理详解及分析一. 方法概述在api 18前可以通过辅助功能’AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED’或是反射活取通知栏相关信息。 现在我们可以根据NotificationListenerService类非常容易的活取通知回调相关信息。二. NotificationLis原创 2016-03-11 18:57:33 · 15048 阅读 · 13 评论 -
备份已安装应用的apk包技术实现方案
安卓设备上备份已安装应用的apk包技术实现方案需求的目的在只有安装应用, 没有该应用的apk,而我们又想活取应用apk,用来分享给别人,或是应用的备份, 说是应用的增量升级的, 怎么办?本文将告诉你如何靠谱的导出一个已安装应用的apk.了解相关目录安卓设备上根据安卓方式的不同,安装的数据存放路径也不同1. system/app此类应用是系统初始化时候安装完成的, 存放在 ‘system/app’ 目原创 2016-02-04 19:30:32 · 5140 阅读 · 1 评论 -
Android m6.0权限问题调用封装utils类 - Permission in Android M
Android 6.0系统中权限问题调用 - Permission in Android M概述安卓平台权限一直有被流氓应用随便利用诟病, android M的发布彻底解决了这一问题,取而代之的是,app不得不在运行时一个一个询问用户授予权限。 Android 6.0(api23)系统中,做了一些限制, 开发者在使用到每条权限时必须自己调用相关代码请求.如果没有获得某项权限,直接使用相关功能,则会导原创 2015-11-06 19:30:51 · 7886 阅读 · 0 评论 -
安卓中的增量升级实现-SmartUpdate
SmartUpdate-增量升级增量升级意义增量升级即将需要升级的文件与新版文件做差分对比,产生差分包patch,然后将只差分包patch下发给用户在客户端生成新版文件.达到节省流量的效果.在移动开发流量至上时代,这种增量升级方法非常实用. 经过测试验证, 增量的效果还是非常不错的.增量升级方法增量升级需要新旧版本差分对比,产生差分包, 然后与老版文件合并成新版.这个过程重要的是怎么产生差分包?怎原创 2015-10-15 17:14:27 · 2160 阅读 · 0 评论 -
Android Studio中实战Jni开发
AS中实战Jni开发Jni(Java Native Interface )其实是Java平台与C/C++及其他语言交互的接口,基于Android SDK开发的应用用的事java语言,自然可以通过Jni调用C/C++代码满足一些特殊需求。为了便于提高安卓平台JNI开发模式,Google提供了一套工具集Native Development Kit(NDK)来调用动态库,使得开发者可以快速方便的完成JNI原创 2015-09-20 02:06:07 · 1714 阅读 · 0 评论 -
Android ListView动画特效实现原理及源码
Android 动画分三种,其中属性动画为我们最常用动画,且能满足项目中开发几乎全部需求,google官方包支持3.0+,我们可以引用三方包nineoldandroids来失陪到低版本。本例子中就是用属性动画实现效果。 对普通的View做动画,我们只要定义好要的动画ObjectAnimator或AnimatorSet,然后设置属性启动及可。但是,对ListView做动画应该如何、什么原创 2014-07-04 20:01:34 · 4897 阅读 · 1 评论 -
android 源码 下载 方法
Android源代码下载 第一次下载android源码,难免会遇到些小白问题,so,做下记录。 英文好的话可以直接看这里:http://source.android.com/source/downloading.html 一、新建你的源代码的文件夹:$ mkdir ~/bin$ PATH=~/bin:$PATH原创 2014-04-09 18:30:18 · 1715 阅读 · 0 评论 -
android ANR问题分析
一:什么是ANRANR:Application Not Responding,即应用无响应二:ANR的类型ANR一般有三种类型:1:KeyDispatchTimeout(5 seconds) --主要类型按键或触摸事件在特定时间内无响应2:BroadcastTimeout(10 seconds)BroadcastReceiver在特定时间内无法处理完成3:Serv原创 2014-04-04 14:16:47 · 4485 阅读 · 0 评论 -
android 超强效率、性能优化(转载)
假如要Google Play上做一个最失败的案例,那最好的秘诀就是界面奇慢无比、耗电、耗内存。接下来就会得到用户的消极评论,最后名声也就臭了。即使你的应用设计精良、创意无限也没用。耗电或者内存占用等影响产品效率的每一个问题都会影响App的成功。这就是为什么在开发中确保最优化、运行流畅而且不会使Android系统出问题是至关重要的了。这里不需要讨论高效编程,因为我们不会关心你写的代码是否能够经得原创 2014-04-04 10:15:56 · 1884 阅读 · 0 评论 -
Android apk安全 反编译及防反编译 简单记录
自己辛辛苦苦写的软件发现被别的无良程序员copy,更可恨的是还发布到市场,让自己的劳动成果及产品受到莫名的伤害,很可耻,so,我们还是先学习下反编译的原理,分析下如何才能防止别人反编译自己的软件。一、下载apktool,反编译资源文件,可以获得项目各个dpi图片,及媒体文件,可看到AndroidManifest.xml配置文件 1、下载地址http://code.go原创 2014-04-03 14:09:34 · 2589 阅读 · 0 评论 -
android 获取apk信息
使用aapt工具,不能用的可以先执行以下命令:cd $ANDROID_HOME/platform-tools ln -s ../build-tools/19.0.0/aapt aapt ln -s ../build-tools/19.0.0/lib lib ln -s ../build-tools/19.0.0/aidl aidl 测试:$aapt原创 2014-04-01 19:50:01 · 1794 阅读 · 0 评论 -
Git 版本恢复
Git版本恢复要要比SVN复杂但很方便,SVN版本恢复我们通常就是把本地新文件备份,然后从服务器上update到指定版本的文件,对本地文件有一定程度的不安全性。而Git对文件安全性高,文件处于多个状态(未跟踪,未更新,缓存区,提交本地库,push到服务器),各个状态我们保证数据安全的情况下回复任意历史版本。下面我们依次总结下各个状态恢复的方法:想要回复到以前某次提交可以用基本用法:原创 2014-03-20 20:07:27 · 2100 阅读 · 0 评论 -
Ubuntu Java Error
安装环境:Ubuntu 13.10 x86_x64第一步:运行以下命令查看你的 Ubuntu 是32位还是64位的:[plain] view plaincopy$ file /sbin/init 第二步:查看是否已经有 Java 安装在你的系统上:[plain] view plaincopy$ java -versi转载 2014-03-04 12:58:57 · 1126 阅读 · 0 评论 -
进程间通信、需要AIDL
你知道你需要进程间通信、需要AIDL(以及Binder),那么可以默认你对这些概念已经有了一些了解,你(大致)知道它们是什么,它们有什么用,所以为了节约大家的眼力和时间,在此我不复制粘贴网上泛滥的博客或者翻译冗长的android文档。 关于AIDL的介绍在文档:docs/guide/developing/tools/aidl.html 关于IBinder的介绍在转载 2014-02-18 20:08:13 · 786 阅读 · 0 评论 -
Ubuntu 文件权限 修改及查看
一、查看linux文件的权限:查看path路径下名为filename的文件或文件夹的权限:Java代码 ls -l path/filename 查看path路径下的所有文件的权限:Java代码 ls -ls path 查看linux文件夹的权限:Java代码 ls原创 2014-01-26 13:32:47 · 7049 阅读 · 1 评论 -
Android 自定义View
想要了解android自定义View,去设计和实现自己想要的View,这里从最基础的知识透析安卓自定义控件实现机理。首先我们来了解下做自定义View,必须知道的基础知识:android.graphics包是核心渲染包,它提供了一些初级图形工具,诸如画布、颜色过滤器、画笔等,可以让你直接在屏幕上进行图像处理。这个包中提供了很多类。 1、Canvas--画板原创 2014-01-15 18:11:22 · 1664 阅读 · 0 评论 -
android 签名相关
加密技术是最常用的安全保密手段,利用技术手段把明文变为密文(加密)传送,到达目的地后再用相同或不同的手段还原(解密)。常见的加密算法可以分成三类,对称加密算法,非对称加密算法和HASH算法。前两类是可逆的,即加密后的密文仍然可以转换成明文,但Hash算法是不可逆的,即使在有源码及密文的情况下也无法将明文还原出来,如MD5算法。 由于Java的语言特点及Android的开放性质翻译 2014-01-08 23:56:16 · 2738 阅读 · 0 评论 -
Logcat adb 使用技巧
本文介绍如何在 shell 命令行中过滤 adb logcat 输出的几个小技巧。开发当中经常看到别人的 log 如洪水般瞬间刷满了屏幕,对自己有用的信息都被淹没了,影响心情也影响效率。下面是几个我所知道的过滤方法。1. 只显示需要的输出,白名单最方便的当然是通过管道使用 grep 过滤了,这样可以使用 grep 强大的正则表达式匹配。简单的匹配一行当中的某个字符串,例如 MyApp:转载 2013-12-27 10:12:15 · 1785 阅读 · 0 评论 -
android 屏幕截屏源码分享
屏幕截屏源码分享原创 2013-12-26 15:04:42 · 2072 阅读 · 2 评论 -
论计算机语言
计算机语言解释性与编译分类论 1、web page script languages 就是网页代码,比如Html、javascript、Css、Asp、Php、Xml都应该属于此类(照蔡的意思,Html不应该属于anguages的,可能他觉得太简单了吧,不过我觉得Html也应该算的,大家爱听谁的就听谁的好了,这个不重要) 2、Interpreted Languages原创 2013-12-26 09:51:49 · 1398 阅读 · 0 评论 -
android Ant初次接触了解
1 Ant是什么?Ant是一种基于Java和XML的build工具。Apache Ant 是一个基于 Java的生成工具。生成工具在软件开发中用来将源代码和其他输入文件转换为可执行文件的形式(也有可能转换为可安装的产品映像形式)。随着应用程序的生成过程变得更加复杂,确保在每次生成期间都使用精确相同的生成步骤,同时实现尽可能多的自动化,以便及时产生一致的生成版本2 下载、安装Ant转载 2013-12-20 16:35:53 · 2306 阅读 · 0 评论 -
android ubuntu下ant环境搭建
学习用ant 工具在ubuntu下编译android项目原创 2013-12-19 16:47:29 · 1607 阅读 · 0 评论 -
android Repo 初识
Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的分布式版本控制软件,它不同于Subversion、CVS这样的集中式版本控制系统。在集中式版本控制系统中只有一个仓库(repository),许多个工作目录(working copy),而像Git这样的分布式版本控制系统中(其他主要的分布式版本控制系统还有BitKeeper、Mercurial、GNU转载 2013-12-19 09:50:46 · 1097 阅读 · 0 评论 -
android 开源项目地址收集
收集整理网上android免费资源原创 2013-11-21 17:11:25 · 1077 阅读 · 0 评论