24H免费课程咨询  TEL:13401595960   QQ:1870218756  微信:13401595960(李老师)

东方博宜

网站首页 > 软件开发资讯 > 安卓开发

【常州安卓开发培训班】常用工具和第三方库汇总

2018-04-24 17:41:28 东方博宜 阅读

一般提示


库最有价值的地方在于可逆:你将库添加到你的应用程序中,之后也可以将其删除(没有任何开销)。随时都能拿出来。不是所有的东西都可以这样,但如果它可以的话,请把它做成一个库,而不是和你的应用终生绑在一起。


一个更好的方法是在把你的库封装起来。如果你自己的类调用了库的方法,那么这样做就有着许多的好处,可以让使用者调用你自己的 API。例如,在某些情况下如果库返回异常,你想在 API 里截获它。你只用修改一个文件。有一个封装器让你的库更易用些。


如果你正在做一个库,你的团队里面的某些人可能已经开始使用它了,他们知道该如何调用你的库,而不用你的封装。这个检查样式会在编译的时候抛出异常,或者在应用中当他们为连接类使用 import 语句时,提示他们“不要使用连接类,使用封装的 API”。你还会指出不要在这个特定文件上这样做。如果你不这样做,封装器用处就不大,因为人们最终会绕过它。


另外,对第三方库做单元测试也是一个好主意。你需要这些测试,如果你正在使用 Joda-Time 这样的库,你可以使用单元测试来了解它奇怪的边界情况。你甚至可以通过单元测试来了解它的工作原理。你可能会发现,如果你不用 add day 方法而是给今天加一的话,你可能会出现二月三十日的情况。


在 Android 的世界中,我们必须考虑函数数量限制(64,000)。(我在说第三方函数库的函数数量,它们会被精简掉)。有一个网站[函数数量](http://methodscount.com),你可以上传你的库,Gradle 导入语句,然后它会告诉你这个库有多少个方法(这是件很棒的事情,特别是当你想使用该库的时候)。使用 ProGuard,许多库将会变得很小。这个方法使你只会包含库中被引用的部分,但是在使用库之前是很难预测你将要使用的内容的。有些时候你可以这样做,“我知道我只使用库的这个方法”,看看它有多小。


Dex函数计数 会在你的 gradle 里,你也可以在你自己的编译系统上这么做,跟踪你应用程序中函数的总个数。 Apk-method-count 是一个很棒的工具。你可以拖动你的 APK,看看它有多少个方法(63,905 个方法,我喜欢生活在 64,000 的边缘)。在 MultiDex 限制出现之前,你添加的每个方法仍将减慢那些旧设备的启动时间。虽然你的船已经航行,不受 MultiDexing 的限制,十万种方法和十二万种方法之间还是有差别的。更少的方法总是有好处的。 Instagram 就是以 从库 中提取所需的东西而不是使用完整的库而闻名的。这是一个很好的实践,如果你有精力这样做的话。


除此之外,我还建议关注 流行的成熟库。每个月(特别是如果你订阅了 Reddit Android 开发者),你将会听到最新,最酷的库。库越成熟,就会越受欢迎。与现有的项目一起工作,兼容性问题就越少。无论何时遇到问题,stackoverflow 那里都会有答案。


另外,请注意特殊的方法。这是不符合 Java 标准的东西。如果你正在构建完全不同的布局,那么很可能会有兼容性问题。这时采用库就会变得更加犹豫。


社交登录


Facebook 是社交登录的黄金标准(如果你不喜欢 Facebook 的实现,情况只会变得更糟)。他们提供测试用户,你可以使用这些测试账户来测试。不再需要假帐户了,你应该使用他们的测试帐户 - 它们工作的更好。我看过有人犯过这样的错误,你不能假设每个 Facebook 用户都有电子邮件。大约 10 到 15% 的 Facebook 用户没有电子邮件。如果你期待电子邮件,这可能是 10 到 15% 的注册失败的神秘原因。他们需要密钥散列(这是一个随机序列,某段代码打印出的键值哈希),所以你不必处理它,不用理会它。如果你想申请些其他的疯狂权限,他们现在已经锁定了这些权限。他们需要先看看你打算如何使用这些权限,如果你有这个疯狂的想法而且应用还没有开发好,请提前告知他们。


登录和注册时,请记录你所得到的错误。这是我们如何发现由于没有电子邮件,10 到 15% 的注册失败的方法。有时候记录错误可能是找到你不了解的东西的最有效的方法。


还有很多其他登录选项:Twitter,LinkedIn,Google。我的心态是(特别是 Twitter,LinkedIn),虽然他们很受欢迎,但往往不值得的尝试。你会看到不到 2% 的注册率,除非是一个非常好的场景。 LinkedIn 提供了非常具有挑战性的 API(这不是我原来的单词,但是 PR 告诉我,我应该改变它)。 Twitter,他们不提供很多信息,但你可以转到此链接, 并且说我需要电子邮件和基本信息,他们会给大家授予权限。但总体来说,除非你的架构非常好,这些都会增加你应用的复杂性,。


Google 情况比较复杂。在 Android 上,很多人都会拥有 Google 帐户。如果他们没有 Google 帐户,是非常奇怪的。但是你可以从 Google 登录中获得很多功能 - 你可以获取电子邮件提示和其他东西。此外,登录 UI 是十分丑陋的。还有点慢,所以你必须考虑加载模式的对话框。


联网


如果你使用本地库,那么有两个大名鼎鼎的库:Retrofit,Volley。还有 native HTML URL Connect(通常不推荐)。对于 Retrofit 和 Volley 来说,你经常会看到些比较,你会看到 Volley 比 Retrofit 做的更多(例如图像下载和 neat )。这具有欺骗性。


Retrofit 是由 Square 建造的,他们有一个哲学,他们的库会尽可能少做事情。他们试图让库严格地解决具体的问题,解决这个问题时,强制执行良好的实践。Retrofit 可能是他们最好的例子。这段代码(见幻灯片)是我在一个应用程序中使用 Retrofit 的示例,我必须为我的 API 调用创建一个非常干净的接口。


Volley 给你足够的绳子吊死自己。你可以使用 Volley,很容易用错。Retrofit 更好地强化了最佳实践,我喜欢这样的做法。


很多时候你会听到 OkHttp:这是真正的幕后大举提升网络性能的功臣。它已经在 Android 4.4 的 native 里面了。


网络调试


考虑到网络调试,你有网络调用正在进行,你想了解发生了些什么。


Stetho


Stetho 是一个很好的选择。它是 Facebook 开发的。它为你的网络调用提供了 Chrome 开发者工具视图。它还提供了许多其他的好东西:可以查看你的数据库,看看那里发生了什么;可以看到你的布局,如果你不知道屏幕上发生了什么。其中需要注意的是,你必须在每次运行时启动它,否则它会自动关闭。虽然时间是准确的,但它会使你网络调用的时间更长。


HttpLoggingInterceptor


我个人倾向于另一个简单的 HttpLoggingInterceptor。你将拦截器添加到你的网络请求中,并将其打印在日志文件上。你也可以看到一些 JSON 文件。有一堆类似的东西都命名为 logging 拦截器。使用 Square 的标准 HTTP 日志记录可以让你更轻松地浏览,非常方便。

常州东方博宜是一家专注IT,互联网,电脑方面的顶尖培训机构,欢迎社会及院校有志互联网营销,搜索引擎营销的人士,来东方博宜报名学习,互相交流。

常州东方博宜地址:常州天宁区延陵西路2号工人文化宫5号楼

 2.新北区太湖东路9-4号常州创意园E12

 


Powered by 东方博宜教育咨询江苏有限公司  ©2008-2018 www.czos.cn