48 lines
		
	
	
		
			No EOL
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			No EOL
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import shutil
 | |
| import sys
 | |
| import subprocess
 | |
| 
 | |
| from .util import *
 | |
| from .assemble_apk import assemble_apk
 | |
| 
 | |
| def align_apk():
 | |
|     updated = assemble_apk()
 | |
|     
 | |
|     if not updated and Path(ALIGNED_APK).exists():
 | |
|         print("Skipping alignment")
 | |
|         return False
 | |
|     
 | |
|     # Align the APK
 | |
|     print("Aligning APK...")
 | |
|     ALIGNED_APK.parent.mkdir(exist_ok=True)
 | |
|     res = subprocess.run([ZIPALIGN, '-pvf', '4', ASSEMBLED_APK, ALIGNED_APK])
 | |
|     if res.returncode != 0:
 | |
|         print("Error ocurred while aligning")
 | |
|         exit(res.returncode)
 | |
|     
 | |
| def sign_apk():
 | |
|     updated = align_apk()
 | |
|     
 | |
|     # Check what kind of signing the user wants us to do
 | |
|     arg = sys.argv[1] if len(sys.argv) > 1 else ''
 | |
|     if 'd' in arg:
 | |
|         keystore_params = ['--ks', 'keystores/debug.keystore', '--ks-pass', 'pass:123456']
 | |
|         signed_apk = SIGNED_APK_DEBUG
 | |
|     elif 'r' in arg:
 | |
|         keystore_params = ['--ks', 'keystores/debug.keystore',]
 | |
|         signed_apk = SIGNED_APK
 | |
|     else:
 | |
|         print("WARNING: Neither 'r' (release) nor 'd' (debug) was specified for the second parameter so the aligned apk will not be signed.")
 | |
|         print("STOP.")
 | |
|         exit(0)
 | |
|     
 | |
|     if not updated and Path(signed_apk).exists():
 | |
|         print("Skipping signing")
 | |
|         return False
 | |
|     
 | |
|     
 | |
|     # Sign the APK
 | |
|     print("Signing APK...")
 | |
|     shutil.copy(ALIGNED_APK, signed_apk)
 | |
|     SIGNED_APK.parent.mkdir(exist_ok=True)
 | |
|     _ = subprocess.run([JAVA_BIN, '-jar', APKSIGNER, 'sign', *keystore_params, signed_apk]) |