├── AndroidApplication.java ├── README.md └── LICENSE /AndroidApplication.java: -------------------------------------------------------------------------------- 1 | 2 | 3 | public class AndroidApplication { 4 | public static void main(String[] args) { 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # AndroidDeveloperAdvancedManual 2 | # Android 工程师进阶手册(8 年 Android 开发者的成长感悟) 3 | 4 | 2021 年是我做 Android 开发的第 8 年了,随着工作的不断深入,我越来越发现对于多数工程师来说,除了把技术能力搞好之外,更需要学习如何沟通,如何思考以及如何在职场中协调资源。这些能力反而更决定了一个工程师发展的上限。为此我写了这本小册子,这里我把 Android 开发的进阶分为了三个阶段,初级,中级和高级。在进行阅读之前,你可以先过一下整体的目录,如果你对某个阶段的内容早已了然于心,那么可以跳过这个阶段阅读。如果整本手册都没有感兴趣的话题,当然也就不必再看下去了。 5 | 6 | 如果你有任何想法或者问题,可以通过提 issue 的方式跟我交流,同时也欢迎关注我的公众号:SkyKai ,期待你的交流! 7 | 8 | ## 第一部分、初级工程师进阶 9 | 10 | 初级工程师的首要任务是提高工作能力,努力向中高级工程师进阶。这个过程艰难且漫长,需要一步一个脚印的往上走,最终才能成为高级工程师。 11 | 第一个脚印就是成为能出色完成上级布置的任务,能独立排查问题,态度积极,乐于迎接挑战的工程师。 12 | 13 | 我给优秀初级工程师的定义为:“又快又好”,其中“快”指需求完成的速度快,问题响应的速度快,问题解决的速度快等等。而“好”指代码编写的质量好,工作态度好,任务完成度好等等。 14 | 接下来我将从认知篇,知识篇与职场篇,来聊聊初级工程师如何进阶。 15 | 16 | ### 认知篇 17 | 18 | * [1.1 遇到问题应该怎么办?](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247483844&idx=1&sn=d9b771a0235f536caba87a4db260d548&chksm=c31aa3a5f46d2ab35d45e47181edaf4e2663997ad552ed4a9737e33a62329c906827effec662#rd) 19 | * [1.2 优秀工程师离不开 GitHub](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247483851&idx=1&sn=9e1fc406ad5ba9ace950eb6560e3d772&chksm=c31aa3aaf46d2abcd44d7d028196b5d182d934e41fc254621956b058da9ab107df158eed458f#rd) 20 | * [1.3 反编译不是高级技巧](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247483857&idx=1&sn=e41d2c0b2bdbc3f0a4a8fed458943bd2&chksm=c31aa3b0f46d2aa6b4f0ddb3ffd87bbb646d9de2a867a01db3a2a8eff380a9c2f5159386e778#rd) 21 | * [1.4 学会调试](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247483864&idx=1&sn=eeac104ac113d5e2560103e57c7a6e32&chksm=c31aa3b9f46d2aaf89ef18789c18599ce4d3ec990b086d471bcb6889bea8fe7945349bdf604c#rd) 22 | * [1.5 对自己的代码负责](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247483868&idx=1&sn=dd1912613c6094165a31db9be0096b9e&chksm=c31aa3bdf46d2aabfdfe31c452096bac90eb1544f95212b9326463031d220cd67def4676e319#rd) 23 | 24 | ### 知识篇 25 | 26 | * [2.1 Activity 与 Fragment](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247483884&idx=1&sn=3275d1f4f5507a7a16e157640ab264d3&chksm=c31aa38df46d2a9b178829a260e9d0fe09c8c8515cac618efa6e02c33b915b7e055e34e3e969#rd) 27 | * [2.2 Handler 消息机制](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247483900&idx=1&sn=49f19691999d7436e1073ee0eded84c8&chksm=c31aa39df46d2a8be787fe577539e62e71bcb2eb8346ca450e8b635b75f1172770ec16515040#rd) 28 | * [2.3 理解 View 体系](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247483926&idx=1&sn=1fbbca3d7f64fd8fadf60bd1456a2a50&chksm=c31aa077f46d296183dfefb4052908d7cf6b28f503bc47a811bc2b4a5222acd8cff6e969d475#rd) 29 | * [2.4 自定义 View](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247483936&idx=1&sn=6e9c09511e2f3ff9d06618555869ca68&chksm=c31aa041f46d29572f26c78139a9b09e490e3bf48876d4e91008c111faac2792eb39b5a07d49#rd) 30 | * [2.5 动画机制](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247483948&idx=1&sn=ae20704538806d63c93e96bc8ce85880&chksm=c31aa04df46d295be60c46797f675cf8966c461ba1e19b283b9a51f350e4b72e3ebfe124cb41#rd) 31 | * [2.6 线程与进程](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247483964&idx=1&sn=3937f446f553d2744c4ca5da15676007&chksm=c31aa05df46d294b275b504bec6fe6b03afa6260bfee6170262bdc5161b9679bfadd49a555d1#rd) 32 | 33 | ### 职场篇 34 | 35 | * [3.1 职场注意事项](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247483968&idx=1&sn=b287196538f7f6cdde1e5ea4a4a6b5b1&chksm=c31aa021f46d2937f8f70c3bf01a109552ee35de210c8c430ed040b6b6c3e4bbcabbab9f3799#rd) 36 | * [3.2 需求开发的完整流程](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247483972&idx=1&sn=1a350d32e82998e24d6ff0f3a69f272b&chksm=c31aa025f46d29331baf64d67c6ea3b204b7e384d86f7d6058e5bc03933898cd149c056eeaed#rd) 37 | * [3.3 什么时候跳槽?](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247483976&idx=1&sn=cc94a96fbed860ee07921a8c8496d2cd&chksm=c31aa029f46d293f8e62d3a23aad9350762e9b6e4be2ca46a8baff8e31e4c3d1c82bcacd8e89#rd) 38 | * [3.4 要努力进大厂吗?](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247483980&idx=1&sn=9747c2543891afa3c29fec4ce6e6eabd&chksm=c31aa02df46d293b11e4bf78fe7720a0964a54897a67ba29029f8ae98c8f3c9516d06676ea51#rd) 39 | * [3.5 如何准备面试?](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247483984&idx=1&sn=4aac7454054d469d87d780c57d779a19&chksm=c31aa031f46d2927264b63df4dc72fb84e39f7b982bcafc45161f9a2df93670795ea3b5f81e1#rd) 40 | * [3.6 如何选择 Offer ?](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247483988&idx=1&sn=efb009a643acae6aff26584c8bd42743&chksm=c31aa035f46d292397f45b6db80eeff41677694bc62937b6821029252cf788b9d17ab1458a52#rd) 41 | 42 | 43 | ## 第二部分、中级工程师进阶 44 | 45 | 46 | 初级工程师只要又快又好的完成任务就可以,中级工程师阶段不仅要又快又好,还要能独当一面。独当一面是要能独立负责一个项目,或者一个独立业务。并在遇到问题时可以独立解决,成为最熟悉自己负责业务的那个人。 47 | 48 | 中级工程师开始要注重代码规范,学习更底层的知识,一般还要指导初级工程师。同时要懂得更多职场规则,并做好长远的职业规划。 49 | 50 | ### 认知篇 51 | 52 | * [4.1 如何引入开源项目](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247483992&idx=1&sn=ccce3c3125c82fc491f7b3613e0e8949&chksm=c31aa039f46d292fea9adb6cfcd082e992bdca741c5be2560822d480da93848ffbeddc9db70d#rd) 53 | * [4.2 如何快速排查问题](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247483996&idx=1&sn=5fb7560e68335c89c84f15b5df612f2a&chksm=c31aa03df46d292ba67382b441e59385abc02ccd8870ed6c8440a9fbf2b70d72366160715a3a#rd) 54 | * [4.3 怎样写出漂亮的代码](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247484003&idx=1&sn=285e0c949e73045e7ae480fc257c2806&chksm=c31aa002f46d2914ce8380bd1f88b5965e59540f98925fb104fc06154b66cbacb28703ac1079#rd) 55 | * [4.4 怎样写好注释](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247484010&idx=1&sn=934f37bdad0c3ebb281efde15c007aa2&chksm=c31aa00bf46d291d1ba4c82825dd24d7f1283f475c4189fdeeb919e851313f7f950bff284de5#rd) 56 | * [4.5 代码出 Bug 该怎么办?](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247484014&idx=1&sn=5d3878139f8aa49cb8fe087f89a2cc26&chksm=c31aa00ff46d291990e1e2a59b8f66d9431022a84f2c549a6075beb8517638f3bd443d5de2f6#rd) 57 | * [4.6 怎样才能少出 Bug ?](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247484018&idx=1&sn=0568f7d052b9d3b29ce1ba1f35ea9f31&chksm=c31aa013f46d2905dde1e4a3c65030b3b0769cb6fb81d6d3a573208749d994f66d646a5a1b54#rd) 58 | * [4.7 业务开发与架构开发](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247484022&idx=1&sn=d526b326c961c2026090a1ac742c7e23&chksm=c31aa017f46d29017dc36fa3dd44eb5d4a6e94e67598124b6e61c3d7207dbf77a3afe7793443#rd) 59 | 60 | ### 知识篇 61 | 62 | * [5.1 进程间通信](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247484038&idx=1&sn=2015163a037597136dcc8b8497ce248c&chksm=c31aa0e7f46d29f137c1c06ee5374d401d08e4f42feff1262c274e9f72c493b427b7046d32da#rd) 63 | * [5.2 热修复技术](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247484046&idx=1&sn=071c7246e60a32c1dc163c6037aa1c07&chksm=c31aa0eff46d29f9b54a8cb1ebf5575567cc6072b0f68438438384aa310934b42987f943ad7f#rd) 64 | * [5.3 常用设计模式](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247484057&idx=1&sn=fc9bde6fbf4a3eea6dc7aec82cfa5495&chksm=c31aa0f8f46d29eebf63fab507299b3a120eedcea43ee670b5ea58c73c57c00bfa26047fa5f3#rd) 65 | * [5.4 常用架构模式](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247484071&idx=1&sn=df15a56a90644e795630aea3f3d47c75&chksm=c31aa0c6f46d29d0558b44f4d1731cacb94e8a09152c5174f558c966ab32554cb5fc66498842#rd) 66 | * [5.5 如何优化应用启动性能](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247484080&idx=1&sn=9dd830ae61a90d30f80a71e5d916ec8d&chksm=c31aa0d1f46d29c78929241f4e56493396b81d5ee5ec02f0db3fa9a82da06db563f50f0c618c#rd) 67 | * [5.6 经典开源项目解析](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247484106&idx=1&sn=0ae670e83b45a3466c8e66a1fb0d6e49&chksm=c31aa0abf46d29bd049db987438251dbabf2ccdb292fa4f51efd1e92ff2c5247dee33b884a46#rd) 68 | 69 | ### 职场篇 70 | 71 | * [6.1 职场沟通技巧](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247484110&idx=1&sn=9a0a216251dc01c35649d5ed7f1164aa&chksm=c31aa0aff46d29b9eacedc42ff8f1c9716a1ffcb766d3aeb3a85f0508986c695afbd52285210#rd) 72 | * [6.2 做好一个需求的要点](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247484114&idx=1&sn=a86e154d89e671a09f6d67d6e3f6e4f9&chksm=c31aa0b3f46d29a518614059ca93e6f3498884a0afee7e3661e024e4484f5026a1e8bb21223b#rd) 73 | * [6.3 做好长期规划](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247484118&idx=1&sn=0df29d42df1273a36fa2176239d460de&chksm=c31aa0b7f46d29a19b464fd95d15dfa9b93e968e59113e2d6d6195946b0259034d518f5b0e79#rd) 74 | * [6.4 要不要拒绝 996 ?](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247484122&idx=1&sn=cdb1dc3ff32c2d532ccced4f00d97c2e&chksm=c31aa0bbf46d29ad2cbe1112e1e205813684fd275b7c279685555c1c4afce0b7d523ab08de4d#rd) 75 | 76 | 77 | ## 第三部分、高级工程师进阶 78 | 79 | 高级工程师阶段,无论是编程能力还是业务能力,你都具有了一些不可替代性。你通常负责新技术的预研,重要需求推进以及新项目的技术选型。高级工程师会让老板和同事觉得:非你不可。你更多的时间是在解决别人解决不了的事情,尝试业界还未尝试过的方案以及帮助其他工程师成长。 80 | 81 | 到了这个阶段编程语言已经不重要了,一切选择都为了业务更好的发展。同时也要考虑更多代码之外的事情了。 82 | 83 | ### 认知篇 84 | 85 | * [7.1 高级工程师的特点](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247484126&idx=1&sn=9e8ec0b26bb3342c429cae92cf2a92ae&chksm=c31aa0bff46d29a95ed1c56c0cbf5b1b10cb454368469c5018943b1caa46a133154f033cedce#rd) 86 | * [7.2 参与开源项目](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247484130&idx=1&sn=8c6c9c25e5978a17ffcff674599b4bf9&chksm=c31aa083f46d2995082430c8a9ac1ed8ad3fd0d5bf08f0ce737630b13a81759528478adb0cd0#rd) 87 | * [7.3 如何判断技术发展趋势](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247484134&idx=1&sn=7f5eb2187b20126cd7957e5d74ec59b4&chksm=c31aa087f46d299103702bb6a7547078e3f3b25f224a324fdf141312be9c4f17f008815dd588#rd) 88 | 89 | ### 知识篇 90 | 91 | * [8.1 了解跨平台开发](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247484140&idx=1&sn=8f6521d1dd820bb3f16278bac27a4deb&chksm=c31aa08df46d299ba908321e4ccecd4597a3240c7ba891f7b09606639c502a32e53d7c52c7a7#rd) 92 | * [8.2 Flutter 是跨平台的未来吗?](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247484144&idx=1&sn=7376b6d7c3ce758f09808a29006ba029&chksm=c31aa091f46d29878cabd9ed2d2ff7ca5004f4d126b83218bec1abd377d27002776c177a0b44#rd) 93 | * [8.3 最优跨平台方案是什么?](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247484148&idx=1&sn=f600fc2f14cbd3b3fe8a1152ad53e4ff&chksm=c31aa095f46d29831021ac6cce62f3fdb6f98c2b8e7693f77b7083e0b58f81b58b26a1158635#rd) 94 | * [8.4 大型项目架构解析](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247484152&idx=1&sn=b2b52b55722389f73c98331d80bcbe23&chksm=c31aa099f46d298f78cfdbe8a54d242d68eb773aed580406337349b779f8a3d134178a546f1b#rd) 95 | * [8.5 构建移动开发平台](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247484156&idx=1&sn=7a10e4c1d7abb5cb5a5b36e9f9fac494&chksm=c31aa09df46d298b2a2a62803a2b98ffb96cfe683ad18636af5802286d85ba7e685085c3b878#rd) 96 | 97 | ### 职场篇 98 | 99 | * [9.1 如何成为项目核心](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247484160&idx=1&sn=cc96a99703996f3f52081cbdfe0a7349&chksm=c31aa161f46d2877002e8e67d9128a061cbcf0b7bb015420edf34b52894af5ecf9c564014ce2#rd) 100 | * [9.2 工资要存起来,理财还是买房?](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247484166&idx=1&sn=46dce8d4fb6ebed4e0c9c9104c45d167&chksm=c31aa167f46d2871a2a8dd01d0908e40310876dbc0431a6bda97bdcd5b7002c8e63b55b94b2c#rd) 101 | * [9.3 如何面对35岁问题](http://mp.weixin.qq.com/s?__biz=Mzk0NTAxMDQ0Ng==&mid=2247484173&idx=1&sn=c813174dea46bbcc870825ccaecbad58&chksm=c31aa16cf46d287a18ca77133e73ef065beea68a3f13bdd0911479baff3019bc28fc357921c3#rd) 102 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | --------------------------------------------------------------------------------