Skip to content

Commit 70cec20

Browse files
authored
Version - v1.2 (#7)
* Main code update * Add build.xml from mit-cml/extension-template * Add libraries from mit-cml/extension-template * Fix Errors * Main code update - 2 * Remove GitHub Action As version 1.2 switches to MIT's extension template, this action won't work anymore, so it is better to delete it for now. * Make SetProperty block more stable * Disable RemoveAll block for now
1 parent d9d58d9 commit 70cec20

File tree

18 files changed

+946
-163
lines changed

18 files changed

+946
-163
lines changed

.github/workflows/build.yml

Lines changed: 0 additions & 19 deletions
This file was deleted.

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
build/*
2+
out/*

build.xml

Lines changed: 203 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,203 @@
1+
<?xml version="1.0" encoding="UTF-8" ?>
2+
<project name="" default="all">
3+
4+
<property name="Extensions.dir" location="out" />
5+
<property name="AndroidRuntime-classes.dir" location="build/classes"/>
6+
<property name="ExternalComponent.dir" location="build/externalComponents" />
7+
<property name="ExternalComponent-class.dir" location="build/externalComponents-classes" />
8+
9+
<target name="all" depends="extensions">
10+
</target>
11+
12+
<target name="clean">
13+
<delete dir="build" />
14+
<delete dir="out" />
15+
</target>
16+
17+
<taskdef resource="net/sf/antcontrib/antcontrib.properties">
18+
<classpath>
19+
<pathelement location="lib/ant-contrib/ant-contrib-1.0b3.jar"/>
20+
</classpath>
21+
</taskdef>
22+
23+
<target name="javac">
24+
<mkdir dir="${AndroidRuntime-classes.dir}" />
25+
<depend srcdir="src" destdir="dest">
26+
<include name="**/*.java" />
27+
</depend>
28+
<javac target="7" source="7" destdir="${AndroidRuntime-classes.dir}" srcdir="src" encoding="utf-8"
29+
includeantruntime="false">
30+
<classpath>
31+
<pathelement location="lib/appinventor/AndroidRuntime.jar" />
32+
<pathelement location="lib/appinventor/AnnotationProcessors.jar" />
33+
<pathelement location="lib/kawa/kawa-1.11-modified.jar" />
34+
<fileset dir="lib/android">
35+
<include name="*.jar" />
36+
</fileset>
37+
<fileset dir="lib/deps">
38+
<include name="*.jar" />
39+
</fileset>
40+
</classpath>
41+
<include name="**/*.java" />
42+
</javac>
43+
</target>
44+
45+
<target name="process" depends="javac">
46+
<mkdir dir="${Extensions.dir}" />
47+
<mkdir dir="${ExternalComponent.dir}" />
48+
<mkdir dir="${ExternalComponent-class.dir}" />
49+
<java failonerror="true" classname="com.google.appinventor.components.scripts.ExternalComponentGenerator">
50+
<classpath>
51+
<pathelement location="lib/appinventor/AnnotationProcessors.jar" />
52+
</classpath>
53+
<arg path="${AndroidRuntime-classes.dir}/simple_components.json" />
54+
<arg path="${AndroidRuntime-classes.dir}/simple_components_build_info.json" />
55+
<arg path="${ExternalComponent.dir}" />
56+
<arg path="${AndroidRuntime-classes.dir}" />
57+
<arg path="lib/deps" />
58+
<arg path="${ExternalComponent-class.dir}" />
59+
<arg value="false" />
60+
</java>
61+
</target>
62+
63+
<!-- =====================================================================
64+
unjarAllExtensionLibraries : Unjarring extension's library in order for the extensions'dex to work properly.
65+
===================================================================== -->
66+
<target name="unjarAllExtensionLibraries">
67+
<foreach target="unjarExtensionLibraries" param="extension" inheritall="true">
68+
<path>
69+
<dirset dir="build/externalComponents-classes">
70+
<include name="*" />
71+
</dirset>
72+
</path>
73+
</foreach>
74+
</target>
75+
76+
<target name="unjarExtensionLibraries">
77+
<basename property="extensionClassFolder" file="${extension}" />
78+
<unzip dest="build/externalComponents-classes/${extensionClassFolder}">
79+
<fileset dir="build/externalComponents-classes/${extensionClassFolder}">
80+
<include name="**/*.jar" />
81+
</fileset>
82+
</unzip>
83+
</target>
84+
85+
<!-- =====================================================================
86+
jarAllExtensions: create ${extension}.jar and AndroidRuntime.jar for each extension.
87+
===================================================================== -->
88+
<target name="jarAllExtensions" depends="process,unjarAllExtensionLibraries" >
89+
<foreach target="jarExtension" param="extension" inheritall="true">
90+
<path>
91+
<dirset dir="${ExternalComponent-class.dir}">
92+
<include name="*" />
93+
</dirset>
94+
</path>
95+
</foreach>
96+
</target>
97+
98+
<target name="jarExtension">
99+
<basename property="extensionClassFolder" file="${extension}" />
100+
<jar destfile="${ExternalComponent-class.dir}/${extensionClassFolder}.jar"
101+
basedir="${ExternalComponent-class.dir}/${extensionClassFolder}"
102+
includes="**/*.class"
103+
excludes="*.jar" />
104+
<antcall target="ProGuard">
105+
<param name="extensionClassFolder" value="${extensionClassFolder}" />
106+
</antcall>
107+
<copy file="${ExternalComponent-class.dir}/${extensionClassFolder}.jar"
108+
tofile="${ExternalComponent.dir}/${extensionClassFolder}/files/AndroidRuntime.jar"/>
109+
<echo>Generated build file AndroidRuntime.jar [${extensionClassFolder}]</echo>
110+
</target>
111+
112+
<!-- =====================================================================
113+
dexAllExtensions: create classes.dex for each extension.
114+
===================================================================== -->
115+
<target name="dexAllExtensions" depends="jarAllExtensions">
116+
<foreach target="dexExtension" param="extension">
117+
<path>
118+
<fileset dir="${ExternalComponent-class.dir}" >
119+
<include name="*.jar"/>
120+
</fileset>
121+
</path>
122+
</foreach>
123+
</target>
124+
125+
<target name="dexExtension" depends="">
126+
<basename property="extensionType" file="${extension}" suffix=".jar"/>
127+
<java jar="lib/android/dx.jar"
128+
fork="true"
129+
failonerror="true">
130+
<arg value="--dex"/>
131+
<arg value="--no-strict"/>
132+
<arg value="--output"/>
133+
<arg value="${ExternalComponent.dir}/${extensionType}/classes.jar"/>
134+
<arg value="${ExternalComponent-class.dir}/${extensionType}.jar"/>
135+
</java>
136+
<echo>Dexing extension: ${extensionType}</echo>
137+
</target>
138+
139+
140+
141+
<!-- =====================================================================
142+
extensions: create ${extension}.aix for each external component.
143+
===================================================================== -->
144+
<target name="packExtension">
145+
<basename property="extensionType" file="${extension}" />
146+
<zip destfile="${Extensions.dir}/${extensionType}.aix"
147+
basedir="${ExternalComponent.dir}"
148+
includes="${extensionType}/"
149+
/>
150+
</target>
151+
152+
<target name="extensions" depends="jarAllExtensions, dexAllExtensions">
153+
<mkdir dir="${Extensions.dir}" />
154+
<foreach target="packExtension" param="extension" inheritall="true">
155+
<path>
156+
<dirset dir="${ExternalComponent.dir}">
157+
<include name="*" />
158+
</dirset>
159+
</path>
160+
</foreach>
161+
</target>
162+
163+
<!-- =====================================================================
164+
ProGuard: obfuscates and minifies the AndroidRuntime.jar file, containing
165+
the extensions source code. Only runs if the task has been called
166+
like "ant extensions -Dproguard=1".
167+
===================================================================== -->
168+
169+
<condition property="skipProguard">
170+
<not>
171+
<equals arg1="${proguard}" arg2="1" />
172+
</not>
173+
</condition>
174+
175+
<target name="ProGuard" unless="skipProguard">
176+
<taskdef resource="proguard/ant/task.properties"
177+
classpath="lib/proguard/proguard.jar" />
178+
<proguard printmapping="out/${extensionClassFolder}-proguard.map"
179+
overloadaggressively="on"
180+
configuration="lib/proguard/proguard.cfg"
181+
ignorewarnings="false">
182+
183+
<injar file="${ExternalComponent-class.dir}/${extensionClassFolder}.jar" />
184+
<outjar file="${ExternalComponent-class.dir}/${extensionClassFolder}_p.jar" />
185+
186+
<libraryjar>
187+
<fileset dir="lib">
188+
<include name="**/*.jar"/>
189+
<include name="**/*.aar"/>
190+
<exclude name="*/dx.jar"/>
191+
</fileset>
192+
</libraryjar>
193+
194+
<dontnote filter="proguard.configuration.ConfigurationLogger" />
195+
<adaptresourcefilecontents filter="proguard/ant/task.properties" />
196+
</proguard>
197+
198+
<delete file="${ExternalComponent-class.dir}/${extensionClassFolder}.jar" />
199+
<move file="${ExternalComponent-class.dir}/${extensionClassFolder}_p.jar"
200+
tofile="${ExternalComponent-class.dir}/${extensionClassFolder}.jar" />
201+
</target>
202+
203+
</project>

lib/android/android.jar

44.6 MB
Binary file not shown.
704 KB
Binary file not shown.

lib/android/dx.jar

1010 KB
Binary file not shown.
219 KB
Binary file not shown.

lib/appinventor/AndroidRuntime.jar

1.21 MB
Binary file not shown.
2.23 MB
Binary file not shown.

lib/deps/.placeholder

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Any external dependencies should be placed in this directory.

0 commit comments

Comments
 (0)