File size: 2,172 Bytes
dee7f43
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import pathlib,zipfile,subprocess,os,urllib.request
root=pathlib.Path(__file__).resolve().parent
cache=pathlib.Path(os.environ.get('GRADLE_USER_HOME','/workspace/cache/gradle'))/'caches/modules-2/files-2.1'
java=pathlib.Path(os.environ.get('JAVA_HOME','/workspace/toolchains/jdk-21'))
android=pathlib.Path(os.environ.get('ANDROID_SDK_ROOT','/workspace/toolchains/android-sdk'))
kotlin=pathlib.Path(os.environ.get('KOTLIN_HOME','/workspace/toolchains/kotlin-2.2.10'))
abi=os.environ.get('VDS_ANDROID_ABI','x86_64')
env={**os.environ,'JAVA_HOME':str(java),'PATH':str(java/'bin')+':'+os.environ['PATH']}
jars=[]
dependencies=[('org.tensorflow','tensorflow-lite','2.16.1'),('org.tensorflow','tensorflow-lite-api','2.16.1'),('org.tensorflow','tensorflow-lite-select-tf-ops','2.16.1')]
for group,name,version in dependencies:
    matches=list((cache/group/name/version).glob('*/*.aar'))
    aar=matches[0] if matches else root/(name+'-'+version+'.aar')
    if not aar.exists():urllib.request.urlretrieve(f'https://repo.maven.apache.org/maven2/{group.replace(".","/")}/{name}/{version}/{name}-{version}.aar',aar)
    with zipfile.ZipFile(aar) as z:
        jar=root/(name+'.jar');jar.write_bytes(z.read('classes.jar'));jars.append(str(jar))
        for item in z.namelist():
            if item.startswith('jni/'+abi+'/') and item.endswith('.so'):
                lib=root/'lib'/pathlib.Path(item).name;lib.parent.mkdir(exist_ok=True);lib.write_bytes(z.read(item))
classes=root/'classes';classes.mkdir(exist_ok=True)
sdk=root/'on-device-learning.jar'
subprocess.run([str(kotlin/'bin/kotlinc'),*[str(p) for p in root.glob('*.kt')],'-cp',':'.join([str(android/'platforms/android-36/android.jar'),*jars]),'-d',str(sdk)],check=True,env=env)
jars.extend([str(sdk),str(kotlin/'lib/kotlin-stdlib.jar')])
subprocess.run([str(java/'bin/javac'),'-source','11','-target','11','-cp',':'.join(jars),'-d',str(classes),*[str(p) for p in root.glob('*.java')]],check=True,env=env)
subprocess.run([str(android/'build-tools/36.0.0/d8'),'--min-api','28','--output',str(root/'training-check.jar'),*[str(p) for p in classes.glob('*.class')],*jars],check=True,env=env)
print(root/'training-check.jar')