Signing complete
This commit is contained in:
parent
b73f336f4f
commit
acae658fca
5 changed files with 49 additions and 5 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -1,5 +1,7 @@
|
||||||
build/
|
build/
|
||||||
source-apk/*.apk
|
source-apk/*.apk
|
||||||
|
keystores/*.keystore
|
||||||
tools/*
|
tools/*
|
||||||
!tools/smali-2.5.2.jar
|
!tools/smali-2.5.2.jar
|
||||||
!tools/apktool_2.9.3.jar
|
!tools/apktool_2.9.3.jar
|
||||||
|
!tools/apksigner.jar
|
||||||
|
|
44
build.py
44
build.py
|
@ -120,7 +120,45 @@ class Task:
|
||||||
debugFlag = ('-d',) if ('d' in ''.join(sys.argv[2:])) else ()
|
debugFlag = ('-d',) if ('d' in ''.join(sys.argv[2:])) else ()
|
||||||
|
|
||||||
print("Building apk...")
|
print("Building apk...")
|
||||||
subprocess.run(['java', '-jar', './tools/apktool_2.9.3.jar', 'b', *debugFlag, 'build/merged', '-o', 'build/apk/tumblr-ykit.apk'])
|
subprocess.run(['java', '-jar', './tools/apktool_2.9.3.jar', 'b', *debugFlag, 'build/merged', '-o', 'build/apk/tumblr-ykit-unsigned.apk'])
|
||||||
|
|
||||||
|
def alignApk():
|
||||||
|
Task.buildApk()
|
||||||
|
|
||||||
|
print('Aligning apk...')
|
||||||
|
subprocess.run(['tools/zipalign', '-p', '-f', '-v', '4', 'build/apk/tumblr-ykit-unsigned.apk', 'build/apk/tumblr-ykit.apk'])
|
||||||
|
|
||||||
|
def debugKey():
|
||||||
|
if Path('keystores/debug.keystore').exists():
|
||||||
|
return
|
||||||
|
|
||||||
|
print("Debug keystore does not exist, generating...")
|
||||||
|
subprocess.run(['keytool', '-genkey', '-v', '-keystore', 'keystores/debug.keystore', '-alias', 'alias_name', '-keyalg', 'RSA', '-keysize', '2048', '-validity', '10000', '-storepass', '123456', '-keypass', '123456', '-dname', 'CN=, OU=, O=, L=, ST=, C='])
|
||||||
|
|
||||||
|
def signApk():
|
||||||
|
Task.alignApk()
|
||||||
|
Task.debugKey()
|
||||||
|
|
||||||
|
debugFlag = 'd' in ''.join(sys.argv[2:])
|
||||||
|
releaseFlag = 'r' in ''.join(sys.argv[2:])
|
||||||
|
|
||||||
|
if not (debugFlag or releaseFlag):
|
||||||
|
print("Neither debug nor release flag was specified so the apk will not be signed.")
|
||||||
|
return
|
||||||
|
|
||||||
|
if releaseFlag:
|
||||||
|
if not Path('keystores/release.keystore').exists():
|
||||||
|
print("release.keystore is missing from keystores directory")
|
||||||
|
return
|
||||||
|
|
||||||
|
keystoreOpts = ('--ks', 'keystores/release.keystore',)
|
||||||
|
else:
|
||||||
|
Task.debugKey()
|
||||||
|
keystoreOpts = ('--ks', 'keystores/debug.keystore', '--ks-pass', 'pass:123456',)
|
||||||
|
|
||||||
|
print('Signing apk...')
|
||||||
|
subprocess.run(['java', '-jar', './tools/apksigner.jar', 'sign', *keystoreOpts, 'build/apk/tumblr-ykit.apk'])
|
||||||
|
print("Successfully signed apk in 'build/apk/tumblr-ykit.apk' using " + ('release' if releaseFlag else 'debug') + ' keystore')
|
||||||
|
|
||||||
def deployToAndroidStudio():
|
def deployToAndroidStudio():
|
||||||
projDir = Path.home() / 'ApkProjects/tumblr-ykit'
|
projDir = Path.home() / 'ApkProjects/tumblr-ykit'
|
||||||
|
@ -137,8 +175,10 @@ def main():
|
||||||
Task.clean()
|
Task.clean()
|
||||||
case 'extract':
|
case 'extract':
|
||||||
Task.extractApk()
|
Task.extractApk()
|
||||||
case 'build':
|
case 'assemble':
|
||||||
Task.buildApk()
|
Task.buildApk()
|
||||||
|
case 'build':
|
||||||
|
Task.signApk()
|
||||||
|
|
||||||
if ('a' in ''.join(sys.argv[2:])):
|
if ('a' in ''.join(sys.argv[2:])):
|
||||||
Task.deployToAndroidStudio()
|
Task.deployToAndroidStudio()
|
||||||
|
|
1
keystores/Place_Keystores_Here
Normal file
1
keystores/Place_Keystores_Here
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Release keystore must be named 'release.keystore'
|
1
source-apk/Place_Tumblr_Apk_Here
Normal file
1
source-apk/Place_Tumblr_Apk_Here
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Place tumblr apk version
|
BIN
tools/apksigner.jar
Normal file
BIN
tools/apksigner.jar
Normal file
Binary file not shown.
Loading…
Add table
Reference in a new issue