PageRenderTime 64ms CodeModel.GetById 29ms RepoModel.GetById 1ms app.codeStats 0ms

/atlas-gradle-plugin/atlas-plugin/src/main/java/com/taobao/android/builder/extension/ManifestOptions.java

https://bitbucket.org/luo1291250810/atlas
Java | 405 lines | 119 code | 46 blank | 240 comment | 3 complexity | c2420a84f03b142802e53d8e737e5be4 MD5 | raw file
Possible License(s): GPL-2.0, Apache-2.0, LGPL-3.0
  1. /*
  2. *
  3. *
  4. * Apache License
  5. * Version 2.0, January 2004
  6. * http://www.apache.org/licenses/
  7. *
  8. * TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
  9. *
  10. * 1. Definitions.
  11. *
  12. * "License" shall mean the terms and conditions for use, reproduction,
  13. * and distribution as defined by Sections 1 through 9 of this document.
  14. *
  15. * "Licensor" shall mean the copyright owner or entity authorized by
  16. * the copyright owner that is granting the License.
  17. *
  18. * "Legal Entity" shall mean the union of the acting entity and all
  19. * other entities that control, are controlled by, or are under common
  20. * control with that entity. For the purposes of this definition,
  21. * "control" means (i) the power, direct or indirect, to cause the
  22. * direction or management of such entity, whether by contract or
  23. * otherwise, or (ii) ownership of fifty percent (50%) or more of the
  24. * outstanding shares, or (iii) beneficial ownership of such entity.
  25. *
  26. * "You" (or "Your") shall mean an individual or Legal Entity
  27. * exercising permissions granted by this License.
  28. *
  29. * "Source" form shall mean the preferred form for making modifications,
  30. * including but not limited to software source code, documentation
  31. * source, and configuration files.
  32. *
  33. * "Object" form shall mean any form resulting from mechanical
  34. * transformation or translation of a Source form, including but
  35. * not limited to compiled object code, generated documentation,
  36. * and conversions to other media types.
  37. *
  38. * "Work" shall mean the work of authorship, whether in Source or
  39. * Object form, made available under the License, as indicated by a
  40. * copyright notice that is included in or attached to the work
  41. * (an example is provided in the Appendix below).
  42. *
  43. * "Derivative Works" shall mean any work, whether in Source or Object
  44. * form, that is based on (or derived from) the Work and for which the
  45. * editorial revisions, annotations, elaborations, or other modifications
  46. * represent, as a whole, an original work of authorship. For the purposes
  47. * of this License, Derivative Works shall not include works that remain
  48. * separable from, or merely link (or bind by name) to the interfaces of,
  49. * the Work and Derivative Works thereof.
  50. *
  51. * "Contribution" shall mean any work of authorship, including
  52. * the original version of the Work and any modifications or additions
  53. * to that Work or Derivative Works thereof, that is intentionally
  54. * submitted to Licensor for inclusion in the Work by the copyright owner
  55. * or by an individual or Legal Entity authorized to submit on behalf of
  56. * the copyright owner. For the purposes of this definition, "submitted"
  57. * means any form of electronic, verbal, or written communication sent
  58. * to the Licensor or its representatives, including but not limited to
  59. * communication on electronic mailing lists, source code control systems,
  60. * and issue tracking systems that are managed by, or on behalf of, the
  61. * Licensor for the purpose of discussing and improving the Work, but
  62. * excluding communication that is conspicuously marked or otherwise
  63. * designated in writing by the copyright owner as "Not a Contribution."
  64. *
  65. * "Contributor" shall mean Licensor and any individual or Legal Entity
  66. * on behalf of whom a Contribution has been received by Licensor and
  67. * subsequently incorporated within the Work.
  68. *
  69. * 2. Grant of Copyright License. Subject to the terms and conditions of
  70. * this License, each Contributor hereby grants to You a perpetual,
  71. * worldwide, non-exclusive, no-charge, royalty-free, irrevocable
  72. * copyright license to reproduce, prepare Derivative Works of,
  73. * publicly display, publicly perform, sublicense, and distribute the
  74. * Work and such Derivative Works in Source or Object form.
  75. *
  76. * 3. Grant of Patent License. Subject to the terms and conditions of
  77. * this License, each Contributor hereby grants to You a perpetual,
  78. * worldwide, non-exclusive, no-charge, royalty-free, irrevocable
  79. * (except as stated in this section) patent license to make, have made,
  80. * use, offer to sell, sell, import, and otherwise transfer the Work,
  81. * where such license applies only to those patent claims licensable
  82. * by such Contributor that are necessarily infringed by their
  83. * Contribution(s) alone or by combination of their Contribution(s)
  84. * with the Work to which such Contribution(s) was submitted. If You
  85. * institute patent litigation against any entity (including a
  86. * cross-claim or counterclaim in a lawsuit) alleging that the Work
  87. * or a Contribution incorporated within the Work constitutes direct
  88. * or contributory patent infringement, then any patent licenses
  89. * granted to You under this License for that Work shall terminate
  90. * as of the date such litigation is filed.
  91. *
  92. * 4. Redistribution. You may reproduce and distribute copies of the
  93. * Work or Derivative Works thereof in any medium, with or without
  94. * modifications, and in Source or Object form, provided that You
  95. * meet the following conditions:
  96. *
  97. * (a) You must give any other recipients of the Work or
  98. * Derivative Works a copy of this License; and
  99. *
  100. * (b) You must cause any modified files to carry prominent notices
  101. * stating that You changed the files; and
  102. *
  103. * (c) You must retain, in the Source form of any Derivative Works
  104. * that You distribute, all copyright, patent, trademark, and
  105. * attribution notices from the Source form of the Work,
  106. * excluding those notices that do not pertain to any part of
  107. * the Derivative Works; and
  108. *
  109. * (d) If the Work includes a "NOTICE" text file as part of its
  110. * distribution, then any Derivative Works that You distribute must
  111. * include a readable copy of the attribution notices contained
  112. * within such NOTICE file, excluding those notices that do not
  113. * pertain to any part of the Derivative Works, in at least one
  114. * of the following places: within a NOTICE text file distributed
  115. * as part of the Derivative Works; within the Source form or
  116. * documentation, if provided along with the Derivative Works; or,
  117. * within a display generated by the Derivative Works, if and
  118. * wherever such third-party notices normally appear. The contents
  119. * of the NOTICE file are for informational purposes only and
  120. * do not modify the License. You may add Your own attribution
  121. * notices within Derivative Works that You distribute, alongside
  122. * or as an addendum to the NOTICE text from the Work, provided
  123. * that such additional attribution notices cannot be construed
  124. * as modifying the License.
  125. *
  126. * You may add Your own copyright statement to Your modifications and
  127. * may provide additional or different license terms and conditions
  128. * for use, reproduction, or distribution of Your modifications, or
  129. * for any such Derivative Works as a whole, provided Your use,
  130. * reproduction, and distribution of the Work otherwise complies with
  131. * the conditions stated in this License.
  132. *
  133. * 5. Submission of Contributions. Unless You explicitly state otherwise,
  134. * any Contribution intentionally submitted for inclusion in the Work
  135. * by You to the Licensor shall be under the terms and conditions of
  136. * this License, without any additional terms or conditions.
  137. * Notwithstanding the above, nothing herein shall supersede or modify
  138. * the terms of any separate license agreement you may have executed
  139. * with Licensor regarding such Contributions.
  140. *
  141. * 6. Trademarks. This License does not grant permission to use the trade
  142. * names, trademarks, service marks, or product names of the Licensor,
  143. * except as required for reasonable and customary use in describing the
  144. * origin of the Work and reproducing the content of the NOTICE file.
  145. *
  146. * 7. Disclaimer of Warranty. Unless required by applicable law or
  147. * agreed to in writing, Licensor provides the Work (and each
  148. * Contributor provides its Contributions) on an "AS IS" BASIS,
  149. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
  150. * implied, including, without limitation, any warranties or conditions
  151. * of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
  152. * PARTICULAR PURPOSE. You are solely responsible for determining the
  153. * appropriateness of using or redistributing the Work and assume any
  154. * risks associated with Your exercise of permissions under this License.
  155. *
  156. * 8. Limitation of Liability. In no event and under no legal theory,
  157. * whether in tort (including negligence), contract, or otherwise,
  158. * unless required by applicable law (such as deliberate and grossly
  159. * negligent acts) or agreed to in writing, shall any Contributor be
  160. * liable to You for damages, including any direct, indirect, special,
  161. * incidental, or consequential damages of any character arising as a
  162. * result of this License or out of the use or inability to use the
  163. * Work (including but not limited to damages for loss of goodwill,
  164. * work stoppage, computer failure or malfunction, or any and all
  165. * other commercial damages or losses), even if such Contributor
  166. * has been advised of the possibility of such damages.
  167. *
  168. * 9. Accepting Warranty or Additional Liability. While redistributing
  169. * the Work or Derivative Works thereof, You may choose to offer,
  170. * and charge a fee for, acceptance of support, warranty, indemnity,
  171. * or other liability obligations and/or rights consistent with this
  172. * License. However, in accepting such obligations, You may act only
  173. * on Your own behalf and on Your sole responsibility, not on behalf
  174. * of any other Contributor, and only if You agree to indemnify,
  175. * defend, and hold each Contributor harmless for any liability
  176. * incurred by, or claims asserted against, such Contributor by reason
  177. * of your accepting any such warranty or additional liability.
  178. *
  179. * END OF TERMS AND CONDITIONS
  180. *
  181. * APPENDIX: How to apply the Apache License to your work.
  182. *
  183. * To apply the Apache License to your work, attach the following
  184. * boilerplate notice, with the fields enclosed by brackets "[]"
  185. * replaced with your own identifying information. (Don't include
  186. * the brackets!) The text should be enclosed in the appropriate
  187. * comment syntax for the file format. We also recommend that a
  188. * file or class name and description of purpose be included on the
  189. * same "printed page" as the copyright notice for easier
  190. * identification within third-party archives.
  191. *
  192. * Copyright 2016 Alibaba Group
  193. *
  194. * Licensed under the Apache License, Version 2.0 (the "License");
  195. * you may not use this file except in compliance with the License.
  196. * You may obtain a copy of the License at
  197. *
  198. * http://www.apache.org/licenses/LICENSE-2.0
  199. *
  200. * Unless required by applicable law or agreed to in writing, software
  201. * distributed under the License is distributed on an "AS IS" BASIS,
  202. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  203. * See the License for the specific language governing permissions and
  204. * limitations under the License.
  205. *
  206. *
  207. */
  208. package com.taobao.android.builder.extension;
  209. import com.alibaba.fastjson.annotation.JSONField;
  210. import com.google.common.collect.Sets;
  211. import com.taobao.android.builder.extension.annotation.Config;
  212. import org.gradle.api.tasks.Input;
  213. import java.util.Set;
  214. /**
  215. * Created by shenghua.nish on 2016-05-17 上午9:39.
  216. */
  217. public class ManifestOptions {
  218. @JSONField(serialize = false)
  219. @Input
  220. private Set<String> retainLaunches = Sets.newHashSet();
  221. @JSONField(serialize = false)
  222. @Input
  223. private Set<String> retainPermissions = Sets.newHashSet();
  224. @JSONField(serialize = false)
  225. @Input
  226. private Set<String> removeSystemPermissions = Sets.newHashSet();
  227. @JSONField(serialize = false)
  228. @Input
  229. private boolean removeCustomPermission = true;
  230. @JSONField(serialize = false)
  231. @Input
  232. private boolean addBundleLocation = true;
  233. @Config(message = "使用atlas的application,包含 atlas基础初始化及multidex逻辑" , order = 1)
  234. @Input
  235. private boolean replaceApplication = true;
  236. @JSONField(serialize = false)
  237. private boolean addMultiDexMetaData;
  238. private boolean removeProvider = false;
  239. @Input
  240. private Set<String> notMergedBundles = Sets.newHashSet();
  241. public Set<String> getNotMergedBundles() {
  242. return notMergedBundles;
  243. }
  244. public void setNotMergedBundles(Set<String> notMerged) {
  245. notMergedBundles = notMerged;
  246. }
  247. /**
  248. * 返回要保留的启动launch的列表
  249. *
  250. * @return
  251. */
  252. public Set<String> getRetainLaunches() {
  253. return retainLaunches;
  254. }
  255. /**
  256. * 是否移除自定义权限
  257. *
  258. * @return
  259. */
  260. public boolean isRemoveCustomPermission() {
  261. return removeCustomPermission;
  262. }
  263. public void setRemoveCustomPermission(boolean removeCustomPermission) {
  264. this.removeCustomPermission = removeCustomPermission;
  265. }
  266. /**
  267. * 返回需要保留的自定义权限的名称
  268. *
  269. * @return
  270. */
  271. public Set<String> getRetainPermissions() {
  272. return retainPermissions;
  273. }
  274. /**
  275. * 返回要移除的系统权限的名称
  276. *
  277. * @return
  278. */
  279. public Set<String> getRemoveSystemPermissions() {
  280. return removeSystemPermissions;
  281. }
  282. public void setRetainLaunches(Set<String> retainLaunches) {
  283. this.retainLaunches = retainLaunches;
  284. }
  285. /**
  286. * Sets extensions of files that will not be stored compressed in the APK.
  287. * <p>
  288. * <p>Equivalent of the -0 flag. See <code>aapt --help</code>
  289. */
  290. public void retainLaunches(String retainLaunche) {
  291. retainLaunches.add(retainLaunche);
  292. }
  293. /**
  294. * Sets extensions of files that will not be stored compressed in the APK.
  295. * <p>
  296. * <p>Equivalent of the -0 flag. See <code>aapt --help</code>
  297. */
  298. public void retainLaunches(String... retainLaunche) {
  299. for (String str : retainLaunche) {
  300. retainLaunches.add(str);
  301. }
  302. }
  303. public void setRetainPermissions(Set<String> retainPermissions) {
  304. this.retainPermissions = retainPermissions;
  305. }
  306. public void setRemoveSystemPermissions(Set<String> removeSystemPermissions) {
  307. this.removeSystemPermissions = removeSystemPermissions;
  308. }
  309. public void removeSystemPermissions(String removeSystemPermission) {
  310. removeSystemPermissions.add(removeSystemPermission);
  311. }
  312. public void removeSystemPermissions(String... removeSystemPermission) {
  313. for (String str : removeSystemPermission) {
  314. removeSystemPermissions.add(str);
  315. }
  316. }
  317. public void retainPermissions(String retainPermission) {
  318. retainPermissions.add(retainPermission);
  319. }
  320. public void retainPermissions(String... retainPermission) {
  321. for (String str : retainPermission) {
  322. retainPermissions.add(str);
  323. }
  324. }
  325. public boolean isAddBundleLocation() {
  326. return addBundleLocation;
  327. }
  328. public void setAddBundleLocation(boolean addBundleLocation) {
  329. this.addBundleLocation = addBundleLocation;
  330. }
  331. public boolean isReplaceApplication() {
  332. return replaceApplication;
  333. }
  334. public void setReplaceApplication(boolean replaceApplication) {
  335. this.replaceApplication = replaceApplication;
  336. }
  337. public boolean isAddMultiDexMetaData() {
  338. return addMultiDexMetaData;
  339. }
  340. public void setAddMultiDexMetaData(boolean addMultiDexMetaData) {
  341. this.addMultiDexMetaData = addMultiDexMetaData;
  342. }
  343. public boolean isRemoveProvider() {
  344. return removeProvider;
  345. }
  346. public void setRemoveProvider(boolean removeProvider) {
  347. this.removeProvider = removeProvider;
  348. }
  349. public String toString() {
  350. return "ManifestOptionsImpl{" +
  351. "retainLaunches=" + retainLaunches +
  352. ", retainPermissions=" + retainPermissions +
  353. ", removeSystemPermissions=" + removeSystemPermissions +
  354. ", removeCustomPermission=" + removeCustomPermission +
  355. ", addBundleLocation=" + addBundleLocation +
  356. ", notMergedBundles=" + notMergedBundles +
  357. '}';
  358. }
  359. }