From 3bd977c9d6c6d529b134af8f584b0a1f35032327 Mon Sep 17 00:00:00 2001 From: Leonid Pliushch Date: Sat, 18 Jan 2020 10:50:48 +0200 Subject: [PATCH] dx: use version patched to work under Android 9 and higher Fixes the issue described in https://www.reddit.com/r/termux/comments/ejrasu/java_on_my_s10_refuses_to_work/. Android 9 and higher no longer provides JCA API - see https://developer.android.com/guide/topics/security/cryptography#crypto_provider. --- packages/dx/build.sh | 52 +++++++++++++++++++++----------------------- 1 file changed, 25 insertions(+), 27 deletions(-) diff --git a/packages/dx/build.sh b/packages/dx/build.sh index 66305caf1c..c0fd846666 100644 --- a/packages/dx/build.sh +++ b/packages/dx/build.sh @@ -1,37 +1,35 @@ 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_DESCRIPTION="Command which takes in Java class files and converts them to format executable by Dalvik VM" TERMUX_PKG_LICENSE="Apache-2.0" -TERMUX_PKG_VERSION=$TERMUX_ANDROID_BUILD_TOOLS_VERSION +TERMUX_PKG_VERSION=1:1.16 +TERMUX_PKG_SRCURL=https://dl.bintray.com/xeffyr/sources/dx/dx-android-1.16.jar +TERMUX_PKG_SHA256=b9b7917267876b74c8ff6707e7a576c93b6dfe8cacc4f1cc791d606bcbbb7bd5 TERMUX_PKG_SKIP_SRC_EXTRACT=true TERMUX_PKG_PLATFORM_INDEPENDENT=true termux_step_make_install() { - # 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 + termux_download "$TERMUX_PKG_SRCURL" \ + "$TERMUX_PKG_CACHEDIR/dx-${TERMUX_PKG_VERSION:2}.jar" \ + "$TERMUX_PKG_SHA256" - # Dex the rewritten jar file: - mkdir -p $TERMUX_PREFIX/share/dex - $TERMUX_D8 \ - --release \ - --min-api $TERMUX_PKG_API_LEVEL \ - --output $TERMUX_PKG_TMPDIR \ - $REWRITTEN_DX + install -Dm600 "$TERMUX_PKG_CACHEDIR/dx-${TERMUX_PKG_VERSION:2}.jar" \ + "$TERMUX_PREFIX"/share/dex/dx.jar - cd $TERMUX_PKG_TMPDIR - jar cf dx.jar classes.dex - mv dx.jar $TERMUX_PREFIX/share/dex/dx.jar + cat <<- EOF > "$TERMUX_PREFIX"/bin/dx + #!${TERMUX_PREFIX}/bin/sh + exec dalvikvm \ + -Xmx256m \ + -cp ${TERMUX_PREFIX}/share/dex/dx.jar \ + dx.dx.command.Main "\$@" + EOF + chmod 700 "$TERMUX_PREFIX"/bin/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 + cat <<- EOF > "$TERMUX_PREFIX"/bin/dx-merge + #!${TERMUX_PREFIX}/bin/sh + exec dalvikvm \ + -Xmx256m \ + -cp ${TERMUX_PREFIX}/share/dex/dx.jar \ + dx.dx.merge.DexMerger "\$@" + EOF + chmod 700 "$TERMUX_PREFIX"/bin/dx-merge }