Android开源类库分析文档章节列表(下)

作者:郭孝星
微博:郭孝星的新浪微博
邮箱:guoxiaoxingv@163.com
博客:http://blog.csdn.net/allenwells
Github:https://github.com/guoxiaoxing

一 数据管理

1.1 greenrobot/greenDAO

greenDAO is a light & fast ORM solution for Android that maps objects to SQLite databases.

  1. 性能佳
  2. 简单易用的 API
  3. 内存占用少
  4. 库体积轻巧

2.2 pardom/ActiveAndroid

Active record style SQLite persistence for Android.

3.3 emilsjolander/sprinkles

Sprinkles is a boiler-plate-reduction-library for dealing with databases in android applications.

Android Sqlite orm 的 db 工具类,比较显著的特点就是配合 https://github.com/square/retrofit 能保存从服务器获取的数据

二 数据解析

三 文件管理

3.1 iPaulPro/aFileChooser

Android library that provides a file explorer to let users select files on external storage.

小巧易用,可以直接内嵌到程序中,而无需使用第三方的文件系统。

功能演示

这里写图片描述

这里写图片描述

四 媒体开发

五 异步编程

5.1 BoltsFramework/Bolts-Android

Bolts is a collection of low-level libraries designed to make developing mobile apps easier. Bolts was designed by Parse and Facebook for our own internal use, and we have decided to open source these libraries to make them available to others. Using these libraries does not require using any Parse services. Nor do they require having a Parse or Facebook developer account.

该项目为Android提供了异步编程的框架,与AsynTask相比,该框架的优点在于:

  1. 使用的是无大小限制的线程池
  2. 任务可组合可级联,防止了代码耦合

六 应用测试

【应用调试:logger-master】

6.1 stephanenicolas/Quality-Tools-for-Android

This is an Android sample app + tests that will be used to work on various project to increase the quality of the Android platform.

Android 测试及自测工具集合和示例

6.2 android-test-kit

Google 的 Android 测试工具,包括 GoogleInstrumentationTestRunner(增强版的 InstrumentationTestRunner)和 Espresso(用于快速写出可靠测试用例的 API)。

6.3 robolectric/robolectric

Android Unit Testing Framework。

  1. 不需要模拟器在一般 JVM 就可以运行测试用例
  2. 能完成在真机上的大部分测试包括感应器

6.4 square/assertj-android

A set of AssertJ helpers geared toward testing Android.

提供一些列方便的断言,可用于提高编写 Android 自测代码效率

6.5 stephanenicolas/boundbox

BoundBox provides an easy way to test an object by accessing all its fields, constructor and methods, public or not. BoundBox breaks encapsulation.

可用于测试类各种访问权限的属性、方法。实际是通过 BoundBox 这个 annotation 生成一个属性和方法都是 public 权限的中间类并对此类进行测试完成的。

6.6 JakeWharton/hugo

Annotation-triggered method call logging for your debug builds.

用于打印函数信息及执行时间的工具,仅在 debug 模式生效。

6.7 square/spoon

Distributing instrumentation tests to all your Androids.

可用于 android 不同机型设备自动化测试,能将应用 apk 和测试 apk 运行在不同机器上并生成相应测试报告。

6.8 stormzhang/APT

Tencent APT Mirror, APT是一个Android平台高效性能测试组件,提供丰富实用的功能,适用于开发自测、定位性能瓶颈;测试人员完成性能基准测试、竞品对比测试。

6.9 NetEase/Emmagee

Android performance test tool-CPU,memory,network traffic,starting time,battery current and status

6.10 facebook/augmented-traffic-control

Augmented Traffic Control: A tool to simulate network conditions.

模拟网络状况,包括带宽、时延抖动、丢包率、错包率、包重排率

6.11 facebook/stetho

Stetho is a debug bridge for Android applications, enabling the powerful Chrome Developer Tools and much more.

强大的 Android Debug 工具。支持网络请求监控以及数据库查看,可以和 Chrome DevTools 结合或者命令行模式。

七 应用统计

7.1 sevenler/Uninstall_Statics

Android 应用自身被卸载监听及打开浏览器等反馈功能实现

八 工具类库

8.1 公共类库

8.1.1 google/guava

Google Core Libraries for Java 6+.The Guava project contains several of Google’s core libraries that we rely on in our Java-based projects: collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, and so forth.

8.1.2 Trinea/android-common

Android common lib, include ImageCache, HttpCache, DropDownListView, DownloadManager, Utils and so on .

  1. 支持预取新图片,支持等待队列
  2. 包含二级缓存,可自定义文件名保存规则
  3. 可选择多种缓存算法(FIFO、LIFO、LRU、MRU、LFU、MFU 等 13 种)或自定义缓存算法
  4. 可方便的保存及初始化恢复数据
  5. 支持不同类型网络处理
  6. 可根据系统配置初始化缓存等

8.1.3 wyouflf/xUtils

android orm, bitmap, http, view inject

基于 Afinal,包含 DbUtils、ViewUtils、HttpUtils、BitmapUtils 四大模块,可用于快速开发。

8.1.5 yangfuhai/afinal

Afinal是一个android的ioc,orm框架,内置了四大模块功能:FinalAcitivity,FinalBitmap,FinalDb,FinalHttp。通过finalActivity,我们可以通过注解的方式进行绑定ui和事件。通过finalBitmap,我们可以方便的加载bitmap图片,而无需考虑oom等问题。通过finalDB模块,我们一行代码就可以对android的sqlite数据库进行增删改查。通过FinalHttp模块,我们可以以ajax形式请求http数据。详情请通过以下网址查看。

8.1.5 cymcsg/UltimateAndroid

UltimateAndroid is a rapid development framework for developing your apps.

UltimateAndroid 是一个快速开发 Android 应用的框架,框架目前主要包含的功能有 View Injection,ORM,异步网络请求和图片加载,自动化脚本测试,磁盘 LRU 等功能.同时提供了类似于 TripleDes、Webview 快速设置、Md5 处理、String 处理,Https 处理等常用工具类,还有超过 100 多种 UI 控件效果。

8.2 依赖注入

依赖:如果在 Class A 中,有 Class B 的实例,则称 Class A 对 Class B 有一个依赖。

依赖注入:非自己主动初始化依赖,而通过外部来传入依赖的方式,我们就称为依赖注入。

举例

public class Human {
    ...
    Father father;
    ...
    public Human() {
        father = new Father();
    }
}

上述代码存在以下问题:

  1. 如果现在要改变 father 生成方式,如需要用new Father(String name)初始化 father,需要修改 Human 代码;
  2. 如果想测试不同 Father 对象对 Human 的影响很困难,因为 father 的初始化被写死在了 Human 的构造函数中;
  3. 如果new Father()过程非常缓慢,单测时我们希望用已经初始化好的 father 对象 Mock 掉这个过程也很困难。

我们可以将代码改成下面依赖注入的方式:

public class Fruit {
    ...
    Apple apple;
    ...
    public Fruit(Apple apple) {
        this.apple = apple;
    }
}

这样做的好处在于:

  1. 将 father 对象作为构造函数的一个参数传入。在调用 Human 的构造方法之前外部就已经初始化好了 Father 对象,将依赖之间解耦。
  2. 因为已经解耦,所以方便做单元测试,尤其是 Mock 测试。

下面介绍Android开发最为常用的的4中依赖注入框架。

8.2.1 JakeWharton/butterknife

View “injection” library for Android.

正如上面官方给的介绍,它是一个利用 annotation 帮你快速完成 View 的初始化的框架。

8.2.2 square/dagger

A fast dependency injector for Android and Java.

Dagger 是一款 Java 平台的依赖注入库。

8.2.3 excilys/androidannotations

Fast Android Development. Easy maintainance.

  1. 依赖注入:包括 view,extras,系统服务,资源等等
  2. 简单的线程模型,通过 annotation 表示方法运行在 ui 线程还是后台线程
  3. 事件绑定:通过 annotation 表示 view 的响应事件,不用在写内部类
  4. REST 客户端:定义客户端接口,自动生成 REST 请求的实现
  5. 没有你想象的复杂:AndroidAnnotations 只是在在编译时生成相应子类
  6. 不影响应用性能:仅 50kb,在编译时完成,不会对运行时有性能影响。
  7. 与 roboguice 的比较:roboguice 通过运行时读取 annotations 进行反射,所以可能影响应用性能,而 AndroidAnnotations 在编译时生成子类,所以对性能没有影响。

8.2.4 roboguice/roboguice

Google Guice on Android, version 3.0.

Roboguice 是一个用于 Android 应用的依赖注入框架,使用 Google 官方的 Guice 库位极大地简化了 Android 的依赖注入。通过使用 RoboGuice,你可以注入 View 视图控件、资源、系统服务或者其他任何对象。RoboGuice 能帮你精简应用程序的代码。代码越少意味着出现问题或 bug 的次数也就越少,从而可以把更多的精力花在项目中那些需要编写或修改的部分,使得阅读代码更加容易。

它主要包含的功能如下所示:

  1. 控件注入:用@InjectViews 方法初始化控件,例如:@InjectView(R.id.textview1)TextView textView1。
  2. 资源注入:用@InjectResources 方法初始化资源,例如:@InjectResource(R.string.app_name)String name。
  3. 系统服务注入:用@Inject 方法初始化并获取系统服务,例如:@Inject LayoutInflater inflater。
  4. POJO 对象注入:用@Inject 方法注入并初始化 POJO 对象,例如:@Inject Foo foo。

8.3 版本兼容

8.3 其他

9.3.1 facebook/device-year-class

A library that analyzes an Android device’s specifications and calculates which year the device would be considered “high end”.

Facebook 开发的检测手机主流配置工具。

8.3.2 ReactiveX/RxAndroid

RxJava bindings for Android.

对RxJava在Android上的扩展,使得Android上也很容易实现reactive components,简化线程操作,从而写出很漂亮的代码。

八 完整项目

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 继承开源类库中的类,并重写其中的类方法算作对开源类库进行修改。这是否会破坏开源使用许可,取决于你使用的开源许可证。有些开源许可证允许修改和使用代码,但要求在使用时标注来源并遵守其他限制。有些开源许可证要求在使用修改后的代码时使用相同的许可证,这意味着你必须将你修改的代码开源。因此,在修改开源类库之前,应该仔细阅读开源许可证,了解其中的限制和要求。 ### 回答2: 继承开源类库中的类,并重写其中的类方法属于对开源类库的扩展和定制化,不属于对开源类库的直接修改。这种方式并不会破坏开源使用许可。 开源许可通常允许用户自由地修改和扩展开源代码,只要遵守开源许可的要求即可。继承开源类库中的类可以被视为对开源代码的扩展,而不是对原始代码的直接修改。 通过继承并重写类方法,我们可以定制开源类库以满足自己的需求,同时保持开源代码的完整性。这种方式在开源社区中被广泛接受,并且经常被使用。 然而,在进行继承和重写时,我们需要注意遵守开源类库的许可要求。通常来说,我们需要遵循开源许可的要求,包括在继承和重写的代码中保持原始开源许可的声明,并在适当的地方注意提及对原始开源类库的使用。 总结起来,继承开源类库中的类,并重写其中的类方法不算修改开源类库,而是对其进行定制化;这种方式不会破坏开源使用许可,只要我们遵守开源许可的要求即可。在进行此类操作时,我们应该保持对原始开源类库的尊重,并遵循开源许可的规定。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值