我的名字叫 Ryan Cooke 我在 Pinterest 的核心体验团队工作。今天在这里我会谈论各类 Android 库:它们各自的长处,缺点和其他相干常识。目标是高效地概述尽可能多的看维如许,当你碰到一个问题的时刻,你知道这是不是个已经解决的问题?什么样的筹划更好?同时也能赞助你避免那些陷阱。

选择精确的库意味着你可以拥有一个已经成熟的更好的解决筹划,而不是花费三个月来从新构建它。懂得这些库是第一步。
我听到很多人想要实现第一个库, 我们难道不克不及用 Async 义务或原生的器械来做吗? Google 认为,如不雅市情上已经有一个解决筹划了,他们就不想建立一个一模一样的竞品。他们在多个处所多次表达过这个设法主意。然则你应当知道,你还有一些其余选择。
一般提示
库最有价值的处地点于 可逆 :你将库添加到你的应用法度榜样中,之后也可以将其删除(没有任何开销)。随时都能拿出来。不是所有的器械都可以如许,但如不雅它可以的话,请把它做成一个库,而不是和你的应用毕生绑在一路。
一个更好的办法是在把你的库封装起来。如不雅你本身的类调用了库的办法,那么如许做就有着很多的好处,可以让应用者调用你本身的 API。例如,在某些情况下如不雅库返回异常,你想在 API 里截获它。你只用修改一个文件。有一个封装器让你的库更易用些。
相反,你可以应用 Flatbuffer。 JSON 仁攀类可读,Flatbuffer 不是,然则因为如许,它损掉落了其他的不须要的包袱。然则 Flatbuffer 与 JSON 比拟,Falbuffer 解析几乎不花时光。Facebook 做了这个转换。他们发明启动时光增长了 10% 到 15%,启动时光有所改良。他们也不雅察到内存应用效力更高。然则应用起来比 JSON 更难,所以谨慎应用。
如不雅你正在做一个库,你的团队琅绫擎的某些人可能已经开端应用它了,他们知道该若何调用你的看维而不消你的封装。这个检查样式会在编译的时刻抛出异常,或者在应用中当他们为连接类应用 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 那边都邑有谜底。
Google 推荐的另一种 NoSQL 办法是 LevelDB。键值对,然则它可以说是 “你可以或许弄清跋扈该怎么做,但你必须本身弄清跋扈每一步”。 Realm db 可以赞助你避免这种情况。
同样的情况是,你的 Android Studio 也会随机崩溃,或者 ProGuard 不工作了,因为它去掉落了一些 Kotlin 的类。这些工作经常产生,很难扭转。Kotlin 有很多衡量点。我们在代码中应用它。确切有一些问题,与此同时,懂得 Kotlin 的人们的代码审查更快。对于不知道 Kotlin 的仁攀来说,有一个进修的曲线。这是一个衡量。你必须本身决定。
别的,请留意特别的办法。这是不相符 Java 标准的器械。如不雅你正在构建完全不合的构造,那么很可能会有兼容性问题。这时采取库就会变得加倍迟疑。
社交登录
Facebook 是社交登录的黄金标准( 如不雅你不爱好 Facebook 的实现,情况只会变得更糟 )。他们供给测试用户,你可以应用这些测试账户来测试。不再须要假帐户了,你应当应用他们的测试帐户 - 它们工作的更好。我看过有人犯过如许的缺点,你不克不及假设每个 Facebook 用户都有电子邮件。大年夜约 10 到 15% 的 Facebook 用户没有电子邮件。如不雅你等待电子邮件,这可能是 10 到 15% 的注册掉败的神秘原因。他们须要密钥散列( 这是一个随机序列,某段代码打印出的键值哈希 ),所以你不必处理它,不消理会它。如不雅你想申请些其他的猖狂权限,他们如今已经锁定了这些权限。他们须要先看看你计算若何应用这些权限,如不雅你有这个猖狂的设法主意并且应用还没有开辟好,请提前告诉他们。
登录和注册时,请记录你所获得的缺点。这是我们若何发明因为没有电子邮件,10 到 15% 的注册掉败的办法。有时刻记录缺点可能是找到你不懂得的器械的最有效的办法。
推荐阅读
微软今天针对开辟者推出三款重要的新对象:Azure 机械进修实验办事、Azure 机械进修工作台以及 Azure 机械进修模型治理办事。此外,微软还针对那些想要借助 Visual Studio Code IDE、用 CNTK、TensorFlow、Theano、K>>>详细阅读
本文标题:安卓开发常用工具和第三方库汇总
地址:http://www.17bianji.com/lsqh/37607.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示