Skip to content

Commit 1390bc2

Browse files
committed
Bug 1417 - Android: Use d8 for dex'ing w/ implicit Java8 desugaring (macro: aapt.signed)
The new SDK d8 dex'ing tool performs Java8 desugaring, hence allows using Java8 code style. We use d8 instead of dx in the 'aapt.signed' macro of 'jogamp-androidtasks.xml'. For the proper desugaring, we pass 'android-min.jar and 'target.rt.jar' Android and Java8 system runtime jar-files to d8's classpath. Macro 'aapt.signed' also receives the new optional element 'd8-classpaths' to allows caller to pass further required jar-files to the d8 classpath. See build-test.xml.
1 parent faa3733 commit 1390bc2

File tree

2 files changed

+31
-5
lines changed

2 files changed

+31
-5
lines changed

make/build-test.xml

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -209,8 +209,14 @@
209209
androidmanifest.path="resources/android/AndroidManifest-Test.xml"
210210
androidresources.path="resources/android/res"
211211
version.code="${jogamp.version.int}"
212-
version.name="${jogamp.version}"
213-
/>
212+
version.name="${jogamp.version}">
213+
<d8-classpaths>
214+
<arg line="--classpath ${junit.jar}"/>
215+
<arg line="--classpath ${semver.jar}"/>
216+
<arg line="--classpath ${gluegen.jar}"/>
217+
<arg line="--classpath ${gluegen-test-util.jar}"/>
218+
</d8-classpaths>
219+
</aapt.signed>
214220
</target>
215221

216222
<target name="c.configure" depends="gluegen.cpptasks.detect.os,gluegen.cpptasks.setup.compiler">

make/jogamp-androidtasks.xml

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@
6565
<attribute name="keystore.alias" default="${android.keystore.alias}" />
6666
<attribute name="keystore.storepass" default="${android.keystore.storepass}" />
6767
<attribute name="keystore.keypass" default="${android.keystore.keypass}" />
68+
<element name="d8-classpaths" implicit="no" optional="true" />
6869

6970
<sequential>
7071
<var name="m.aapt.apkbasename0" unset="true"/>
@@ -171,13 +172,32 @@
171172
<pathelement path="${android.jar}"/>
172173
</classpath>
173174
</javac>
175+
<zip destfile="${m.aapt.build.apk}/temp/classes.zip" level="0">
176+
<fileset dir="${m.aapt.build.apk}/temp/classes"/>
177+
</zip>
174178

175179
<echo>aapt.signed ${m.aapt.apkbasename}: dex'ing</echo>
176-
<exec dir="." executable="dx" logError="true" failonerror="true" failifexecutionfails="true">
177-
<arg line="--dex"/>
178-
<arg line="--output=${m.aapt.dex.file}"/>
180+
<!-- exec dir="." executable="dx" logError="true" failonerror="true" failifexecutionfails="true">
181+
<arg line="- -dex"/>
182+
<arg line="- -output=${m.aapt.dex.file}"/>
183+
<arg line="- -min-sdk-version=${android.api.level.min}"/>
179184
<arg line="@{jarbuilddir}/@{jarbasename}.jar"/>
180185
<arg line="${m.aapt.build.apk}/temp/classes"/>
186+
</exec -->
187+
<exec dir="." executable="d8" logError="true" failonerror="true" failifexecutionfails="true">
188+
<arg line="--output ${m.aapt.build.apk}/image"/>
189+
190+
<arg line="--classpath ${android-min.jar}"/>
191+
<arg line="--classpath ${target.rt.jar}"/>
192+
<d8-classpaths/>
193+
194+
<arg line="--min-api ${android.api.level.min}"/>
195+
196+
<arg line="--release"/>
197+
<!-- arg line="- -debug"/ -->
198+
199+
<arg line="@{jarbuilddir}/@{jarbasename}.jar"/>
200+
<arg line="${m.aapt.build.apk}/temp/classes.zip"/>
181201
</exec>
182202

183203
<echo>aapt.signed ${m.aapt.apkbasename}: packaging</echo>

0 commit comments

Comments
 (0)