A cli tool that helps signing and zip aligning single or multiple Android application packages (APKs) with either debug or provided release certificates. It supports v1, v2 and v3 Android signing scheme has an embedded debug keystore and auto verifies after signing.

Overview

Uber Apk Signer

A tool that helps signing, zip aligning and verifying multiple Android application packages (APKs) with either debug or provided release certificates (or multiple). It supports v1, v2 and v3 Android signing scheme. Easy and convenient debug signing with embedded debug keystore. Automatically verifies signature and zipalign after every signing.

GitHub release Build Status Coverage Status Maintainability

Main features:

  • zipalign, (re)signing and verifying of multiple APKs in one step
  • verify signature (with hash check) and zipalign of multiple APKs in one step
  • built-in zipalign & debug keystore for convenient usage
  • supports v1, v2 and v3 android apk singing scheme
  • support for multiple signatures for one APK
  • crypto/signing code relied upon official implementation

Basic usage:

java -jar uber-apk-signer.jar --apks /path/to/apks

This should run on any Windows, Mac or Linux machine where Java8+ is installed.

Requirements

  • JDK 8
  • Currently on Linux 32bit: zipalign must be set in PATH

Download

Grab jar from latest Release

Demo

asciicast

Command Line Interface

-a,--apks <file/folder>           Can be a single apk or a folder containing multiple apks. These are used
                                  as source for zipalining/signing/verifying. It is also possible to
                                  provide multiple locations space seperated (can be mixed file folder):
                                  '/apk /apks2 my.apk'. Folder will be checked non-recursively.
   --allowResign                  If this flag is set, the tool will not show error on signed apks, but
                                  will sign them with the new certificate (therefore removing the old
                                  one).
   --debug                        Prints additional info for debugging.
   --dryRun                       Check what apks would be processed without actually doing anything.
-h,--help                         Prints help docs.
   --ks <keystore>                The keystore file. If this isn't provided, will tryto sign with a debug
                                  keystore. The debug keystore will be searched in the same dir as
                                  execution and 'user_home/.android' folder. If it is not found there a
                                  built-in keystore will be used for convenience. It is possible to pass
                                  one or multiple keystores. The syntax for multiple params is
                                  '<index>=<keystore>' for example: '1=keystore.jks'. Must match the
                                  parameters of --ksAlias.
   --ksAlias <alias>              The alias of the used key in the keystore. Must be provided if --ks is
                                  provided. It is possible to pass one or multiple aliases for multiple
                                  keystore configs. The syntax for multiple params is '<index>=<alias>'
                                  for example: '1=my-alias'. Must match the parameters of --ks.
   --ksDebug <keystore>           Same as --ks parameter but with a debug keystore. With this option the
                                  default keystore alias and passwords are used and any arguments relating
                                  to these parameter are ignored.
   --ksKeyPass <password>         The password for the key. If this is not provided, caller will get a
                                  user prompt to enter it. It is possible to pass one or multiple
                                  passwords for multiple keystore configs. The syntax for multiple params
                                  is '<index>=<password>'. Must match the parameters of --ks.
   --ksPass <password>            The password for the keystore. If this is not provided, caller will get
                                  a user prompt to enter it. It is possible to pass one or multiple
                                  passwords for multiple keystore configs. The syntax for multiple params
                                  is '<index>=<password>'. Must match the parameters of --ks.
-l,--lineage <path>               The lineage file for apk signer schema v3 if more then 1 signature is
                                  used. See here https://bit.ly/2mh6iAC for more info.
-o,--out <path>                   Where the aligned/signed apks will be copied to. Must be a folder. Will
                                  create, if it does not exist.
   --overwrite                    Will overwrite/delete the apks in-place
   --skipZipAlign                 Skips zipAlign process. Also affects verify.
-v,--version                      Prints current version.
   --verbose                      Prints more output, especially useful for sign verify.
   --verifySha256 <cert-sha256>   Provide one or multiple sha256 in string hex representation (ignoring
                                  case) to let the tool check it against hashes of the APK's certificate
                                  and use it in the verify process. All given hashes must be present in
                                  the signature to verify e.g. if 2 hashes are given the apk must have 2
                                  signatures with exact these hashes (providing only one hash, even if it
                                  matches one cert, will fail).
-y,--onlyVerify                   If this is passed, the signature and alignment is only verified.
   --zipAlignPath <path>          Pass your own zipalign executable. If this is omitted the built-in
                                  version is used (available for win, mac and linux)

Examples

Provide your own out directory for signed apks

java -jar uber-apk-signer.jar -a /path/to/apks --out /path/to/apks/out

Only verify the signed apks

java -jar uber-apk-signer.jar -a /path/to/apks --onlyVerify

Sign with your own release keystore

java -jar uber-apk-signer.jar -a /path/to/apks --ks /path/release.jks --ksAlias my_alias

Provide your own zipalign executable

java -jar uber-apk-signer.jar -a /path/to/apks --zipAlignPath /sdk/build-tools/24.0.3/zipalign

Provide your own location of your debug keystore

java -jar uber-apk-signer.jar -a /path/to/apks --ksDebug /path/debug.jks

Sign with your multiple release keystores (see below on how to create a lineage file)

java -jar uber-apk-signer.jar -a /path/to/apks --lineage /path/sig.lineage --ks 1=/path/release.jks 2=/path/release2.jks --ksAlias 1=my_alias1 2=my_alias2

Use multiple locations or files (will ignore duplicate files)

java -jar uber-apk-signer.jar -a /path/to/apks /path2 /path3/select1.apk /path3/select2.apk

Provide your sha256 hash to check against the signature:

java -jar uber-apk-signer.jar -a /path/to/apks --onlyVerify --verifySha256 ab318df27

Process Return Value

This application will return 0 if every signing/verifing was successful, 1 if an error happens (e.g. wrong arguments) and 2 if at least 1 sign/verify process was not successful.

Debug Signing Mode

If no keystore is provided the tool will try to automatically sign with a debug keystore. It will try to find on in the following locations (descending order):

  • Keystore location provided with --ksDebug
  • debug.keystore in the same directory as the jar executable
  • debug.keystore found in the /user_home/.android folder
  • Embedded debug.keystore packaged with the jar executable

A log message will indicate which one was chosen.

Zipalign Executable

Zipalign is a tool developed by Google to optimize zips (apks). It is needed if you want to upload it to the Playstore otherwise it is optional. By default this tool will try to zipalign the apk, therefore it will need the location of the executable. If the path isn't passed in the command line interface, the tool checks if it is in PATH environment variable, otherwise it will try to use an embedded version of zipalign.

If --skipZipAlign is passed no executable is needed.

v1, v2 and v3 Signing Scheme

Android 7.0 introduces APK Signature Scheme v2, a new app-signing scheme that offers faster app install times and more protection against unauthorized alterations to APK files. By default, Android Studio 2.2 and the Android Plugin for Gradle 2.2 sign your app using both APK Signature Scheme v2 and the traditional signing scheme, which uses JAR signing.

APK Signature Scheme v2 is a whole-file signature scheme that increases verification speed and strengthens integrity guarantees by detecting any changes to the protected parts of the APK. The older jarsigning is called v1 schema.

APK Signature Scheme v3 is an extension to v2 which allows a new signature lineage feature for key rotation, which basically means it will be possible to change signature keys.

Signature Lineage File in Schema v3

This tool does not directly support the creation of lineage files as it is considered a task done very rarely. You can create a lineage file with a sequence of certificates with Google's apksigner rotate and apply it as -- lineage arguments when signing with multiple keystores:

apksigner rotate --out sig.lineage \
    --old-signer --ks debug1.keystore --ks-key-alias androiddebugkey \
    --new-signer --ks debug2.keystore --ks-key-alias androiddebugkey

java -jar uber-apk-signer.jar -a /path/to/apks --lineage sig.lineage (...)

Signed Release Jar

The provided JARs in the Github release page are signed with my private key:

CN=Patrick Favre-Bulle, OU=Private, O=PF Github Open Source, L=Vienna, ST=Vienna, C=AT
Validity: Thu Sep 07 16:40:57 SGT 2017 to: Fri Feb 10 16:40:57 SGT 2034
SHA1: 06:DE:F2:C5:F7:BC:0C:11:ED:35:E2:0F:B1:9F:78:99:0F:BE:43:C4
SHA256: 2B:65:33:B0:1C:0D:2A:69:4E:2D:53:8F:29:D5:6C:D6:87:AF:06:42:1F:1A:EE:B3:3C:E0:6D:0B:65:A1:AA:88

Use the jarsigner tool (found in your $JAVA_HOME/bin folder) folder to verify.

Build with Maven

Use the Maven wrapper to create a jar including all dependencies

./mvnw clean install

Checkstyle Config File

This project uses my common-parent which centralized a lot of the plugin versions aswell as providing the checkstyle config rules. Specifically they are maintained in checkstyle-config. Locally the files will be copied after you mvnw install into your target folder and is called target/checkstyle-checker.xml. So if you use a plugin for your IDE, use this file as your local configuration.

Tech Stack

  • Java 8
  • Maven

License

Copyright 2016 Patrick Favre-Bulle

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Comments
  • Request: Ablity to change Owner/Issuer Names

    Request: Ablity to change Owner/Issuer Names

    Hello,

    Can you please make it so we can change all fields for the Owner/Issuer?

    Owner: CN=Android Debug, OU=Android, O=US, L=US, ST=US, C=US Issuer: CN=Android Debug, OU=Android, O=US, L=US, ST=US, C=US

    Thanks

    opened by 0pLuS0 6
  • android:extractNativeLibs=

    android:extractNativeLibs="false"

    Does it support apk files with android:extractNativeLibs="false"? In this case also the binary libraries must be stored uncompressed and zip-aligned.

    bug wontfix 
    opened by ale5000-git 6
  • Good APK but can't verify signature

    Good APK but can't verify signature

    This is apk http://www45.zippyshare.com/v/B8jwSOrZ/file.html. I can install it fine but when run with -y verifyOnly, i get this error.

    • zipalign verified - signature VERIFY FAILED (Unknown Heroes_v1.0.1.apk) ERROR: JAR signer UNKNOWNH.RSA: Failed to verify JAR signature META-INF/UNKNOWNH.RSA against META-INF/UNKNOWNH.SF: java.security.SignatureException: Algorithm constraints check failed on disabled algorithm: MD5.
    opened by david8557 6
  • zipalign not compressing

    zipalign not compressing

    zipalign not compressing as (java -jar uber-apk-signer.jar -a apk/app-release-unsigned.apk --out release)

    C:\cordova\Android\android-sdk\build-tools\29.0.3\zipalign -v 4 app-release-unsigned.apk appname.apk where app-release-unsigned.apk contains 265kb when it gets compressed it gets appname.apk 258kb

    opened by MEGAMINDMK 5
  • Add option allow using the built-in keystore even another key exist in user_home/.android

    Add option allow using the built-in keystore even another key exist in user_home/.android

    Hello, I have another question.

    Can you please add option allow using the built-in keystore even another key exist in user_home/.android. I don't want to use the key in user_home/.android.

    Because I sign apk using the built-in keystore and now after I installed Android Studio, it break the old sign.

    opened by phamquangbaoplus 5
  • Could not execute zipalign

    Could not execute zipalign

    I wan to sign my apk packages but I get the following error

    $ archlinux-java status
    Available Java environments:
      java-11-openjdk
      java-8-jdk (default)
      java-8-openjdk
    
    $ java -jar uber-apk-signer-1.2.1.jar....
    zipalign location: BUILT_IN 
    	/tmp/uapksigner-834599882927137790/linux-zipalign-29_0_2262257386856777324.tmp
    keystore:
    .................
    
    01. app-release-unsigned.apk
    
    	SIGN
    	file: /home/user/..../apk/release/app-release-unsigned.apk (0.17 MiB)
    	checksum: 35412b8284d3c5374cec45cd4993c544e26ef4d7b50a9c41aa6e12024a97888 (sha256)
    	- could not align 
    could not execute zipalign
    java.lang.IllegalStateException: could not execute zipalign
    	at at.favre.tools.apksigner.SignTool.execute(SignTool.java:143)
    	at at.favre.tools.apksigner.SignTool.mainExecute(SignTool.java:45)
    	at at.favre.tools.apksigner.SignTool.main(SignTool.java:33)
    
    Cmd history for debugging purpose:
    -----------------------
    [/tmp/uapksigner-5255291507018536870/linux-zipalign-29_0_24433956931453785855.tmp, -p, -v, 4, /home/user/..../apk/release/app-release-unsigned.apk, /home/user/...././app-release-unsigned-aligned.apk]
    Verifying alignment of /home/user/...././app-release-unsigned-aligned.apk (4)...
          71 res/mipmap-xhdpi-v4/ic_launcher_round.png (BAD - 3)
        3796 assets/www/cordova-js-src/platform.js (OK - compressed)
        5599 AndroidManifest.xml (OK - compressed)
        6681 res/mipmap-mdpi-v4/ic_launcher_round.png (BAD - 1)
        8285 assets/www/cordova-js-src/android/nativeapiprovider.js (OK - compressed)
        9010 assets/www/cordova.js (OK - compressed)
       25953 res/mipmap-xhdpi-v4/ic_launcher.png (BAD - 1)
       27474 res/xml/config.xml (OK - compressed)
       28542 assets/www/js/about.c1c8b494.js (OK - compressed)
       29435 res/mipmap-xhdpi-v26/ic_launcher_background.png (BAD - 3)
       29621 res/mipmap-anydpi-v26/ic_launcher_round.xml (OK - compressed)
       29902 assets/www/css/app.d0415ad6.css (OK - compressed)
       30485 res/mipmap-xxhdpi-v4/ic_launcher_round.png (BAD - 1)
       36499 assets/www/js/chunk-vendors.7584f99d.js (OK - compressed)
       85570 assets/www/cordova-js-src/plugin/android/app.js (OK - compressed)
       87093 assets/www/js/app.b38801bb.js (OK - compressed)
       91230 res/mipmap-mdpi-v4/ic_launcher.png (BAD - 2)
       92012 assets/www/index.html (OK - compressed)
       92525 res/mipmap-hdpi-v26/ic_launcher_background.png (BAD - 1)
       92674 assets/www/css/about.9f825402.css (OK - compressed)
       92782 res/drawable/ic_launcher_foreground.xml (OK - compressed)
       93578 res/mipmap-mdpi-v26/ic_launcher_background.png (BAD - 2)
       93749 assets/www/cordova-js-src/android/promptbasednativeapi.js (OK - compressed)
       94574 res/mipmap-xxxhdpi-v26/ic_launcher_background.png (BAD - 2)
       94783 res/mipmap-xxhdpi-v26/ic_launcher_background.png (BAD - 3)
       94970 res/mipmap-hdpi-v4/ic_launcher.png (BAD - 2)
       96085 res/mipmap-xxxhdpi-v4/ic_launcher.png (BAD - 1)
       99683 res/mipmap-hdpi-v4/ic_launcher_round.png (BAD - 3)
      102160 resources.arsc (OK)
      105855 assets/www/cordova-js-src/exec.js (OK - compressed)
      109416 assets/www/favicon.ico (OK - compressed)
      111259 classes.dex (OK - compressed)
      160114 res/mipmap-xxxhdpi-v4/ic_launcher_round.png (BAD - 2)
      168729 assets/www/cordova_plugins.js (OK - compressed)
      168925 res/mipmap-anydpi-v26/ic_launcher.xml (OK - compressed)
      169212 res/mipmap-xxhdpi-v4/ic_launcher.png (OK)
      171713 res/mipmap-ldpi-v26/ic_launcher_background.png (BAD - 1)
    Verification FAILED
     (1)
    
    opened by LeducH 4
  • How do I skip the VERIFY process?

    How do I skip the VERIFY process?

    I'd like to skip this verification, is it possible?

    image

    It seems like its not possible because it is not in the help command but I'll ask anyway just in case

    opened by iAndyHD3 3
  • Question: Adding Extensions?

    Question: Adding Extensions?

    Hello,

    I hope you don't mind me asking, since you do all of this, I assumed you would know how I can add the AuthorityKeyIdentifier Extension to a keystore like listed below?

    keytool -printcert -file CERT.RSA Owner: [email protected], CN=OnePlus, OU=SW, O=OnePlus, L=Shenzhen, ST=Guangdong, C=CN Issuer: [email protected], CN=OnePlus, OU=SW, O=OnePlus, L=Shenzhen, ST=Guangdong, C=CN Serial number: ca7f2ef3e2f1842e Valid from: Wed May 06 21:23:23 HST 2015 until: Sun Sep 21 21:23:23 HST 2042 Certificate fingerprints: MD5: 0D:2B:B4:93:D4:C2:58:EB:10:5F:A6:E0:D5:9A:C4:7B SHA1: 23:52:7E:F3:0C:2E:B1:07:DC:50:D2:80:07:94:B5:D5:8E:60:67:FC SHA256: C6:E8:15:0A:A5:BB:AF:52:3C:A1:E2:D9:E3:56:00:8E:17:28:A1:2F:E2:0C:3C:78:75:A4:46:AF:B7:C5:79:F9 Signature algorithm name: SHA1withRSA Subject Public Key Algorithm: 2048-bit RSA key Version: 3

    Extensions:

    #1: ObjectId: 2.5.29.35 Criticality=false AuthorityKeyIdentifier [ KeyIdentifier [ 0000: E2 4C A1 8E 47 F2 C0 74 76 F9 D3 7C E0 D8 5A 9F .L..G..tv.....Z. 0010: 2F DF 44 56 /.DV ] ]

    #2: ObjectId: 2.5.29.19 Criticality=false BasicConstraints:[ CA:true PathLen:2147483647 ]

    #3: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: E2 4C A1 8E 47 F2 C0 74 76 F9 D3 7C E0 D8 5A 9F .L..G..tv.....Z. 0010: 2F DF 44 56 /.DV ] ]

    Oracle states; . For non self-signed certificates, the authorityKeyIdentifier is always created.

    I can make a keystore with the BasicConstraints, it's my understanding that the SubjectKeyIdentifier is always added.

    This is what I've been playing with in a shell script, but it only adds the SubjectKeyIdentifier and BasicConstraints

    Create a self signed key pair root CA certificate keytool -genkeypair -v
    -alias CERT
    -dname "CN=Android, OU=Android, O=US, L=US, ST=US, C=US"
    -keystore keystore.jks
    -keypass android
    -storepass android
    -keyalg RSA
    -keysize 4096
    -ext BasicConstraints:"critical=ca:true"
    -validity 9855

    If I do all of this in a shell, then I get the AuthorityKeyIdentifier but I also get double of the same cert information, listed at the top; owner/issuer serial number, fingerprints, etc...

    Create a self signed key pair root CA certificate keytool -genkeypair -v
    -alias CERT
    -dname "CN=Android, OU=Android, O=US, L=US, ST=US, C=US"
    -keystore keystore.jks
    -keypass android
    -storepass android
    -keyalg RSA
    -keysize 4096
    -ext BasicConstraints:"critical=ca:true"
    -validity 9855

    Generate new ca-cert and ca-key openssl
    req
    -new
    -x509
    -subj "/CN=Android/OU=Android/O=US/L=US/ST=US/C=US/"
    -passout pass:android
    -keyout ca-key
    -out ca-cert
    -days 9855

    Extracting cert/creating cert sign req(csr) keytool
    -keystore keystore.jks
    -keypass android
    -storepass android
    -alias CERT
    -certreq
    -file cert-file

    Sign the “cert-file” and cert-signed wil be the new cert openssl
    x509
    -req
    -CA ca-cert
    -CAkey ca-key
    -in cert-file
    -out cert-signed
    -days 9855
    -CAcreateserial
    -passin pass:android

    Importing the ca-cert to keystore file: keytool
    -keystore keystore.jks
    -alias CARoot
    -import
    -file ca-cert
    -storepass android
    -noprompt

    THANK YOU for your time and help with this, it's greatly appreciated, and I do like uber-apk-signer, I just like trying to learn and do this myself...

    opened by 0pLuS0 3
  • Cert Names Are Changed - Please Fix

    Cert Names Are Changed - Please Fix

    Hello,

    I signed the framework-res.apk on my device with uber-apk-signer-1.0.0.jar and noticed that file names were changed in the META-INF.

    Can we please get this fixed? I don't want these names changed,and I don't understand why you have this happening.

    Original Names CERT.RSA CERT.SF

    Changed Names ANDROIDD.RSA ANDROIDD.SF

    Thanks

    opened by 0pLuS0 3
  • java.lang.NullPointerException

    java.lang.NullPointerException

    command will cause NullPointerException as below: java -jar uber-apk-signer.jar --apks test_unsigned.apk

    And I add a pull reques https://github.com/patrickfav/uber-apk-signer/pull/6/commits/667947646f19da3b1a31dc1c8b59bccedf9bcb68

    opened by yihongyuelan 3
  • Curious question: how is Uber related to this repo?

    Curious question: how is Uber related to this repo?

    Hi thanks for the repo! I wonder how is Uber related to it? AFAIK Uber is a company, so I guess it is a product of the company? But I do not see anything in README

    opened by fzyzcjy 2
  • INSTALL_FAILED_UPDATE_INCOMPATIBLE

    INSTALL_FAILED_UPDATE_INCOMPATIBLE

    APK cannot be installed after resign.

    java -jar uber-apk-signer-1.2.1.jar --allowResign -a

    adb install -r Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE]

    Android 6.0.1

    for first look the original APK contains CERT.SF and CERT.RSA

    opened by iddq 0
  • Zipalign problem | windows 11

    Zipalign problem | windows 11

    SIGN file: D:\work\android\rebuild\tsxk_shiguanghb_online_4149_220721\dist\tsxk_220721.apk (2160.73 MiB) checksum: e67c8bad5b9263816b91ab55fcada97ab65b3203498e5782ea63a9c14f1041c3 (sha256)

    • could not align could not execute zipalign Run with '--debug' parameter to get additional information.
    opened by Zhanghao0150 0
  • [feature request] improve error handling when input is not .apk (output/exit code)

    [feature request] improve error handling when input is not .apk (output/exit code)

    I often sign zip, jars etc.. kind of feeded a zip to a batch file using uber-apk-signer,
    and got

    provided apk path or file 'D:\sample.zip' does not exist
    java.lang.IllegalArgumentException: provided apk path or file 'D:\sample.zip' does not exist
            at at.favre.tools.apksigner.ui.FileArgParser.parseAndSortUniqueFilesNonRecursive(FileArgParser.java:38)
            at at.favre.tools.apksigner.SignTool.execute(SignTool.java:60)
            at at.favre.tools.apksigner.SignTool.mainExecute(SignTool.java:45)
            at at.favre.tools.apksigner.SignTool.main(SignTool.java:33)
    
    Cmd history for debugging purpose:
    -----------------------
    

    (exit code 1).

    tries multiple variations of the arguments (including normalizing paths from backslash to forward slash),
    until I've changed the extension to APK.

    obviously it makes sense that u.a.s. only handles apk files (it's in the name..).

    it seems like an exception that wasn't caught and thrown up until it got the the file-path exception handling method.

    I personally transitioned from jarsigner, to apksigner (both can handle ZIP-DEFLATE), to u.a.s., and a nice message (or even a meaningful exit code) would help a lot.

    opened by eladkarako 0
  • Error when signing

    Error when signing

    I got this error when signing APK:

    Unable to determine APK's minimum supported Android platform version: malformed binary resource: AndroidManifest.xml
    
    opened by jimlyas 1
  • Zipalign problem | Linux

    Zipalign problem | Linux

    So basically my problem is this.

    On the README.md it says that there is a built in zipalign feature, however when I use uber-apk-signer on Linux to try and sign an apk, I can't sign an APK at all because because zipalign could not execute, if I run apt install zipalign however, it works, how do I utilise the built-in zipalign feature if it's possible???

    Sorry I'm still very new to this repo, I used to use an older type of signer but this one is better.

    opened by Morsmalleo 3
  • class file has wrong version 55.0, should be 53.0

    class file has wrong version 55.0, should be 53.0

    Keep getting this error everytime I run ./mvnw clean install, the error arises with bothJava 1.8.0_252 and Java 11.0.3 for Kali Linux , done some research and can't seem to find a solution.

    [INFO] -------------------------------------------------------------
    [ERROR] COMPILATION ERROR : 
    [INFO] -------------------------------------------------------------
    [ERROR] /home/kali/uber-apk-signer/src/main/java/at/favre/tools/apksigner/ui/MultiKeystoreParser.java:[6,24] cannot access java.util.stream.Collectors
    bad class file: /modules/java.base/java/util/stream/Collectors.class
    class file has wrong version 55.0, should be 53.0
    Please remove or make sure it appears in the correct subdirectory of the classpath.
    [INFO] 1 error
    [INFO] -------------------------------------------------------------
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  13.585 s
    [INFO] Finished at: 2021-11-09T04:54:32-05:00
    [INFO] ------------------------------------------------------------------------
    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project uber-apk-signer: Compilation failure
    [ERROR] /home/kali/uber-apk-signer/src/main/java/at/favre/tools/apksigner/ui/MultiKeystoreParser.java:[6,24] cannot access java.util.stream.Collectors
    [ERROR]   bad class file: /modules/java.base/java/util/stream/Collectors.class
    [ERROR]     class file has wrong version 55.0, should be 53.0
    [ERROR]     Please remove or make sure it appears in the correct subdirectory of the classpath.
    [ERROR] 
    [ERROR] -> [Help 1]
    [ERROR] 
    [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
    [ERROR] Re-run Maven using the -X switch to enable full debug logging.
    [ERROR] 
    [ERROR] For more information about the errors and possible solutions, please read the following articles:
    [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
    
    opened by Morsmalleo 9
Releases(v1.2.1)
Owner
Patrick Favre-Bulle
Computer Science MSc @ TUWien 2015. Going through the stack: JS Frontend, Android Mobile, Spring/Kotlin type backend. Interested in most topics cryptography
Patrick Favre-Bulle
🍼Debug Bottle is an Android runtime debug / develop tools written using kotlin language.

???? 中文 / ???? 日本語 / ???? English ?? Debug Bottle An Android debug / develop tools written using Kotlin language. All the features in Debug bottle are

Yuriel Arlencloyn 846 Nov 14, 2022
Remote script to create a maven compatible release of an android library (aar)

release-android-library ?? Deprecated ?? This script is deprecated in favour of: novoda/bintray-release Remote script to create a maven compatible rel

Paul Blundell 144 Dec 13, 2022
A command line tool that helps bulk manage resources in an Android project

Resource Mover ResourceMover is a command line tool that helps bulk manage resources in an Android project. Installation Clone project Build CLI jar u

Shopify 4 Dec 24, 2021
A CLI client for Up Bank, written in Kotlin.

upperkt pronounced /ˈʌpəkʌt/ Uppercut your Up balance today! (It's a CLI client for Up - an Australian neobank, written in Kotlin) Installing Right no

Duale Siad 2 Dec 3, 2021
A tool to install components of the Android SDK into a Maven repository or repository manager to use with the Android Maven Plugin, Gradle and other tools.

Maven Android SDK Deployer Original author including numerous fixes and changes: Manfred Moser [email protected] at simpligility technologies i

simpligility 1.4k Dec 27, 2022
A tool to install components of the Android SDK into a Maven repository or repository manager to use with the Android Maven Plugin, Gradle and other tools.

Maven Android SDK Deployer Original author including numerous fixes and changes: Manfred Moser [email protected] at simpligility technologies i

simpligility 1.4k Dec 27, 2022
A simple utility to remove unused resources in your Android app to lower the size of the APK. It's based on the Android lint tool output.

android-resource-remover android-resource-remover is utility that removes unused resources reported by Android Lint from your project. The goal is to

Keepsafe 1.3k Dec 16, 2022
Android Material Design Theme UI and Tool Library. Support: 4.0.3~O

GitHub OSChina 中文 English Genius-Android Genius-Android: by Material Design style and some commonly used packages. Starting in 2015, The divided into

Qiujuer 2.3k Dec 27, 2022
A super fast build tool for Android, an alternative to Instant Run

Freeline Freeline is a super fast build tool for Android and an alternative to Instant Run. Caching reusable class files and resource indices, it enab

Alibaba 5.5k Jan 2, 2023
Command-line tool to count per-package methods in Android .dex files

dex-method-counts Simple tool to output per-package method counts in an Android DEX executable grouped by package, to aid in getting under the 65,536

Mihai Parparita 2.6k Nov 25, 2022
Android Merge Tool

AMT The Android Merge Tool (AMT) does what the name suggests: it merges arbitrary Android apps into a single merged app. As input it takes a number of

FoelliX 23 Nov 8, 2022
Android Studio's Vector Drawable conversion tool in convenient packaging.

Vector Drawable Tool This repository is simply a repackaging of the vector drawable tool from the Android Studio source code. The included Gradle file

Ryan Harter 55 Sep 26, 2022
Localization tool for Android Studio Projects

Android Strings Resource Language Diff tool In the event any additional languages are intended to be supported by your app. You can use this strings-d

Braxton Nunnally 1 Mar 24, 2022
A surgical debugging tool to uncover the layers under your app.

Scalpel DEPRECATED! Android Studio 4.0's layout inspector now includes a live-updating 3D view. Use it! A surgical debugging tool to uncover the layer

Jake Wharton 2.8k Jan 3, 2023
Tool for create complex morphing animations using VectorDrawables (allows morphing between any pair of SVG images)

VectAlign VectAlign (a.k.a. VectorDrawableAlign) is a developer's tool which automagically aligns two VectorDrawable "pathData" strings (or SVG images

Stefano Bonetta 2k Dec 29, 2022
GPS tracking tool for OpenStreetMap

OSMTracker for Android™ official source code repository is https://github.com/labexp/osmtracker-android. For more information about the project, docum

Laboratorio Experimental (ITCR @ SIUA) 455 Dec 25, 2022
GPS tracking tool for OpenStreetMap

OSMTracker for Android™ official source code repository is https://github.com/labexp/osmtracker-android. For more information about the project, docum

Laboratorio Experimental (ITCR @ SIUA) 455 Dec 25, 2022
Custom content tool for The Ponies.

PoneCrafter A sneak preview of the custom content tool for The Ponies. The Ponies is a work in progress life simulator game. The game itself has not b

The Ponies 8 Feb 13, 2022