【Android】Java Mail の「java.lang.verifyError:rejection com.sun.mail.handlers.text_plain.text_plain」エラーを解消する方法

Admobを com.google.android.gms:play-services-ads:20.4.0 に対応したところ、それまで問題なかったJavaMailがエラーを吐いてクラッシュするようになってしまいました。

Admob導入時の変更内容は、下記に示すとおりで、compileSdkはadmob導入の結果、要求されたため31に上げました。(mailの部分は、もともとのJavaMailのために記述している部分で変更はしていません。)

android {
    compileSdk 31


}

dependencies {

    implementation 'com.google.android.gms:play-services-ads:20.4.0'
    // For apps targeting Android 12, add WorkManager dependency.
    constraints {
        implementation('androidx.work:work-runtime:2.7.0') {
            because '''androidx.work:work-runtime:2.1.0 pulled from play-services-ads
                   has a bug using PendingIntent without FLAG_IMMUTABLE or
                   FLAG_MUTABLE and will fail in apps targeting S+.'''
        }
    }

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

}

調べたところ、compileSdkを29に下げるとおさまる、といった内容がみつかりましたが、下げるとadmobも下げなければならないため、探したところ、次のようにして解決しました。

android {
    compileSdk 31

    packagingOptions {
        exclude 'META-INF/NOTICE.md'
        exclude 'META-INF/LICENSE.md'
    }
}

dependencies {

    implementation 'com.google.android.gms:play-services-ads:20.4.0'
    // For apps targeting Android 12, add WorkManager dependency.
    constraints {
        implementation('androidx.work:work-runtime:2.7.0') {
            because '''androidx.work:work-runtime:2.1.0 pulled from play-services-ads
                   has a bug using PendingIntent without FLAG_IMMUTABLE or
                   FLAG_MUTABLE and will fail in apps targeting S+.'''
        }
    }

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

}

packagingOptionsの部分を追加し、mail関連の部分のバージョンを1.6.6に上げることでエラーが出なくなりました。

comment

タイトルとURLをコピーしました