Invalid signature file digest for Manifest main attributes

I’m attempting to update an Android app from Smack 4.2.0-beta2 to the latest 4.4.6. I progressed through the various versions one-by-one making any necessary changes along the way. However, with version 4.3.5 (and 4.4+), a runtime error appeared that I couldn’t fix.

java.lang.SecurityException: Invalid signature file digest for Manifest main attributes

I can’t determine how a gradle dependency could have an invalid signature and there are no good hits on the interwebs for help.

Here is relevant snippets from the build.gradle file:

plugins {
    id "kotlin-kapt"
    id "com.google.dagger.hilt.android"
    id "com.android.application"
    id "com.google.gms.google-services"
    id "com.google.firebase.crashlytics"
    id "kotlin-android"
    id "org.jetbrains.kotlin.android"
    id "de.mannodermaus.android-junit5"
    id "kotlin-parcelize"
    id "org.anarres.jarjar"
}

android {
    compileSdkVersion 33

    defaultConfig {
        minSdkVersion 28
        targetSdkVersion 33
        multiDexEnabled true
    }

    compileOptions {
        sourceCompatibility 1.17
        targetCompatibility 1.17
    }

    packagingOptions {
        jniLibs {
            pickFirsts += ["**"]
        }
        resources {
            excludes += ["META-INF/DEPENDENCIES", "META-INF/LICENSE.txt", "META-INF/LICENSE", "META-INF/NOTICE.txt"]
            pickFirsts += ["**"]
        }
    }
    
    buildFeatures {
        viewBinding true
        dataBinding true
        compose true
    }
    
    lint {
        abortOnError false
    }

    namespace "****"
}

configurations {
    all {
        exclude group: "xpp3", module: "xpp3"
    }
}

dependencies {
    api fileTree(dir: "libs", include: ["*.jar"])

    api "org.igniterealtime.smack:smack-android-extensions:4.4.6"
    api "org.igniterealtime.smack:smack-tcp:4.4.6"
    api "org.igniterealtime.smack:smack-experimental:4.4.6"
}

kapt {
    correctErrorTypes true
}

Here’s the stacktrace of the error:

java.lang.ExceptionInInitializerError
    at org.jivesoftware.smack.Smack.getVersion(Smack.java:38)
    at org.jivesoftware.smack.Smack.ensureInitialized(Smack.java:64)
    at org.jivesoftware.smack.ConnectionConfiguration.<clinit>(ConnectionConfiguration.java:116)
    at org.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration.builder(XMPPTCPConnectionConfiguration.java:64)
    ...snip...
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
    at java.lang.Thread.run(Thread.java:1012)
Caused by: java.lang.IllegalStateException: Could not load Smack configuration file
    at org.jivesoftware.smack.SmackInitialization.<clinit>(SmackInitialization.java:99)
    at org.jivesoftware.smack.Smack.getVersion(Smack.java:38) 
    at org.jivesoftware.smack.Smack.ensureInitialized(Smack.java:64) 
    at org.jivesoftware.smack.ConnectionConfiguration.<clinit>(ConnectionConfiguration.java:116) 
    at org.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration.builder(XMPPTCPConnectionConfiguration.java:64) 
    ...snip...
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637) 
    at java.lang.Thread.run(Thread.java:1012) 
Caused by: java.lang.SecurityException: Invalid signature file digest for Manifest main attributes
    at sun.security.util.SignatureFileVerifier.processImpl(SignatureFileVerifier.java:314)
    at sun.security.util.SignatureFileVerifier.process(SignatureFileVerifier.java:268)
    at java.util.jar.JarVerifier.processEntry(JarVerifier.java:317)
    at java.util.jar.JarVerifier.update(JarVerifier.java:229)
    at java.util.jar.JarFile.initializeVerifier(JarFile.java:393)
    at java.util.jar.JarFile.getInputStream(JarFile.java:460)
    at libcore.io.ClassPathURLStreamHandler$ClassPathURLConnection.getInputStream(ClassPathURLStreamHandler.java:162)
    at java.net.URL.openStream(URL.java:1072)
    at java.lang.ClassLoader.getResourceAsStream(ClassLoader.java:989)
    at org.jivesoftware.smack.util.FileUtils.getStreamForClasspathFile(FileUtils.java:64)
    at org.jivesoftware.smack.SmackInitialization.<clinit>(SmackInitialization.java:96)
    at org.jivesoftware.smack.Smack.getVersion(Smack.java:38) 
    at org.jivesoftware.smack.Smack.ensureInitialized(Smack.java:64) 
    at org.jivesoftware.smack.ConnectionConfiguration.<clinit>(ConnectionConfiguration.java:116) 
    at org.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration.builder(XMPPTCPConnectionConfiguration.java:64) 
    ...snip...
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637) 
    at java.lang.Thread.run(Thread.java:1012) 

This problem appeared in the 4.3.5 version and was not present in the 4.2.0 version, so I don’t believe it’s a problem specifically with the configuration of the app.

This topic was automatically closed 62 days after the last reply. New replies are no longer allowed.