【问题标题】:My App work fine in debug mode but with signed APK it crashes我的应用程序在调试模式下工作正常,但使用签名的 APK 它崩溃
【发布时间】:2020-12-21 06:49:53
【问题描述】:

我有一个应用程序将这两个依赖项用于电子邮件目的

implementation 'com.sun.mail:android-mail:1.6.2' implementation 'com.sun.mail:android-activation:1.6.2

当我通过 android studio 安装应用程序时,它工作正常,但是当我使用它的签名 apk 版本时 它给了我这个错误

        at java.lang.Class.classForName(Native Method)
        at java.lang.Class.forName(Class.java:453)
        at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:371)
        at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:416) 
        at java.util.ServiceLoader$1.next(ServiceLoader.java:494) 
        at c.b.u.e(Unknown Source:27) 
        at c.b.u.b(Unknown Source:86) 
        at c.b.u.b(Unknown Source:4) 
        at c.b.u.c(Unknown Source:12) 
        at c.b.u.a(Unknown Source:46) 
        at c.b.w.a(Unknown Source:115) 
        at c.b.w.a(Unknown Source:8) 
        at com.remoteyourcam.usb.Photobooth.Activity.Preview$m.a(Unknown Source:126) 
        at com.remoteyourcam.usb.Photobooth.Activity.Preview$m.doInBackground(Unknown Source:2) 
        at android.os.AsyncTask$2.call(AsyncTask.java:333) 
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
        at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245) 
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162) 
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636) 
        at java.lang.Thread.run(Thread.java:764) 
     Caused by: java.lang.ClassNotFoundException: Didn't find class "com.sun.mail.imap.IMAPProvider" on path: DexPathList[[zip file "/data/app/com.clusterclearevents.photobooth-rPxo-9SQszD9939gUZE1zg==/base.apk"],nativeLibraryDirectories=[/data/app/com.clusterclearevents.photobooth-rPxo-9SQszD9939gUZE1zg==/lib/arm, /data/app/com.clusterclearevents.photobooth-rPxo-9SQszD9939gUZE1zg==/base.apk!/lib/armeabi-v7a, /system/lib, /system/vendor/lib]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:125)```




这是我的proguard规则。

-keep class com.sun.mail.imap.IMAPSSLProvider
-keep class com.sun.mail.smtp. {*;}
-keep class com.sun.mail.handlers.
-dontwarn com.sun.mail.handlers.handler_base```


This is my build script file from this project

packagingOptions {
    exclude 'META-INF/DEPENDENCIES'

}

buildTypes {
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

PROGUARD FILE VIEW

【问题讨论】:

    标签: java android email


    【解决方案1】:

    改变

    -keep class com.sun.mail.imap.IMAPProvider
    -keep class com.sun.mail.imap.IMAPSSLProvider
    -keep class com.sun.mail.smtp.** {*;}
    

    【讨论】:

    • 不,它没有用,我之前尝试过,但 proguard 规则仍然没有显示任何积极的迹象
    • 你能附上你的构建脚本吗?
    • 我已附上我的 buildscript 详细部分
    • 我的意思是app文件夹里面的那个
    • 你的意思是build.gradle
    【解决方案2】:

    这可能不是一个好主意,但我禁用了 proguard 以绕过此错误。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-05
    • 2021-09-25
    • 2021-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多