TERMUX_PKG_HOMEPAGE=http://developer.android.com/tools/help/index.html
TERMUX_PKG_DESCRIPTION="Command which takes in class files and reformulates them for usage on Android"
TERMUX_PKG_VERSION=$TERMUX_ANDROID_BUILD_TOOLS_VERSION
+TERMUX_PKG_REVISION=1
TERMUX_PKG_PLATFORM_INDEPENDENT=true
termux_step_make_install () {
- # As of build tools 24 the dx tool is implemented using java 8, but
- # as dx itself does not support java 8 (class file format 52)
- # we go the .class -> jill -> jack route.
- local DX_JACK=$TERMUX_PKG_TMPDIR/dx.jack
- java -jar $TERMUX_JILL \
- --output=$DX_JACK \
- $ANDROID_HOME/build-tools/${TERMUX_PKG_VERSION}/lib/dx.jar
- java -jar $TERMUX_JACK \
- --output-dex $TERMUX_PKG_TMPDIR \
- --import $DX_JACK
+ # Rewrite packages to avoid using com.android.* classes which may clash with
+ # classes in the Android runtime on devices (see #1801):
+ local JARJAR=$TERMUX_PKG_CACHEDIR/jarjar.jar
+ local RULEFILE=$TERMUX_PKG_TMPDIR/jarjar-rule.txt
+ local REWRITTEN_DX=$TERMUX_PKG_TMPDIR/dx-rewritten.jar
+ termux_download \
+ http://central.maven.org/maven2/com/googlecode/jarjar/jarjar/1.3/jarjar-1.3.jar \
+ $JARJAR \
+ 4225c8ee1bf3079c4b07c76fe03c3e28809a22204db6249c9417efa4f804b3a7
+ echo 'rule com.android.** dx.@1' > $RULEFILE
+ java -jar $JARJAR process $RULEFILE \
+ $ANDROID_HOME/build-tools/${TERMUX_PKG_VERSION}/lib/dx.jar \
+ $REWRITTEN_DX
- mkdir -p $TERMUX_PREFIX/share/dex
- mv $TERMUX_PKG_TMPDIR/classes.dex $TERMUX_PREFIX/share/dex/dx.dex
+ # Dex the rewritten jar file:
+ mkdir -p $TERMUX_PREFIX/share/dex
+ $TERMUX_DX --dex \
+ --output $TERMUX_PREFIX/share/dex/dx.dex \
+ $REWRITTEN_DX
install $TERMUX_PKG_BUILDER_DIR/dx $TERMUX_PREFIX/bin/dx
perl -p -i -e "s%\@TERMUX_PREFIX\@%${TERMUX_PREFIX}%g" $TERMUX_PREFIX/bin/dx