Android资源备份记录
第一部分:工具类
主要包括那些不错的开发库,包括依赖注入框架、图片缓存、网络相关、数据库ORM建模、Android公共库、Android 高版本向低版本兼容、多媒体相关及其他。
一、依赖注入DI
通过依赖注入减少View、服务、资源简化初始化,事件绑定等重复繁琐工作
android快速开发框架
特点: (1) 依赖注入:包括view,extras,系统服务,资源等等
(2) 简单的线程模型,通过annotation表示方法运行在ui线程还是后台线程
(3) 事件绑定:通过annotation表示view的响应事件,不用在写内部类
(4) REST客户端:定义客户端接口,自动生成REST请求的实现
(5) 没有你想象的复杂:AndroidAnnotations只是在在编译时生成相应子类
(6) 不影响应用性能:仅50kb,在编译时完成,不会对运行时有性能影响。
PS:与roboguice的比较:roboguice通过运行时读取annotations进行反射,所以可能影响应用性能,而AndroidAnnotations在编译时生成子类,所以对性能没有影响
帮你处理了很多代码异常,利用annotation使得更少的代码完成项目
利用annotation帮你快速完成View的初始化,减少代码
依赖注入,适用于Android和Java
二、图片缓存
图片缓存,目前使用最广泛的图片缓存,支持主流图片缓存的绝大多数特性。
square开源的图片缓存
特点:
(1)可以自动检测adapter的重用并取消之前的下载
(2)图片变换
(3)可以加载本地资源
(4)可以设置占位资源
(5)支持debug模式
图片缓存,包含内存和Sdcard缓存
特点:
(1)支持预取新图片,支持等待队列
(2)包含二级缓存,可自定义文件名保存规则
(3)可选择多种缓存算法(FIFO、LIFO、LRU、MRU、LFU、MFU等13种)或自定义缓存算法
(4)可方便的保存及初始化恢复数据
(5)支持不同类型网络处理
(6)可根据系统配置初始化缓存等
Cube ImageLoader 阿里巴巴一淘使用的图片加载,综合了Android-Universal-Image-Loader 和 square 等组件优点,简单易用,良好的中文文档支持 项目地址: https://github.com/etao-open-source/cube-sdk Demo地址: https://github.com/liaohuqiu/cube-sdk/raw/master/cube-sdk-sample.apk 文档介绍: http://cube-sdk.liaohuqiu.net/ 效果图: Screen Shot
三、网络相关
Android异步Http请求
特点:
(1) 在匿名回调中处理请求结果
(2) 在UI线程外进行http请求
(3) 文件断点上传
(4) 智能重试
(5) 默认gzip压缩
(6) 支持解析成Json格式
(7) 可将Cookies持久化到SharedPreferences
异步加载,更少代码完成Android加载
Java异步Http请求
支持图片、json、http post等异步请求
Http缓存
特点:
(1) 根据cache-control、expires缓存http请求
(2) 支持同步、异步Http请求
(3) 在匿名回调中处理请求结果
(4) 在UI线程外进行http请求
(5) 默认gzip压缩
square开源的http工具类
特点:
(1) 支持SPDY( http://zh.wikipedia.org/wiki/SPDY )协议。SPDY协议是Google开发的基于传输控制协议的应用层协议,通过压缩,多路复用(一个TCP链接传送网页和图片等资源)和优先级来缩短加载时间。
(2) 如果SPDY不可用,利用连接池减少请求延迟
(3) Gzip压缩
(4) Response缓存减少不必要的请求
RESTFUL API设计
Android异步网络请求工具,支持缓存、REST等等
四、数据库 orm工具包
orm的db工具类,简化建表、查询、更新、插入、事务、索引的操作
Android Sqlite orm的db工具类
特点:
(1) 性能佳
(2) 简单易用的API
(3) 内存小好小
(4) 库大小小
Android Sqlite orm的db工具类
五、Android公共库
Google的基于java1.6的类库集合的扩展项目,包括collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O等等. 这些高质量的API可以使你的JAVa代码更加优雅,更加简洁
Google提供的网络通信库,使得网络请求更简单、更快速
Android公共库
包括: (1)缓存(图片缓存、预取缓存、网络缓存)
(2) 公共View(下拉及底部加载更多ListView、底部加载更多ScrollView、滑动一页Gallery)
(3) Android常用工具类(网络、下载、Android资源操作、shell、文件、Json、随机数、Collection等等)
xUtils 项目地址
基于Afinal,包含DbUtils、ViewUtils、HttpUtils、BitmapUtils四大模块,可用于快速开发
Afinal是一个android的ioc,orm框架,内置了四大模块功能:FinalAcitivity,FinalBitmap,FinalDb,FinalHttp。通过finalActivity,我们可以通过注解的方式进行绑定ui和事件。通过finalBitmap,我们可以方便的加载bitmap图片,而无需考虑oom等问题。通过finalDB模块,我们一行代码就可以对android的sqlite数据库进行增删改查。通过FinalHttp模块,我们可以以ajax形式请求http数据
UltimateAndroid是一个快速开发Android应用的框架,框架目前主要包含的功能有View Injection,ORM,异步网络请求和图片加载,自动化脚本测试,磁盘LRU等功能.同时提供了类似于TripleDes、Webview快速设置、Md5处理、String处理,Https处理等常用工具类,还有超过100多种UI控件效果。
六、多媒体相关
跨平台的2d游戏框架,支持Android、IOS、Linux、Windows等众多平台
是一款Android与iOS平台上的全能多媒体开发框架
特点:
(1) 全面支持硬件解码与GPU渲染
(2) 能够流畅播放720P甚至1080P高清MKV,FLV,MP4,MOV,TS,RMVB等常见格式的视频
(3) 在Android与iOS上跨平台支持 MMS, RTSP, RTMP, HLS(m3u8)等常见的多种视频流媒体协议,包括点播与直播。
利用ndk处理图片库,支持Instafix、Ansel、Testino、XPro、Retro、BW、Sepia、Cyano、Georgia、Sahara、HDR、Rotate(旋转)、Flip(翻转)等各种特效
svg-android 项目地址
Android Svg矢量图形支持
Android Visualizer 项目地址
从Android MediaPlayer获得音频,然后像iTunes及WinAmp一样展示音轨
ExoPlayer 项目地址
包括仪表板和SmoothStreaming自适应回放,缓存持久化和自定义渲染器,方便自定义和扩展,并且可以通过应用商店更新
DanmakuFlameMaster 项目地址
android上开源弹幕解析绘制引擎项目
七、事件总线(订阅者模式)
通过发布/订阅事件解耦事件发送和接受,从而简化应用程序组件(Activities, Fragments及后台线程)之间的通信
greenrobot的开源项目
特点:
(1) 支持在不同类型的线程中处理订阅,包括发布所在线程,UI线程、单一后台线程、异步线程
(2) 支持事件优先级定义,支持优先级高的订阅者取消事件继续传递,支持粘性事件,是不是跟系统的有序广播、粘性广播很像啊
(3) 不是基于annotations
(4) 性能更优
(5) 体积小
(6) 支持单例创建或创建多个对象
(7) 支持根据事件类型订阅
Square的开源项目,基于Guava的Android优化
EventBus与Otto的功能及性能对比文档
EventBus与Otto性能对比Demo Apk
八、传感器
Android感应器工具包,包含示例及使用过程中可能需要的算法
Android传感器管理
记录GPS信息
Pedometer 项目地址
计步器,使用硬件计步感应器
leapcast 项目地址
ChromeCast模拟器的App
Arduino-Communicator 项目地址
与Arduino通信的App
Android计步器
OwnTracks for Android 项目地址
自己的轨迹记录
Android手机震动摇晃检测库,提供供UI线程调用的回调接口
Android heart rate monitor 项目地址
Android心跳检测
蓝牙源信息,包括宝库Mac、更新时间、RSSI、UUID、信号源距离、影响范围等信息
farebot 项目地址
通过NFC 从公交卡中读取数据的一个应用
九、安全
Sqlite加密工具
快速高效的进行文件加密解密
应用锁,每次启动或从任何Activity启动应用都需要输入四位数字的密码方可进入 APP示例:Wordpress Android,支付宝,挖财
Android的图案密码解锁
Android-InsecureBank 项目地址
关于 Android 不安全性的示例
十、插件化
更多见: Android 插件化作用、概念以及不错的资料(包括开源项目)和解决方案
Android 动态加载Apk,热部署,利用 ClassLoader 以及 Activity 代理的方式解决
点评的实现方式,和上面不同的是:他不是用代理 Activity 的方式实现而是用 Fragment 以及 Schema 的方式实现
Android App插件式插件开发,插件必须先安装,更推荐看上面两个开源项目
Android Plugin Framework 项目地址
Android插件式开发,开放的源码目前不完整
multidex 项目地址
安装多 dex 的 classloader
ANR-WatchDog 项目地址
Android ANR 监听,通过监听自己的 UI Thread 是否被执行确定是否发生了 ANR,并可以设置相关事件
十一、文件
对不同文档类型的处理,包括PDF、Word、EPub、Html、Zip等
purePDF 项目地址
允许从任何运行的SWF文件读取和创建PDF文档
android-pdfview 项目地址
快速解析pdf的view,默认支持手势缩放和相关动画
Office 365 SDK for Android Preview 项目地址
可支持Microsoft SharePoint Lists, Microsoft SharePoint Files, Microsoft Exchange Calendar, Microsoft Exchange Contacts, Microsoft Exchange Mail
OpenSpritz-Android 项目地址
EPub阅读器
一个解析html的java库,可方便的提取和操作数据
作用:
(1) 从一个url、文件或string获得html并解析
(2) 利用dom遍历或css选择器查找、提取数据
(3) 操作html元素
(4) 根据白名单去除用于提交的非法数据防止xss攻击
(5) 输出整齐的html
java压缩和解压库
作用:
(1) 解压和压缩,并支持文件夹内递归操作
(2) 支持包含和排除某些元素
(3) 支持重命名元素
(4) 支持遍历zip包内容
(5) 比较两个zip包等功能
十二、其他
Salvage view 项目地址
带View缓存的Viewpager PagerAdapter,很方便使用
Android后台任务队列
开源的mobile行为分析系统,包括web端、android端,支持ios和window phone
Android移动端数据采集分析系统
aFileChooser 项目地址
文件选择器,可内嵌到程序中,而无需使用系统或三方文件选择器。
androidpn 项目地址
基于xmpp协议的消息推送解决方案,包括服务器端和android端。
Bolts 项目地址
Android的异步编程模式
与AsyncTask比较:
(1) 使用的是无大小限制的线程池
(2) 任务可组合可级联,防止了代码耦合
使Android程序中更快的接入Google Cast
从Android设备分享Video通过Google Cast
Android应用自身被卸载监听及打开浏览器等反馈功能实现
保证在系统配置改变时,Activity中的某些数据可以简单安全的保持不变
布局引擎,更简单的创建自定义布局,并且当数据和布局改变时更美观的过渡动画
Android Gesture Detectors Framework 项目地址 Android手势框架,支持双指旋转、移动、平移、缩放等
Mapbox Android SDK 项目地址
Android Map的替代版
Activity跳转动画,支持各个方向波浪的效果
KryoNet 项目地址
通过NIO提供客户端和服务器端TCP/UDP网络传输的Java库
Rebound 项目地址
一个模仿弹簧反弹的Java库,可用于创建动画
社交网络接入统一管理器,可方便的从Twitter, LinkedIn, Facebook, Google Plus登陆、获得个人信息、发送消息、发送专篇、添加或删除好友
SmartAppUpdates 项目地址
Android App 增量升级,包含前后端方案、Demo、以及 so 库,可用于商店或大体积 App 差分升级
Magnet 项目地址
创建类似 Facebook 聊天桌面悬浮窗的效果
Parceler 项目地址
通过注解及工具类自动完成实体类 Parcelable及值传递
将 Android 的通知都集中到锁屏显示
QrCodeScan 项目地址
ZXing和ZBar结合的二维码扫描项目,提高了扫描效率
实现android系统截屏功能
信用卡扫描 Android SDK
Twitter, Facebook, Google Plus, LinkedIn, Instagram, Vkontakte, Odnoklassniki 的集成库,包括他们的大多数功能
Android 自定义的签名 View,可自定义笔颜色和大小
Teleport 项目地址
Android Wear 数据同步和消息传送库
DebugLog 项目地址
可以帮你创建更简单和更容易理解的调试日志,能够友好的显示调试信息所在类和函数。
#第二部分 优秀项目#
主要介绍那些Android还不错的完整项目,目前包含的项目主要依据是项目有意思或项目分层规范比较好。
Linux 项目地址
(1) ZXing
二维码扫描工具
PS:现在市面上很多应用的二维码扫描功能都是从这个修改而来
(2) photup
编辑机批量上传照片到facebook上
PS:代码分包合理,很棒。不过这个项目依赖的开源项目比较多,比较难编译
(3) github-android
Github的Android客户端项目
(4) Notes
MIUI便签
PS:项目分包比较合理,相比较miui的文件管理器 https://github.com/MiCode/FileExplorer 代码规范较好得多
(5) weicuiyuan
四次元-新浪微博客户端
(6) gnucash-android
一个记账理财软件
(7) AntennaPod
支持rss订阅、音乐订阅
(8) ChaseWhisplyProject
打鬼游戏
(9) Tweet Lanes
功能完整的Twitter客户端
(10) Financius
简单易用的记账程序
(11) todo.txt-android
todo.txt的官方Android应用
(12) simpletask
基于todo.txt官方应用的另一个客户端
(13) Muzei Live Wallpaper
定时更换桌面精美壁纸
第三部分 开发工具及测试工具
主要介绍和Android开发工具和测试工具相关的开源项目。
一、开发效率工具
Parceler 项目地址
通过注解及工具类自动完成实体类 Parcelable及值传递
根据JSon数据自动生成对应的Java实体类,还支持Parcel、Gson Annotations对应代码自动生成。期待后续的提取父类以及多url构建整个 工程的功能
IntelliJ Plugin for Android Parcelable boilerplate code generation 项目地址
Android studio插件,生成Parcelable代码
Android Holo Colors IntelliJ Plugin 项目地址
Android studio插件,生成holo样式9 patch图片
Android Drawable Factory 项目地址
用于生成各个分辨率的图片
SelectorChapek for Android 项目地址
Android Studio插件,可根据固定文件名格式资源自动生成drawable selectors xml文件。
Android ActionBar样式生成器,可在线选择ActionBar样式自动生成所需要的图片资源及xml文件
ButterKnifeZelezny 项目地址
用于快速生成 ButterKnifeView注入代码的Android Studio/IDEA插件
RoboCoP 项目地址
利用Gradle task根据固定格式的json文件生成ContentProvider
appiconsizes 项目地址
用于生成各个分辨率的图片
Gradle Retrolambda Plugin 项目地址
Retrolambda是将Java8的Lambdas应用于Java7的工具,本项目是Gradle 插件,通过Retrolambda从而使Java或Android项目用Java8的Lambdas编 写,将编译后的字节码转换为Java6和7的字节码从而正常运行
Dagger IntelliJ Plugin 项目地址
dagger的intellij插件
Android Gen Drawable Maven plugin 项目地址
在编译时根据SVG描述文件生成不同分辨率的jpg、png或点9图片
各种Android资源自动生成器,包括启动图标、ActionBar图标、通知栏图标、点9等
根据Json内容生成java对象,支持jackjson和gson
9-Patch-Resizer 项目地址
自动生成 png 及点 9 图片的不同分辨率版本
二、开发自测相关
Quality Tools for Android 项目地址
Android测试及自测工具集合和示例
Google的Android测试工具 包括GoogleInstrumentationTestRunner(增强版的InstrumentationTestRunner)和Espresso(用于快速写出可靠测试用例的API)
特点:
(1). 不需要模拟器在一般JVM就可以运行测试用例
(2). 能完成在真机上的大部分测试包括感应器 其他的测试用例及相关模块Mock可见: android-mock, mockito, easy-mock
Android FEST 项目地址
提供一些列方便的断言,可用于提高编写Android自测代码效率
BoundBox 项目地址
可用于测试类各种访问权限的属性、方法。实际是通过BoundBox这个annotation生成一个属性和方法都是public权限的中间类并对此类进行测试完成的
Hugo 项目地址
用于打印函数信息及执行时间的工具,仅在debug模式生效
scalpel 项目地址
在应用下面添加一层用于界面调试,待详细补充
Android Screenshot library 项目地址
Android截图工具类,用于在持续集成时截图
sonar-android-lint-plugin 项目地址
将android lint的错误在sonar中展现
三、测试工具
Spoon 项目地址
可用于android不同机型设备自动化测试,能将应用apk和测试apk运行在不同机器上并生成相应测试报告。
Tencent APT 项目地址
APT是腾讯开源的一个Android平台高效性能测试组件,提供丰富实用的功能,适用于开发自测、定位性能瓶颈;测试人员完成性能基准测试、竞品对比测试
Emmagee 项目地址
网易开源的性能测试工具,包括CPU、内存、网络流量、启动时间、电池状态等
Android py-uiautomator 项目地址
py-uiautomator是一个对Android uiautomator用python进行封装的测试框架.
四、开发及编译环境
Buck 项目地址
facebook开源的Android编译工具,效率是ant的两倍。主要优点在于:
(1) 加快编译速度,通过并行利用多核cpu和跟踪不变资源减少增量编译时间实现
(2) 可以在编译系统中生成编译规则而无须另外的系统生成编译规则文件
(3) 编译同时可生成单元测试结果
(4) 既可用于IDE编译也可用于持续集成编译
(5) facebook持续优化中
Android Maven Plugin 项目地址
Android Maven插件,可用于对android三方依赖进行管理。在J2EE开发中,maven是非常成熟的依赖库管理工具,可统一管理依赖库。
umeng-muti-channel-build-tool 项目地址
渠道打包工具
另可参见Google的构建系统Gradle: http://tools.android.com/tech-docs/new-build-system/user-guide
Genymotion 项目地址
目前最好用最快的android模拟器
Android studio集成控件: http://plugins.jetbrains.com/plugin/7269?pr=idea
Cyril Mottier推荐: http://cyrilmottier.com/2013/06/27/a-productive-android-development-environment/
方便的将Gradle的Artifacts上传到Maven仓库
Android Emulator Plugin for Jenkins 项目地址
Android模拟器 jenkins插件,用于Jenkins做持续集成时跑模拟器测试
Android Maven Plugin 项目地址
管理应用所需要的依赖库。包括的构建工具有Maven、Gradle、ant、sbt
SDK Manager Plugin 项目地址
下载和管理Android SDK的Gradle插件
Gradle Protobuf Plugin 项目地址
将.proto文件转换成Java文件的gradle插件
ChromeADB 项目地址
Chrome 的 Adb 插件,当登录后,能看到所有连接的设备并操作,可以看应用、进程、内存及磁盘使用情况等
五、其他
ViewServer 项目地址
允许app运行在任何手机上都可以用HierarchyViewer查看
在整个系统上显示一个grid,用来帮助查看应用布局及使得布局更美观,可设置grid网格大小和颜色,android推荐48dp和8dp,可见 Android Design Guidelines – Metrics and Grids
PS:比起hierarchyviewer相差甚远,不过偶尔可用来作为布局查看工具。
手机端log查看工具,支持不同颜色显示、关键字过滤、级别过滤、进程id过滤、录制功能等
PID Cat 项目地址
根据package查看logcat日志
应用崩溃信息日志上报到GoogleDoc工具,网页版展现结果三方开源地址 https://github.com/BenoitDuffez/crashreportsviewer
Crashlytics 项目地址
提供丰富的应用崩溃信息日志收集
轻量级,丰富,可自定义应用崩溃信息收集器,附有邮件通知
集成插件: Android Studio, Eclipse and IntelliJ
chrome插件,可以方便的查看github上android源码工程的styles.xml和themes.xml。主要功能:
(1) 快速打开android styles.xml themes.xml
(2) 方便在资源间跳转。styles.xml themes.xml文件中资源链接跳转,可以方便跳转到某个资源
(3) 方便查找某个style和theme。chrome地址栏输入arn+tab+搜索内容回车即可
(4) 自动下载不同分辨率下的drawable
(5) 通过映射查找那些不是按照固定命名规则命名的style和theme
android-resource-remover 项目地址
根据lint的提示删除项目中无用的资源,减少包的大小
Telescope 项目地址
通过手势截图以特定主题发送到特定邮箱地址报告Bug
Complete Android Fragment & Activity Lifecycle 项目地址
完整的Android Fragment/Activity生命周期图
通过 Thread.UncaughtExceptionHandler捕获应用未处理的异常崩溃 Bug 并用 Notification 展示同时上传到后台服务器
Material Design Icons 项目地址
Google Material Design 规范中的 Icon
scrollscreenshot 项目地址
Android 滚动屏幕自动截图 jar 包,支持纵向、横向滚动截屏拼接
第四部分
主要介绍那些乐于分享并且有一些很不错的开源项目的个人和组织。Follow大神,深挖大神的项目和following,你会发现很多。
一、个人
就职于Square,绝对牛逼的大神,项目主要集中在Android版本兼容,ViewPager及开发工具上
代表作:ActionBarSherlock,Android-ViewPagerIndicator,Nine Old Androids,SwipeToDismissNOA,hugo,butterknife,Android-DirectionalViewPager, scalpel pidcat另外对square及其他开源项目有很多贡献
代表作:ActionBar-PullToRefresh,PhotoView,Android-BitmapCache,Android-PullToRefresh
就职于ClockworkMod
代表作:Superuser,AndroidAsync,UrlImageViewHelper,ion, 另外对 https://github.com/CyanogenMod 的开源项目有很多贡献
代表作:android-menudrawer,MessageBar
Manuel Peinado Github地址
代表作:FadingActionBar,GlassActionBar,RefreshActionItem,QuickReturnHeader
代表作:StickyListHeaders,sprinkles,android-FlipView
代表作:greenDAO,EventBus
代表作:android-mapviewballoons,android-viewbadger,android-actionbarstylegenerator,android-sqlite-asset-helper
Android team成员(2013.10已离开Android team,仍在Google)
代表作:ViewServer
就职于Aviary.com
代表作:ImageViewZoom,HorizontalVariableListView,AndroidWheel,purePDF
Google开发者专家认证,发布一些Android技巧及文章
代表作:GreenDroid,Polaris
二、组织
有态度有良心的企业,很多不错的分享
代表作:okhttp、fest-android,android-times-square、picasso、dagger、spoon等等
代表作:android-styled-dialogs,android-grid-wichterle,android-selector-chapek