STEP 3 STOPPED - MISSING SMALI TOOLCHAIN
make_lab_dex.py needs the smali toolchain, and none of it is in ~/.m2/repository.
MISSING DEPENDENCIES
From smali-2.5.2.pom plus the script's JARS list:
org.smali:smali 2.5.2 the assembler
org.smali:dexlib2 2.5.2 transitive
org.smali:util 2.5.2 transitive
org.antlr:antlr 3.5.2 transitive
org.antlr:antlr-runtime 3.5.2 transitive
org.antlr:stringtemplate 3.2.1 transitive
com.google.guava:guava 27.1-android (POM) / 33.2.1-jre (REPRODUCE.md)
com.beust:jcommander 1.64 (POM) / 1.78 (REPRODUCE.md)
REPRODUCE.md says jcommander 1.78 fixes HelpFormatter.
The script runs:
find ~/.m2/repository ...
to build its classpath, so the jars must be visible under ~/.m2.
ENVIRONMENT FACTS
mvn is installed at /opt/maven/bin/mvn
/tmp has 7.9 GB free
Nothing from the smali toolchain is installed
PROPOSED FIX (NEEDS APPROVAL)
Keep everything in /tmp/tools, never touch ~/.m2:
1. Use mvn with a local repo under /tmp/tools:
/opt/maven/bin/mvn -q -Dmaven.repo.local=/tmp/tools/m2 \
org.apache.maven.plugins:maven-dependency-plugin:3.6.0:get \
-Dartifact=org.smali:smali:2.5.2 \
-Dartifact=com.google.guava:guava:33.2.1-jre \
-Dartifact=com.beust:jcommander:1.78
This resolves dexlib2, util, antlr, antlr-runtime, stringtemplate and asm into
/tmp/tools/m2.
2. Run the generator with HOME=/tmp/tools/fakehome and make
/tmp/tools/fakehome/.m2/repository a copy of /tmp/tools/m2/repository, so
make_lab_dex.py's "find ~/.m2/repository" finds the jars.
3. Output the smali/APK under /tmp/tools/lab.
Approve this and I will run Step 3, then Step 4 (build dcvm.so with the NDK), then
Steps 5-7.