每个Android开发人员都应该了解的10个库

每个Android开发人员都应该了解的10个库


2015年,我们已经发表了一篇有关当时使用的前五种库的文章 。 但是,自那时以来,Android平台已显着增长。 如您所知,在软件开发这样迅速发展的领域中,一切都以闪电般的速度变化和发展。 因此,我们决定是时候更新最有效的Android库列表了。


事不宜迟,让我们直接进入列表。 首先,我们将看一个最古老的但最有效的Android库之一。


1. 改造


Retrofit是一种类型安全的HTTP客户端,它允许您将REST API呈现为接口。 您将能够在注释的帮助下管理API请求的主体,标头,参数以及许多其他内容,这将使此过程变得简单易懂。 改造还允许您进行同步和异步API调用。


interface ApiService { @GET("movie/{id}") fun getMovieDetails(@Path("id") id: String) : Call<MovieDetails> } 

此外,翻新还提供了单独的Rx模块。 如果使用Rx,则该模块在访问API时将返回Observable,这将使您可以将其与应用程序的其余部分相关联。 这些只是我们仍然喜欢并使用Retrofit的众多原因中的几个。


2. 莫西


Moshi是用于将JSON转换为Java和Kotlin对象的库。 许多人将Moshi视为GSON 3.0。 但是,该库在几个方面优于GSON: 它更快 ,支持Kotlin,更新,生成可预测的异常并且默认情况下不使用损坏的DateTime适配器。 另外,使用Moshi,将JSON转换为Java对象(反之亦然)的过程变得尽可能简单明了。


 val moshi = Moshi.Builder().build() val jsonAdapter = moshi.adapter(Model::class.java) /* JSON to Model */ val model = jsonAdapter.fromJson(json) /* Model to JSON */ val json = jsonAdapter.toJson(model) 

我们也很喜欢Moshi支持JSON API。 JSON API是API构造规范,我们使用的许多API都是使用该规范编写的。 Moshi JSON API使我们的生活更加轻松,因为JSON API被转换为有意义的Java对象。 Retrofit仍然支持Moshi,并且它们一起工作非常好。


3.卡盘


Chuck是Android的HTTP检查器,可让您在手机上挖掘应用程序的HTTP历史记录。 HTTP日志显示为通知,可以扩展为登录Chuck并查看详细信息。 使用Chuck会令人难以置信地使质量检查部门满意,因为他们可以看到问题出在哪里:在Android端还是在服务器端。 该库有时可以为您提供比logcat更多的帮助。 这是因为即使应用程序意外关闭,您的HTTP历史记录也会保留下来,而logcat在重新启动后会不时清除自身。


卡盘


4. 滑翔


您最有可能知道在Android上下载图片非常困难。 使用OutOfMemoryException甚至可以调整图像大小也可能是一场灾难。 Glide是一个图片上传库,提供了优质的API,可让您根据需要修改图片。


 GlideApp.with(context) .load(url) .centerCrop() .placeholder(R.drawable.ic_placeholder) .into(imageView) 

该库使您可以轻松地将远程图像上传到ImageView,定义稳定图像,缓存和缩放图像等。 只需尝试在没有Glide的帮助下完成所有这些工作,您将立即理解为什么它在我们的密钥库列表中。 Glide甚至支持一些常见的默认更改,例如创建圆形图像。


5. ThreeTen


ThreeTen是Android的日期和时间库。 这是JSR-310的移植版本,已作为标准java.time.*包含在Java 8中。 我们喜欢这个库,因为标准的Android Calendar API将工作变成了一场噩梦。


 /* Current DateTime */ LocalDateTime.now() /* String to DateTime */ val localDateTimeString = "2011-12-03T10:15:30" val localDateTime = LocalDateTime.parse(localDateTimeString) 

在方法数量和二进制大小方面,ThreeTen远不及JodaTime。 该库的API也小于JodaTime API。 如果您已经在使用JodaTime,则可能不应该升级到ThreeTen。 但是,如果您刚开始从事新项目,我强烈建议尝试ThreeTen。


6. 木材


Timber是一个功能强大但简单的日志记录库,它建立在Android Log类之上。 有了它的帮助,您可以轻松地打开和关闭日志显示。 该库还为记录格式化的字符串和异常提供了出色的支持。 由于这些优点,Timber也包含在我们几乎所有Android项目中使用的密钥库列表中。


 /* Log error */ Timber.e("Error happened") /* Log warning with params */ Timber.w("Your variable value is %s", variable) /* Log exception */ try { ... } catch (e: Exception) { Timber.e(e) } 

7. 房间


Room是Android上的官方ORM,有多种原因可以说明这种情况。 该库具有类似于Retrofit的用户友好型API。 Room还严重依赖注释和标准SQL语法。


 @Dao interface MovieDao { @Query("SELECT details FROM movies WHERE id = :id") fun getMovieDetails(id: String): MovieDetails } 

此外,Room LiveData还包括Rx和LiveData支持,因此您可以随意使用它。 相较于各种ORM,Room的主要优势在于其简单性。 许多ORM具有更为复杂的API,您需要仔细研究所有文档才能使用。 由于采用了标准的SQL语法,Room非常易于理解,它使您可以立即开始使用,而无需花费大量时间阅读文档。


8. RxJava


RxJava是ReactiveX API的Java实现,允许您将异步任务和事件绑定到可观察的序列中。 用户希望现代应用程序能够显示实时数据。 换句话说,他们希望信息能够自动更新。 正是在这一方面,RxJava派上了用场。


接收实时数据时,合并多个API请求,切换流程和处理错误变得极为困难。 正是在这里RxJava完美地展示了自己,正是出于这个原因,我们开始使用此库。 我同意RxJava似乎令人困惑且难以学习,但是该库绝对值得您花时间。 即使切换到Kotlin,由于其优势,我们仍继续使用RxJava。 当与Kotlin API结合使用时,由于附加的扩展功能,它变得更好。


 Single.zip( /* Execute first API call and retry twice if it fails */ apiService.getMovieActors(id).retry(2), /* Execute second API call and retry twice if it fails */ apiService.getMovieDetails(id).retry(2), /* Receive successful results and merge them into single model */ BiFunction<List<Actor>, MovieDetails, Movie> { actors, details -> Movie(details, actors) } ) /* Execute API calls on IO thread */ .subscribeOn(Schedulers.io()) /* Receive results on MainThread */ .observeOn(AndroidSchedulers.mainThread()) .subscribeBy( onError = { /* Handle error */ }, onSuccess = { /* Handle full movie data */ } ) 

尝试使用简单的Java执行与上述代码段相似的操作。 来吧


9. Android KTX


Android KTX是Kotlin中针对Android API的一组包装扩展程序,使其更加友好。 该库的主要目的是使Android API更加易于使用。 它包含许多方法和Kotlin的新功能,例如命名参数,lambda函数和默认参数。


 /* Display View */ view.isVisible = true /* Apply padding to all sides */ view.setPadding(padding) /* Update padding on any side */ view.updatePadding(left = newPadding, right = newPadding) /* Quick Toast */ toast("Display test toast") /* New way to create bundle */ bundleOf { "key1" to item1 "key2" to item2 } /* Better way to use SharedPreferences */ sharedPreferences.edit { putString("key1", "value1") putString("key2", "value2") } 

Android KTX的特点是存在许多扩展功能,唯一了解它们的方法是跳入库代码以查看功能如何改进了Android API。 Android KTX简化了您使用Android API的方式,因此,该库应该是用Kotlin编写的每个Android应用程序的基础。


10. 匕首


没有Dagger,我们排名前10的库将是不完整的。 该库在编译时是一个完全静态的依赖项注入框架。 像RxJava一样,Dagger确实很难理解(我不得不花一些时间来理解他们的CoffeeMaker示例),但是它绝对值得您花费时间和精力。


依赖注入是一种以最小的努力将小组件添加到其他模型的方法。 例如,如果您有汽车模型,则可以在其中添加轮胎并在将来轻松替换轮胎实现-无需更改汽车模型中的一行代码。


开发更复杂的应用程序时,您绝对不希望自己执行依赖项注入任务,因为代码量正在迅速增长并且变得太复杂而无法支持。 Dagger为您节省了此问题,因为它在编译时通过注释处理创建了依赖项注入图。


去年,Google添加了一个单独的Android Dagger模块,该模块可让您编写更少的样板代码并简化依赖项注入。


结论


所以这里是:我们列出了2018年十大Android库。 十个优秀的库,对于决定使用它们的任何人,将使Android开发过程更加有趣。 需要更多图书馆吗? 碰巧,我们公司开发了几个自己的Android库。 您可以熟悉它们:


Source: https://habr.com/ru/post/zh-CN425397/


All Articles