Java support!
This commit is contained in:
parent
e7ab539994
commit
05a610d1cb
4 changed files with 64 additions and 0 deletions
5
TODO.txt
Normal file
5
TODO.txt
Normal file
|
@ -0,0 +1,5 @@
|
|||
1. Add android.jar from android sdk 35 to classpath
|
||||
2. Identify tumblr apk version
|
||||
3. Fix enhanced block n shit
|
||||
4. ???
|
||||
5. Profit
|
47
build.py
47
build.py
|
@ -99,8 +99,52 @@ class Task:
|
|||
print(f"Compiling {file}...")
|
||||
subprocess.run(['java', '-jar', 'tools/smali-2.5.2.jar', 'a', f'build/smali/{file}', '-o', f'build/dex/{dex}'])
|
||||
|
||||
def genClassPath():
|
||||
print("Generating java classpath from dex files...")
|
||||
for file in os.listdir('build/dex'):
|
||||
src = f'build/dex/{file}'
|
||||
dst = f'build/jar/{file[:-4]}.jar'
|
||||
srctime = os.path.getmtime(src)
|
||||
dsttime = 0 if not Path(dst).exists() else os.path.getmtime(dst)
|
||||
|
||||
if srctime < dsttime:
|
||||
print(f"Skipping {file}...")
|
||||
continue
|
||||
|
||||
print(f"Dex2jar {file}...")
|
||||
subprocess.run(['java', '-cp', 'tools/d2j/*', 'com.googlecode.dex2jar.tools.Dex2jarCmd', '-f', src, '-o', dst])
|
||||
|
||||
def compileJava():
|
||||
Task.genClassPath()
|
||||
|
||||
sep = ';' if os.name == 'nt' else ':'
|
||||
javaFiles = [str(x) for x in Path('src/java').rglob('*.java')]
|
||||
classPath = sep.join([str(x) for x in Path('build/jar').rglob('*.jar')])
|
||||
|
||||
# Get latest java file timestamp
|
||||
files = list(Path('src/java').rglob('*.java'))
|
||||
files = [os.path.getmtime(x) for x in files]
|
||||
latest = max(files)
|
||||
|
||||
# Get latest dex time or 0
|
||||
latest2 = 0 if not Path('build/java_dex/classes.dex').exists() else os.path.getmtime('build/java_dex/classes.dex')
|
||||
|
||||
# If dex file is newer than source, no need to do anything
|
||||
if latest2 > latest:
|
||||
print("Skipping java...")
|
||||
return
|
||||
|
||||
print("Compiling java...")
|
||||
subprocess.run(['javac', '-cp', classPath, '-d', 'build/java_class', *javaFiles])
|
||||
|
||||
classFiles = [str(x) for x in Path('build/java_class').rglob('*.class')]
|
||||
|
||||
Path('build/java_dex').mkdir(parents=True, exist_ok=True)
|
||||
subprocess.run(['java', '-cp', 'tools/d8.jar', 'com.android.tools.r8.D8', *classFiles, '--output', 'build/java_dex'])
|
||||
|
||||
def mergeResources():
|
||||
Task.compileSmali()
|
||||
Task.compileJava()
|
||||
|
||||
# Copy original resources
|
||||
# on first run only
|
||||
|
@ -113,6 +157,7 @@ class Task:
|
|||
|
||||
print("Copying compiled dex files...")
|
||||
shutil.copytree('build/dex', 'build/merged', dirs_exist_ok=True)
|
||||
shutil.copy('build/java_dex/classes.dex', 'build/merged/classes7.dex') # TODO: Unhardcode this
|
||||
|
||||
def buildApk():
|
||||
Task.mergeResources()
|
||||
|
@ -182,6 +227,8 @@ def main():
|
|||
|
||||
if ('a' in ''.join(sys.argv[2:])):
|
||||
Task.deployToAndroidStudio()
|
||||
case 'genclasspath':
|
||||
Task.genClassPath()
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
10
src/java/dev/maelstrom/ykit/java/Test.java
Normal file
10
src/java/dev/maelstrom/ykit/java/Test.java
Normal file
|
@ -0,0 +1,10 @@
|
|||
package dev.maelstrom.ykit.java;
|
||||
|
||||
import dev.maelstrom.ykit.settings.YkitCurrentSettings;
|
||||
|
||||
public class Test {
|
||||
public static void test() {
|
||||
System.out.println("Hello, world!");
|
||||
System.out.println(YkitCurrentSettings.class.getName());
|
||||
}
|
||||
}
|
|
@ -7,6 +7,8 @@
|
|||
.method static constructor <clinit>()V
|
||||
.locals 0
|
||||
|
||||
invoke-static {}, Ldev/maelstrom/ykit/java/Test;->test()V
|
||||
|
||||
return-void
|
||||
.end method
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue