Download android/prepare_runtime_check.py from fireviewer/litert-models: direct link, hf CLI and curl.
- Browser
- Download file 2.17 kB
-
https://huggingface.co/fireviewer/litert-models/resolve/main/android/prepare_runtime_check.py
- Command line
-
hf download hf://fireviewer/litert-models/android/prepare_runtime_check.py
-
curl -L -o prepare_runtime_check.py https://huggingface.co/fireviewer/litert-models/resolve/main/android/prepare_runtime_check.py
2.17 kB
| 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') | |