32 lines
1 KiB
Python
32 lines
1 KiB
Python
import subprocess
|
|
from .util import *
|
|
|
|
import re
|
|
|
|
# Task dependencies
|
|
from .patch_smali import patch_smali
|
|
|
|
def to_dex_name(smali_name):
|
|
if smali_name == 'smali':
|
|
return 'classes.dex'
|
|
else:
|
|
num = re.match(r"smali_classes([0-9]+)", smali_name).group(1)
|
|
return f"classes{num}.dex"
|
|
|
|
def compile_smali():
|
|
_ = patch_smali()
|
|
|
|
COMPILED_SMALI_DIR.mkdir(parents=True, exist_ok=True)
|
|
|
|
print("Compiling smali...")
|
|
for smali_dir in PATCHED_SMALI_DIR.glob("*"):
|
|
dest_dex = COMPILED_SMALI_DIR / to_dex_name(smali_dir.name)
|
|
|
|
# Don't compile if not necessary
|
|
# This depends on merge_into touching directories with copying
|
|
if dest_dex.exists() and smali_dir.stat().st_mtime < dest_dex.stat().st_mtime:
|
|
print(F"Skipping {dest_dex.name}")
|
|
continue
|
|
|
|
print(f"Compiling {smali_dir.name} => {dest_dex.name}...")
|
|
_ = subprocess.run([JAVA_BIN, "-jar", SMALI_COMPILER, "a", "-a", "26", smali_dir, "-o", dest_dex]) |