作家
登录

为什么要开发Android库?

作者: 来源: 2017-09-08 10:04:38 阅读 我要评论

不论是你要履行一个特定的义务,模块化你的代码,或者只是为了更优雅地重用你的代码,有些时刻,作为开辟者,平日会推敲开辟库来实现。但开辟库是个挺艰苦的工作。由 Bay Android Dev Group 主办,此次分享由我们的 Emanuele Zattin 分享一些他在开辟 Java 和 C/C++ 库上的一些最佳实践。商量下 API 设计,CI 技巧,以及对于机能的看法,你会懂得到对你工作很有赞助的一些对象。

为什么要开辟Android库?

为什么要开辟 Android 库?

为了寻求更简洁的代码和更好的代码治理,我们平日须要把代码拆分成不合的逻辑单位,所以,开辟 Android 库的第一个原因就是为了模块化。这也引申出我们开辟库的第二个原因:代码重用。一旦你的代码模块化后,你可以将它用在很多不合的处所。比拟高耦合度的代码,基于库的代码治理让你更轻易的调换个中的代码,以适应不合的场景。还有一个原因,其实就是 “虚荣”,如不雅你有一个很不错的设法主意或者提出一种新的解决特定问题的筹划,写个库会是一个将这个设法主意分享给全世界,并且让大年夜家都能用到的一个好办法。

Bintray 也为临盆宣布供给了一个很精细却不是那么好用的 Gradle 插件 ,尤其是你只是一个 Gradle 新手的话…… 别的,带 Web 界面的宣布对象也很是有效。你只要上传这三个文件,再填一些信息,就可以了。一开端,你可以应用那些 web 筹划,当你对 Gradle 插件的应用和主动化异常熟悉的时刻,就让 Jenkins 去帮你做这些宣布工作吧。

为什么是开辟 Android 库而不是 Java 库呢?如不雅你的库要和 Android 的 UI,消息体系,设备传感器,或者原生代码打交道,那么你只能开辟 Android 库,而不是 Java 库。

我们开端前,起首,打开你的 Android Studio,并且新建一个项目!Android Studio 并不支撑直接新建一个新的看维这里有几种解决办法,如下:

办法一 - Hack 筹划:

  • 创建 Application Project
  • 添加 Library Project
  • 删除 Application Module

简单粗暴效不雅好

办法二 - 应用敕令行,Android 自带了很多很多的对象,创建 Android 库也是个中的一个敕令。传入一个 ID 参数许可你指定特定的编译 版本,也可以经由过程传参指定项目包名,以及你想要运行的 Gradle 的版本。 Gradle 是一个极其有效和灵活的主动化构建对象,你可以异常轻易地运行各类插件,来加快你的开辟,比 Maven 和 Ant 不知道高到哪里去了。

第二步: 代码,代码,代码!

在开辟库的时刻,API 设计异常重要, Joshua Bloch 是这方面的专家,他的 Effective Java 尽管是基于 Java 1.5, 但仍然有很多有价值的技能。他曾经做过一个 名叫 若何设计优良的 API,为何如斯重要 的出色的演讲,是以我想分享一些他在 API 设计上的一些不雅点。

那么,一个好的 API 应当具备哪些特点?

简单易学,你并不想闪开辟者赓续地去查看文档,是以你在设计时刻的定名法、类名和参数名必定要尽可能的不言自明。

  • API 要少掉足,所以要把 API 设计得坚如磐石。
  • API 必定要易读,易保护,毕竟你在很长一段时光内要和这些代码打交道,特别是它一旦风行开今后,你会收到很多的新功能的要乞降马脚申报。
  • API 的可扩大性也至关重要。想想 Jenkins :固然不是一个 API,然则他是一个异常成功的开源项目,一部分原因是因为他易于扩大,以及为他开辟插件。
  • 最后,你必定要明白你的受众,不论受众是你本身、你的团队、你工作地点的公饲橐迩全部世界,你的 API 都要做到对你的受众友爱。

测试很重要,对库而言加倍重要,因为你无法预知你的受众将若何去应用它们。很荣幸的是,在 Android 上测试库跟测试 App 差别并不大年夜。你可以应用 Android TestCase ,也可以用一些其他的 Android 测试对象框架来做测试。

Android 的测试组件一个不好的处所就是大年夜家平日会卡到 JUnit 3 上,尤其是你发明你不克不及用类似 Robolectric 如许不支撑 Native 代码的对象。JUnit3 不支撑一个对库开辟很重要的测试特点:参数化测试。如不雅你想用一些列测试参数来测试的办法,你可以尝尝用 Square 开辟的一个叫: Burst 的库。它很好地解决了这个问题。

【编辑推荐】

  1. 谈谈23种设计模式在Android项目中的应用
  2. 抢先体验:Android “O”开辟者预览版
  3. 如安在Android App上高效显示位图
  4. 滴滴开源业界首个耦合型全兼容Android插件化框架
  5. 应用Kotlin来开辟Android,这些优缺点要推敲
【义务编辑:未丽燕 TEL:(010)68476606】

主动化你的测试! Jenkins 是一个异常赞的对象来解决实现主动化测试。他供给了跨越 1000 个插件,个一一些专为 Android 开辟设计。我强烈推荐以下插件:

  • Job Config History 插件, 它可以在出状况的时刻经由过程设备文件从新恢复现场。
  • Git 插件,以及与他类似的一些插件,比如: GitHub , GitHub pull request , GitLab , 等等。
  • 让履行义务和主动化变得简单的 Gradle 插件。Gradle 异常善于主动化,你可以在 Jenkins 的 Gradle 里运行很多你本身的操作逻辑。
  • Android Emulator 插件,这个不仅仅是个模仿器。 当你想要测试不合屏幕分辨率以及内存应用的时刻,这个插件异常有效。

Q: 你更偏向用哪个 Jenkins 办事供给方?照样你平日在你本地运行? Emanule: 我平日本身跑他们。之所以这么做,是因为我搭建了一个没有任何 executro 的 Master 机械,同时搭建了一堆本地 Slave 机械当做 Excutor,Master 机械可以使异常小的机械,不消那么强健,无须处理任何编译的工作。

另一个测试筹划是写测试用的 App。这种筹划在很多时刻都很有效:它可以帮钠揭捉?证你的测试用例,借居地测试,并且可以确保你的 App 不会崩溃或者无响应。想要做测试 App,推荐用 Gradle 的 这个插件 ,它同时支撑发送指令给不合的 Android 设备。

 1/4    1 2 3 4 下一页 尾页

  推荐阅读

  如何把Go调用C的性能提升10倍?

今朝,当Go须要和C/C++代码集成的时刻,大年夜家最先想到的肯定是CGO。毕竟是官方的解决筹划,并且简单。调用C函数的时刻,必须切换当前的┞坊为线程的主栈,这带来了两个比较严重的问题:>>>详细阅读


本文标题:为什么要开发Android库?

地址:http://www.17bianji.com/lsqh/37244.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)