Advertisement
Guest User

build.xml

a guest
Apr 6th, 2020
378
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 30.43 KB | None | 0 0
  1. <?xml version="1.0"?>
  2.  
  3. <!-- ======================================================================
  4. Copyright 2011 Google Inc. All Rights Reserved.
  5. Copyright 2012-2017 Massachusetts Institute of Technology, All rights reserved.
  6.  
  7. App Inventor component libraries
  8. ====================================================================== -->
  9.  
  10. <project name="components" default="all">
  11. <description>
  12. App Inventor component libraries
  13. </description>
  14.  
  15. <target name="all"
  16. depends="CommonConstants,AndroidRuntime">
  17. </target>
  18.  
  19. <target name="tests"
  20. depends="CommonTests,AndroidRuntimeTests">
  21. </target>
  22.  
  23. <!-- =====================================================================
  24. Import common directory, task, and target definitions.
  25. ===================================================================== -->
  26. <import file="../build-common.xml" />
  27.  
  28. <!-- =====================================================================
  29. Define base package path for internal components.
  30. ===================================================================== -->
  31. <property name="components.pkg" value="com/google/appinventor/components" />
  32. <property name="zxing.pkg" value="com/google/zxing" />
  33.  
  34. <!-- =====================================================================
  35. Define external components properties.
  36. ===================================================================== -->
  37. <property name="ExternalComponentGenerator-class.dir" location="${class.dir}/ExternalComponentGenerator" />
  38. <property name="ExternalComponent.dir" location="${local.build.dir}/externalComponents" />
  39. <property name="ExternalComponent-class.dir" location="${local.build.dir}/externalComponents-class" />
  40. <property name="Extensions.dir" location="${local.build.dir}/extensions" />
  41. <!-- Can be used by extension authors to use the old-style AIX package layout -->
  42. <property name="extensions.packagefqcn" value="false" />
  43.  
  44. <!-- =====================================================================
  45. CommonConstants: library of constants used across App Inventor
  46. ===================================================================== -->
  47. <target name="CommonConstants"
  48. description="Generate library of constants used across App Inventor"
  49. depends="init">
  50. <property name="CommonConstants-class.dir" location="${class.dir}/CommonConstants" />
  51. <mkdir dir="${CommonConstants-class.dir}" />
  52.  
  53. <ai.javac destdir="${CommonConstants-class.dir}">
  54. <include name="${components.pkg}/common/*.java" />
  55. <exclude name="${components.pkg}/common/HtmlEntities.java" />
  56. </ai.javac>
  57.  
  58. <jar destfile="${public.build.dir}/CommonConstants.jar">
  59. <fileset dir="${CommonConstants-class.dir}"/>
  60. </jar>
  61.  
  62. <jar destfile="${public.build.dir}/CommonConstants-gwt.jar">
  63. <fileset dir="${CommonConstants-class.dir}"/>
  64. <!-- Source files needed for GWT compilation: -->
  65. <fileset dir="${src.dir}">
  66. <include name="${components.pkg}/common/*.java" />
  67. <exclude name="${components.pkg}/common/HtmlEntities.java" />
  68. <include name="${components.pkg}/CommonConstants.gwt.xml" />
  69. </fileset>
  70. </jar>
  71. </target>
  72.  
  73. <!-- =====================================================================
  74. HtmlEntities: library containing utility class for working with
  75. HTML entities.
  76. ===================================================================== -->
  77. <target name="HtmlEntities"
  78. description="Generate library containing utility class for working with HTML entities"
  79. depends="init">
  80. <property name="HtmlEntities-class.dir" location="${class.dir}/HtmlEntities" />
  81. <mkdir dir="${HtmlEntities-class.dir}" />
  82.  
  83. <ai.javac destdir="${HtmlEntities-class.dir}">
  84. <include name="${components.pkg}/common/HtmlEntities.java" />
  85. </ai.javac>
  86.  
  87. <jar destfile="${local.build.dir}/HtmlEntities.jar">
  88. <fileset dir="${HtmlEntities-class.dir}"/>
  89. </jar>
  90. </target>
  91.  
  92. <!-- =====================================================================
  93. CommonTests: build and run the common tests and generate the output results
  94. ===================================================================== -->
  95.  
  96. <path id="libsForCommonTests.path">
  97. <pathelement location="${local.build.dir}/HtmlEntities.jar" />
  98. <pathelement location="${lib.dir}/junit/junit-4.8.2.jar" />
  99. </path>
  100.  
  101. <path id="CommonTests.path">
  102. <path refid="libsForCommonTests.path"/>
  103. <pathelement location="${local.build.dir}/CommonTests.jar" />
  104. </path>
  105.  
  106. <target name="CommonTests"
  107. depends="HtmlEntities"
  108. description="build and run the test suite" >
  109. <ai.dojunit aij-testingtarget="CommonTests"
  110. aij-dir="${components.pkg}/common" >
  111. </ai.dojunit>
  112. </target>
  113.  
  114. <!-- =====================================================================
  115. CopyComponentLibraries
  116. ===================================================================== -->
  117. <property name="public.deps.dir" location="${public.build.dir}/deps" />
  118. <target name="CopyComponentLibraries"
  119. depends="Barcode"
  120. description="Copies libraries needed for components into the public build directory">
  121. <property name="support.dir" location="${lib.dir}/android/support" />
  122. <property name="support.version" value="28.0.0" />
  123. <copy toFile="${public.deps.dir}/osmdroid.aar" file="${lib.dir}/osmdroid/osmdroid-5.6.6.aar" />
  124. <copy toFile="${public.deps.dir}/osmdroid.jar" file="${lib.dir}/osmdroid/osmdroid-5.6.6.jar" />
  125. <copy toFile="${public.deps.dir}/webrtc.jar"
  126. file="${lib.dir}/webrtc/webrtc.jar" />
  127. <copy toFile="${public.deps.dir}/armeabi-v7a/libjingle_peerconnection_so.so"
  128. file="${lib.dir}/webrtc/armeabi-v7a/libjingle_peerconnection_so.so" />
  129. <copy toFile="${public.deps.dir}/arm64-v8a/libjingle_peerconnection_so.so"
  130. file="${lib.dir}/webrtc/arm64-v8a/libjingle_peerconnection_so.so" />
  131. <copy toFile="${public.deps.dir}/x86_64/libjingle_peerconnection_so.so"
  132. file="${lib.dir}/webrtc/x86_64/libjingle_peerconnection_so.so" />
  133. <copy toFile="${public.deps.dir}/jts.jar" file="${lib.dir}/jts/jts-core-1.15.0-20170823.040415-301.jar" />
  134. <copy toFile="${public.deps.dir}/androidsvg.jar" file="${lib.dir}/androidsvg/androidsvg-d4ec6d8.jar" />
  135. <copy toFile="${public.deps.dir}/kawa.jar" file="${lib.dir}/kawa/kawa-1.11-modified.jar" />
  136. <copy toFile="${public.deps.dir}/acra-4.4.0.jar" file="${lib.dir}/acra/acra-4.4.0.jar" />
  137. <copy toFile="${public.deps.dir}/twitter4j.jar" file="${lib.dir}/twitter/twitter4j-core-3.0.5.jar" />
  138. <copy toFile="${public.deps.dir}/twitter4jmedia.jar" file="${lib.dir}/twitter/twitter4j-media-support-3.0.5.jar" />
  139. <copy toFile="${public.deps.dir}/httpmime.jar" file="${lib.dir}/apache-http/httpmime-4.3.4.jar" />
  140. <copy toFile="${public.deps.dir}/fusiontables.jar" file="${lib.dir}/fusiontables/fusiontables.jar" />
  141. <copy toFile="${public.deps.dir}/firebase.jar" file="${lib.dir}/firebase/firebase-client-android-2.5.0.jar" />
  142. <copy toFile="${public.deps.dir}/google-api-client-beta.jar" file="${lib.dir}/oauth/google-api-client-1.10.3-beta.jar" />
  143. <copy toFile="${public.deps.dir}/google-http-client-beta.jar" file="${lib.dir}/oauth/google-http-client-1.10.3-beta.jar" />
  144. <copy toFile="${public.deps.dir}/google-api-client-android2-beta.jar" file="${lib.dir}/oauth/google-api-client-android2-1.10.3-beta.jar" />
  145. <copy toFile="${public.deps.dir}/google-http-client-android2-beta.jar" file="${lib.dir}/oauth/google-http-client-android2-1.10.3-beta.jar" />
  146. <copy toFile="${public.deps.dir}/google-http-client-android3-beta.jar" file="${lib.dir}/oauth/google-http-client-android3-1.10.3-beta.jar" />
  147. <copy toFile="${public.deps.dir}/gson-2.1.jar" file="${lib.dir}/gson/gson-2.1.jar" />
  148. <copy toFile="${public.deps.dir}/json.jar" file="${lib.dir}/json/json-android.jar" />
  149. <copy toFile="${public.deps.dir}/google-oauth-client-beta.jar" file="${lib.dir}/oauth/google-oauth-client-1.10.1-beta.jar" />
  150. <copy toFile="${public.deps.dir}/jedis.jar" file="${lib.dir}/jedis/jedis-3.0.0-SNAPSHOT-jar-with-dependencies.jar" />
  151. <copy toFile="${public.deps.dir}/commons-pool.jar" file="${lib.dir}/commons-pool/commons-pool2-2.0.jar" />
  152. <copy toFile="${public.deps.dir}/guava-14.0.1.jar" file="${lib.dir}/guava/guava-14.0.1.jar" />
  153. <copy toFile="${public.deps.dir}/core.jar" file="${lib.dir}/QRGenerator/core.jar" />
  154. <copy toFile="${public.deps.dir}/physicaloid.jar" file="${lib.dir}/physicaloid/physicaloid-library.jar" />
  155. <copy toFile="${public.deps.dir}/Twilio.jar" file="${lib.dir}/JarFolder/Twilio.jar" />
  156. <!-- BEGIN Android Support Libraries -->
  157. <copy todir="${public.deps.dir}/">
  158. <fileset dir="${support.dir}/" includes="*.aar,*.jar" excludes="testing-support-R-classes.jar" />
  159. <mapper type="regexp" from="([-a-z0-9]*)-[0-9\.]*\.(aar|jar)$$" to="\1.\2" />
  160. </copy>
  161. <copy todir="${public.deps.dir}/">
  162. <fileset dir="${support.dir}/" includes="*.txt" />
  163. </copy>
  164. <copy toFile="${public.deps.dir}/http-legacy.jar" file="${lib.dir}/android/legacy/org.apache.http.legacy.jar" />
  165. <!-- END Android Support Libraries -->
  166. <copy toFile="${public.deps.dir}/android.jar" file="${lib.dir}/android/android-28/android.jar" />
  167. <copy toFile="${public.deps.dir}/dx.jar" file="${lib.dir}/android/tools/dx.jar" />
  168. <copy toFile="${public.deps.dir}/apksigner.jar" file="${lib.dir}/android/tools/apksigner.jar" />
  169. <copy toFile="${public.deps.dir}/CommonVersion.jar" file="${build.dir}/common/CommonVersion.jar" />
  170.  
  171. <!-- Add extension libraries here -->
  172. <!-- Example: <copy toFile="${public.deps.dir}/my-dependency.jar" file="${lib.dir}/my-dependency/my-dependency-1.0.0.jar" /> -->
  173. <!-- Remember to include my-dependency.jar in the @UsesLibraries annotation in the extension -->
  174. </target>
  175.  
  176. <path id="AndroidRuntime.path">
  177. <fileset dir="${public.deps.dir}">
  178. <include name="*.jar" />
  179. <exclude name="android.jar" /> <!-- Needs to be excluded for testing classpath consistency -->
  180. </fileset>
  181. <pathelement location="${local.build.dir}/HtmlEntities.jar" />
  182. <pathelement location="${public.build.dir}/CommonConstants.jar" />
  183. </path>
  184.  
  185. <target name="AndroidRuntime.uptodate">
  186. <uptodate property="AndroidRuntime.uptodate" targetfile="${public.build.dir}/AndroidRuntime.jar">
  187. <srcfiles dir="${src.dir}" includes="**/*.java" />
  188. <srcfiles dir="${public.deps.dir}" includes="*" />
  189. </uptodate>
  190. </target>
  191.  
  192. <!-- =====================================================================
  193. AndroidRuntime: library providing runtime support for components
  194. ===================================================================== -->
  195. <property name="AndroidRuntime-class.dir" location="${class.dir}/AndroidRuntime" />
  196. <target name="AndroidRuntime"
  197. description="Generate runtime library implementing components"
  198. unless="AndroidRuntime.uptodate"
  199. depends="common_CommonVersion,HtmlEntities,CopyComponentLibraries,AnnotationProcessors,AndroidRuntime.uptodate">
  200. <mkdir dir="${AndroidRuntime-class.dir}" />
  201.  
  202. <!-- We need to delete all the classes before running javac below. Otherwise, javac will only
  203. process the Java files whose classes are not up-to-date and we'll end up with only a subset
  204. of the results. For example, if only Label.java was modified, our annotation processor code
  205. will only be executed for Label.java and we'll only have results for Label.java. -->
  206. <delete>
  207. <fileset dir="${AndroidRuntime-class.dir}">
  208. <include name="**/*"/>
  209. </fileset>
  210. </delete>
  211. <mkdir dir="${AndroidRuntime-class.dir}" />
  212.  
  213. <ai.javac destdir="${AndroidRuntime-class.dir}">
  214. <include name="**/*.java" /> <!-- include all java files -->
  215. <exclude name="${zxing.pkg}/**/*.java" /> <!-- exclude zxing package -->
  216. <exclude name="${components.pkg}/scripts/**/*.java" /> <!-- exclude components/script package -->
  217. <exclude name="${components.pkg}/common/**/*.java" /> <!-- exclude components/common package -->
  218. <classpath>
  219. <path refid="AndroidRuntime.path" />
  220. <pathelement location="${local.build.dir}/AnnotationProcessors.jar" />
  221. <pathelement location="${public.deps.dir}/android.jar" />
  222. </classpath>
  223. </ai.javac>
  224.  
  225. <jar basedir="${AndroidRuntime-class.dir}"
  226. destfile="${public.build.dir}/AndroidRuntime.jar">
  227. <zipfileset src="${local.build.dir}/HtmlEntities.jar"/>
  228. <zipfileset src="${public.build.dir}/CommonConstants.jar"/>
  229. <zipfileset src="${build.dir}/common/CommonVersion.jar" />
  230. <exclude name="simple_components.json"/>
  231. <exclude name="simple_components_build_info.json"/>
  232. <exclude name="simple_components.txt"/>
  233. <exclude name="component-doc.html"/>
  234. <exclude name="ComponentsTranslation.java"/>
  235. <exclude name="AutogeneratedOdeMessages.java"/>
  236. </jar>
  237.  
  238. <!-- Move AnnotationProcessor products into place -->
  239. <copy todir="${public.build.dir}">
  240. <fileset dir="${AndroidRuntime-class.dir}">
  241. <include name="simple_components.txt" />
  242. <include name="simple_components.json" />
  243. <include name="simple_components_build_info.json" />
  244. <include name="component-doc.html" />
  245. </fileset>
  246. </copy>
  247. <mkdir dir="${public.build.dir}/ComponentTranslation/src/com/google/appinventor/client"/>
  248. <copy todir="${public.build.dir}/ComponentTranslation/src/com/google/appinventor/client">
  249. <fileset dir="${AndroidRuntime-class.dir}">
  250. <include name="*.java"/>
  251. </fileset>
  252. </copy>
  253. <copy todir="${appinventor.dir}/docs/markdown/reference/components/">
  254. <fileset dir="${AndroidRuntime-class.dir}">
  255. <include name="*.md" />
  256. <exclude name="internal.md" />
  257. </fileset>
  258. </copy>
  259. </target>
  260.  
  261. <!-- =====================================================================
  262. AndroidRuntimeTests: build and run the AndroidRuntime tests and generate the output results
  263. ===================================================================== -->
  264.  
  265. <path id="libsForAndroidRuntimeTests.path">
  266. <pathelement location="${public.build.dir}/AndroidRuntime.jar" />
  267. <pathelement location="${build.dir}/common/CommonTestUtils.jar" />
  268. <path refid="AndroidRuntime.path" />
  269. <pathelement location="${lib.dir}/junit/junit-4.8.2.jar" />
  270. <pathelement location="${lib.dir}/junit4/tl4j-junit4-1.1.3.jar" />
  271. <pathelement location="${lib.dir}/bouncycastle/bcprov-jdk15on-149.jar" />
  272. <pathelement location="${lib.dir}/powermock/cglib-nodep-2.2.jar" />
  273. <pathelement location="${lib.dir}/powermock/easymock-3.0.jar" />
  274. <pathelement location="${lib.dir}/powermock/javassist-3.18.0-GA.jar" />
  275. <pathelement location="${lib.dir}/powermock/objenesis-1.2.jar" />
  276. <pathelement location="${lib.dir}/powermock/powermock-easymock-1.4.10-full.jar" />
  277. <pathelement location="${lib.dir}/android/support/testing-support-R-classes.jar" />
  278. <!-- android.jar must go last on the classpath list
  279. so that its junit (or other) stubs don't override the real ones -->
  280. <pathelement location="${lib.dir}/robolectric/robolectric-3.3.2-all-deps.jar" />
  281. <pathelement location="${lib.dir}/android/android-28/android.jar" />
  282. </path>
  283.  
  284. <path id="AndroidRuntimeTests.path">
  285. <path refid="libsForAndroidRuntimeTests.path"/>
  286. <pathelement location="${local.build.dir}/AndroidRuntimeTests.jar" />
  287. </path>
  288.  
  289. <target name="AndroidRuntimeTests"
  290. depends="AndroidRuntime"
  291. description="build and run the test suite" >
  292. <ai.dojunit aij-testingtarget="AndroidRuntimeTests"
  293. aij-dir="${components.pkg}/runtime" >
  294. <!-- Include extra classes from Robolectric that need to be compiled with the sources -->
  295. <aij-supplemental-includes>
  296. <include name="org/robolectric/**/*.java" />
  297. </aij-supplemental-includes>
  298. </ai.dojunit>
  299. </target>
  300.  
  301. <!-- =====================================================================
  302. AnnotationProcessors: plugins for processing component annotations
  303. Note that AnnotationProcessors.jar, produced here, will contain all
  304. of its dependencies including guava. This makes it much easier to
  305. specify the -processorpath option in ai.apt.
  306. ===================================================================== -->
  307. <target name="AnnotationProcessors"
  308. description="Create plugins for annotation processing"
  309. depends="common_CommonUtils,CommonConstants">
  310.  
  311. <property name="AnnotationProcessors-class.dir"
  312. location="${class.dir}/AnnotationProcessors" />
  313. <mkdir dir="${AnnotationProcessors-class.dir}" />
  314.  
  315. <ai.javac destdir="${AnnotationProcessors-class.dir}"
  316. source="1.7" target="1.7">
  317. <include name="${components.pkg}/scripts/*.java" />
  318. <include name="${components.pkg}/annotations/*.java" />
  319. <include name="${components.pkg}/annotations/androidmanifest/*.java" />
  320. <classpath>
  321. <pathelement location="${public.build.dir}/CommonConstants.jar" />
  322. <pathelement location="${build.dir}/common/CommonUtils.jar" />
  323. <pathelement location="${lib.dir}/guava/guava-14.0.1.jar" />
  324. <pathelement location="${lib.dir}/json/json.jar" />
  325. </classpath>
  326. </ai.javac>
  327.  
  328. <copy todir="${AnnotationProcessors-class.dir}">
  329. <fileset dir="${src.dir}">
  330. <include name="${components.pkg}/scripts/templates/*" />
  331. </fileset>
  332. </copy>
  333.  
  334. <jar basedir="${AnnotationProcessors-class.dir}"
  335. destfile="${local.build.dir}/AnnotationProcessors.jar" >
  336. <zipfileset src="${public.build.dir}/CommonConstants.jar"/>
  337. <zipfileset src="${build.dir}/common/CommonUtils.jar" />
  338. <zipfileset src="${lib.dir}/guava/guava-14.0.1.jar" />
  339. <zipfileset src="${lib.dir}/json/json.jar" />
  340. <fileset dir="${src.dir}">
  341. <include name="META-INF/**/*"/>
  342. </fileset>
  343. </jar>
  344.  
  345. </target>
  346.  
  347. <!-- ======================================================================
  348. Internal Inclusion of ZXing 2.1
  349. ====================================================================== -->
  350.  
  351. <!-- =====================================================================
  352. Define base package path.
  353. ===================================================================== -->
  354. <property name="barcode.pkg" value="com/google/zxing/client/android" />
  355.  
  356. <target name="Barcode"
  357. depends=""
  358. description="Generate ZXing embedded library">
  359. <property name="Barcode-class.dir" location="${class.dir}/Barcode" />
  360. <mkdir dir="${Barcode-class.dir}" />
  361.  
  362. <ai.javac destdir="${Barcode-class.dir}">
  363. <include name="${barcode.pkg}/**/*.java" />
  364. <classpath>
  365. <pathelement location="${lib.dir}/QRGenerator/core.jar" />
  366. <pathelement location="${lib.dir}/android/android-28/android.jar" />
  367. </classpath>
  368. </ai.javac>
  369.  
  370. <jar basedir="${Barcode-class.dir}"
  371. destfile="${public.deps.dir}/Barcode.jar" />
  372.  
  373. </target>
  374.  
  375.  
  376. <!-- =====================================================================
  377. ExternalComponentGenerator: create required extension files
  378. ===================================================================== -->
  379. <target name="ExternalComponentGenerator"
  380. description="generate extension files"
  381. depends="AndroidRuntime">
  382. <mkdir dir="${ExternalComponentGenerator-class.dir}" />
  383. <mkdir dir="${ExternalComponent.dir}" />
  384. <mkdir dir="${ExternalComponent-class.dir}" />
  385. <ai.javac destdir="${ExternalComponentGenerator-class.dir}">
  386. <include name="${components.pkg}/scripts/ExternalComponentGenerator.java" />
  387. <classpath>
  388. <pathelement location="${lib.dir}/json/json.jar" />
  389. </classpath>
  390. </ai.javac>
  391. <java classname="com.google.appinventor.components.scripts.ExternalComponentGenerator">
  392. <arg value="${public.build.dir}/simple_components.json" />
  393. <arg value="${public.build.dir}/simple_components_build_info.json" />
  394. <arg value="${ExternalComponent.dir}"/>
  395. <arg value="${AndroidRuntime-class.dir}" />
  396. <arg value="${public.deps.dir}"/>
  397. <arg value="${ExternalComponent-class.dir}"/>
  398. <arg value="${extensions.packagefqcn}"/>
  399. <classpath>
  400. <pathelement location="${ExternalComponentGenerator-class.dir}" />
  401. <pathelement location="${lib.dir}/json/json.jar" />
  402. </classpath>
  403. </java>
  404. </target>
  405.  
  406. <!-- =====================================================================
  407. unjarAllExtensionLibraries : Unjarring extension's library in order for the extensions'dex to work properly.
  408. ===================================================================== -->
  409. <target name="unjarAllExtensionLibraries" depends="ExternalComponentGenerator">
  410. <foreach target="unjarExtensionLibraries" param="extension" inheritall="true">
  411. <path>
  412. <dirset dir="${ExternalComponent-class.dir}">
  413. <include name="*" />
  414. </dirset>
  415. </path>
  416. </foreach>
  417. </target>
  418.  
  419. <target name="unjarExtensionLibraries">
  420. <basename property="extensionClassFolder" file="${extension}" />
  421. <unzip dest="${ExternalComponent-class.dir}/${extensionClassFolder}">
  422. <fileset dir="${ExternalComponent-class.dir}/${extensionClassFolder}">
  423. <include name="**/*.jar" />
  424. </fileset>
  425. </unzip>
  426. </target>
  427.  
  428. <!-- =====================================================================
  429. jarAllExtensions: create ${extension}.jar and AndroidRuntime.jar for each extension.
  430. ===================================================================== -->
  431. <target name="jarAllExtensions" depends="unjarAllExtensionLibraries" >
  432. <foreach target="jarExtension" param="extension" inheritall="true">
  433. <path>
  434. <dirset dir="${ExternalComponent-class.dir}">
  435. <include name="*" />
  436. </dirset>
  437. </path>
  438. </foreach>
  439. </target>
  440.  
  441. <target name="jarExtension">
  442. <basename property="extensionClassFolder" file="${extension}" />
  443. <jar destfile="${ExternalComponent-class.dir}/${extensionClassFolder}.jar"
  444. basedir="${ExternalComponent-class.dir}/${extensionClassFolder}"
  445. includes="**/*.class"
  446. excludes="*.jar" />
  447. <antcall target="ProGuard">
  448. <param name="extensionClassFolder" value="${extensionClassFolder}" />
  449. </antcall>
  450. <copy file="${ExternalComponent-class.dir}/${extensionClassFolder}.jar"
  451. tofile="${ExternalComponent.dir}/${extensionClassFolder}/files/AndroidRuntime.jar"/>
  452. <echo>Generated build file AndroidRuntime.jar [${extensionClassFolder}]</echo>
  453. </target>
  454.  
  455. <!-- =====================================================================
  456. dexAllExtensions: create classes.dex for each extension.
  457. ===================================================================== -->
  458. <target name="dexAllExtensions" depends="jarAllExtensions">
  459. <foreach target="dexExtension" param="extension">
  460. <path>
  461. <fileset dir="${ExternalComponent-class.dir}" >
  462. <include name="*.jar"/>
  463. </fileset>
  464. </path>
  465. </foreach>
  466. </target>
  467.  
  468. <target name="dexExtension" depends="">
  469. <basename property="extensionType" file="${extension}" suffix=".jar"/>
  470. <java jar="${lib.dir}/android/tools/dx.jar"
  471. fork="true"
  472. failonerror="true">
  473. <arg value="--dex"/>
  474. <arg value="--no-strict"/>
  475. <arg value="--output"/>
  476. <arg value="${ExternalComponent.dir}/${extensionType}/classes.jar"/>
  477. <arg value="${ExternalComponent-class.dir}/${extensionType}.jar"/>
  478. </java>
  479. <echo>Dexing extension: ${extensionType}</echo>
  480. </target>
  481.  
  482.  
  483.  
  484. <!-- =====================================================================
  485. extensions: create ${extension}.aix for each external component.
  486. ===================================================================== -->
  487. <target name="packExtension">
  488. <basename property="extensionType" file="${extension}" />
  489. <zip destfile="${Extensions.dir}/${extensionType}.aix"
  490. basedir="${ExternalComponent.dir}"
  491. includes="${extensionType}/"
  492. />
  493. </target>
  494.  
  495. <target name="extensions" depends="ExternalComponentGenerator, jarAllExtensions, dexAllExtensions">
  496. <mkdir dir="${Extensions.dir}" />
  497. <foreach target="packExtension" param="extension" inheritall="true">
  498. <path>
  499. <dirset dir="${ExternalComponent.dir}">
  500. <include name="*" />
  501. </dirset>
  502. </path>
  503. </foreach>
  504. </target>
  505.  
  506.  
  507. <!-- =====================================================================
  508. ProGuard: obfuscates and minifies the AndroidRuntime.jar file, containing
  509. the extensions source code. Only runs if the task has been called
  510. like "ant extensions -Dproguard=1".
  511. ===================================================================== -->
  512.  
  513. <condition property="skipProguard">
  514. <not>
  515. <equals arg1="${proguard}" arg2="1" />
  516. </not>
  517. </condition>
  518.  
  519. <target name="ProGuard" unless="skipProguard">
  520. <taskdef resource="proguard/ant/task.properties"
  521. classpath="${lib.dir}/proguard/proguard.jar" />
  522. <proguard printmapping="${public.build.dir}/proguard.map"
  523. overloadaggressively="on"
  524. configuration="${lib.dir}/proguard/proguard.cfg"
  525. ignorewarnings="false">
  526.  
  527. <injar file="${ExternalComponent-class.dir}/${extensionClassFolder}.jar" />
  528. <outjar file="${ExternalComponent-class.dir}/${extensionClassFolder}_p.jar" />
  529.  
  530. <!-- FOR DEVELOPER: Add the needed libraries for your extension right here
  531. like the ones above, just after copying them to the deps
  532. directory.
  533. <libraryjar file="${public.deps.dir}/my-awesome-library.jar" /> -->
  534. <!-- Core libraries -->
  535. <libraryjar file="${public.deps.dir}/http-legacy.jar" />
  536. <libraryjar file="${public.deps.dir}/android.jar" />
  537. <libraryjar file="${public.deps.dir}/CommonVersion.jar" />
  538. <!-- Android Support -->
  539. <libraryjar file="${public.deps.dir}/animated-vector-drawable.jar" />
  540. <libraryjar file="${public.deps.dir}/appcompat-v7.jar" />
  541. <libraryjar file="${public.deps.dir}/asynclayoutinflater.jar" />
  542. <libraryjar file="${public.deps.dir}/collections.jar" />
  543. <libraryjar file="${public.deps.dir}/common.jar" />
  544. <libraryjar file="${public.deps.dir}/constraint-layout.jar" />
  545. <libraryjar file="${public.deps.dir}/constraint-layout-solver.jar" />
  546. <libraryjar file="${public.deps.dir}/coordinatorlayout.jar" />
  547. <libraryjar file="${public.deps.dir}/cursoradapter.jar" />
  548. <libraryjar file="${public.deps.dir}/customview.jar" />
  549. <libraryjar file="${public.deps.dir}/documentfile.jar" />
  550. <libraryjar file="${public.deps.dir}/drawerlayout.jar" />
  551. <libraryjar file="${public.deps.dir}/interpolator.jar" />
  552. <libraryjar file="${public.deps.dir}/lifecycle-common.jar" />
  553. <libraryjar file="${public.deps.dir}/livedata.jar" />
  554. <libraryjar file="${public.deps.dir}/livedata-core.jar" />
  555. <libraryjar file="${public.deps.dir}/loader.jar" />
  556. <libraryjar file="${public.deps.dir}/localbroadcastmanager.jar" />
  557. <libraryjar file="${public.deps.dir}/print.jar" />
  558. <libraryjar file="${public.deps.dir}/runtime.jar" />
  559. <libraryjar file="${public.deps.dir}/slidingpanelayout.jar" />
  560. <libraryjar file="${public.deps.dir}/support-annotations.jar" />
  561. <libraryjar file="${public.deps.dir}/support-compat.jar" />
  562. <libraryjar file="${public.deps.dir}/support-core-ui.jar" />
  563. <libraryjar file="${public.deps.dir}/support-core-utils.jar" />
  564. <libraryjar file="${public.deps.dir}/support-fragment.jar" />
  565. <libraryjar file="${public.deps.dir}/support-vector-drawable.jar" />
  566. <libraryjar file="${public.deps.dir}/swiperefreshlayout.jar" />
  567. <libraryjar file="${public.deps.dir}/versionedparcelable.jar" />
  568. <libraryjar file="${public.deps.dir}/viewmodel.jar" />
  569. <libraryjar file="${public.deps.dir}/viewpager.jar" />
  570. <!-- Components Libraries -->
  571. <libraryjar file="${public.deps.dir}/osmdroid.jar" />
  572. <libraryjar file="${public.deps.dir}/webrtc.jar" />
  573. <libraryjar file="${public.deps.dir}/jts.jar" />
  574. <libraryjar file="${public.deps.dir}/androidsvg.jar" />
  575. <libraryjar file="${public.deps.dir}/kawa.jar" />
  576. <libraryjar file="${public.deps.dir}/acra-4.4.0.jar" />
  577. <libraryjar file="${public.deps.dir}/twitter4j.jar" />
  578. <libraryjar file="${public.deps.dir}/twitter4jmedia.jar" />
  579. <libraryjar file="${public.deps.dir}/httpmime.jar" />
  580. <libraryjar file="${public.deps.dir}/fusiontables.jar" />
  581. <libraryjar file="${public.deps.dir}/firebase.jar" />
  582. <libraryjar file="${public.deps.dir}/google-api-client-beta.jar" />
  583. <libraryjar file="${public.deps.dir}/google-http-client-beta.jar" />
  584. <libraryjar file="${public.deps.dir}/google-api-client-android2-beta.jar" />
  585. <libraryjar file="${public.deps.dir}/google-http-client-android2-beta.jar" />
  586. <libraryjar file="${public.deps.dir}/google-http-client-android3-beta.jar" />
  587. <libraryjar file="${public.deps.dir}/gson-2.1.jar" />
  588. <libraryjar file="${public.deps.dir}/json.jar" />
  589. <libraryjar file="${public.deps.dir}/google-oauth-client-beta.jar" />
  590. <libraryjar file="${public.deps.dir}/jedis.jar" />
  591. <libraryjar file="${public.deps.dir}/commons-pool.jar" />
  592. <libraryjar file="${public.deps.dir}/guava-14.0.1.jar" />
  593. <libraryjar file="${public.deps.dir}/core.jar" />
  594. <!-- Android Runtime -->
  595. <libraryjar file="${public.build.dir}/AndroidRuntime.jar" />
  596.  
  597. <dontnote filter="proguard.configuration.ConfigurationLogger" />
  598. <adaptresourcefilecontents filter="proguard/ant/task.properties" />
  599. </proguard>
  600.  
  601. <delete file="${ExternalComponent-class.dir}/${extensionClassFolder}.jar" />
  602. <move file="${ExternalComponent-class.dir}/${extensionClassFolder}_p.jar"
  603. tofile="${ExternalComponent-class.dir}/${extensionClassFolder}.jar" />
  604. </target>
  605. </project>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement