将android Facebook SDK添加到项目后,java.lang.NoClassDefFoundError和ClassNotFoundException [英] java.lang.NoClassDefFoundError and ClassNotFoundException after add android Facebook SDK to the project

查看:130
本文介绍了将android Facebook SDK添加到项目后,java.lang.NoClassDefFoundError和ClassNotFoundException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我刚刚将Android Facebook SDK添加到了我的项目中,以使用Facebook广告来推广我的应用,并且该应用在启动时崩溃,我遇到了例外情况

I just added android Facebook SDK to my project to use Facebook ads to promote my app and the app crashes on starting, I got this exception

这是日志

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: www.pro_cs_is.com, PID: 20307
    java.lang.NoClassDefFoundError: Failed resolution of: Lcom/facebook/appevents/InternalAppEventsLogger;
        at com.facebook.marketing.internal.MarketingLogger.<init>(MarketingLogger.java:47)
        at com.facebook.marketing.internal.MarketingInitProvider.setupCodeless(MarketingInitProvider.java:68)
        at com.facebook.marketing.internal.MarketingInitProvider.onCreate(MarketingInitProvider.java:49)
        at android.content.ContentProvider.attachInfo(ContentProvider.java:1927)
        at android.content.ContentProvider.attachInfo(ContentProvider.java:1902)
        at android.app.ActivityThread.installProvider(ActivityThread.java:6528)
        at android.app.ActivityThread.installContentProviders(ActivityThread.java:6021)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5927)
        at android.app.ActivityThread.access$1200(ActivityThread.java:200)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1673)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:201)
        at android.app.ActivityThread.main(ActivityThread.java:6806)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)
     Caused by: java.lang.ClassNotFoundException: Didn't find class "com.facebook.appevents.InternalAppEventsLogger" on path: DexPathList[[zip file "/data/app/www.pro_cs_is.com-ewD1U225Ajh1l9uikBkdWg==/base.apk", zip file "/data/app/www.pro_cs_is.com-ewD1U225Ajh1l9uikBkdWg==/split_lib_dependencies_apk.apk", zip file "/data/app/www.pro_cs_is.com-ewD1U225Ajh1l9uikBkdWg==/split_lib_resources_apk.apk", zip file "/data/app/www.pro_cs_is.com-ewD1U225Ajh1l9uikBkdWg==/split_lib_slice_0_apk.apk", zip file "/data/app/www.pro_cs_is.com-ewD1U225Ajh1l9uikBkdWg==/split_lib_slice_1_apk.apk", zip file "/data/app/www.pro_cs_is.com-ewD1U225Ajh1l9uikBkdWg==/split_lib_slice_2_apk.apk", zip file "/data/app/www.pro_cs_is.com-ewD1U225Ajh1l9uikBkdWg==/split_lib_slice_3_apk.apk", zip file "/data/app/www.pro_cs_is.com-ewD1U225Ajh1l9uikBkdWg==/split_lib_slice_4_apk.apk", zip file "/data/app/www.pro_cs_is.com-ewD1U225Ajh1l9uikBkdWg==/split_lib_slice_5_apk.apk", zip file "/data/app/www.pro_cs_is.com-ewD1U225Ajh1l9uikBkdWg==/split_lib_slice_6_apk.apk", zip file "/data/app/www.pro_cs_is.com-ewD1U225Ajh1l9uikBkdWg==/split_lib_slice_7_apk.apk", zip file "/data/app/www.pro_cs_is.com-ewD1U225Ajh1l9uikBkdWg==/split_lib_slice_8_apk.apk", zip file "/data/app/www.pro_cs_is.com-ewD1U225Ajh1l9uikBkdWg==/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/www.pro_cs_is.com-ewD1U225Ajh1l9uikBkdWg==/lib/arm64, /system/lib64, /vendor/lib64]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        at com.facebook.marketing.internal.MarketingLogger.<init>(MarketingLogger.java:47) 
        at com.facebook.marketing.internal.MarketingInitProvider.setupCodeless(MarketingInitProvider.java:68) 
        at com.facebook.marketing.internal.MarketingInitProvider.onCreate(MarketingInitProvider.java:49) 
        at android.content.ContentProvider.attachInfo(ContentProvider.java:1927) 
        at android.content.ContentProvider.attachInfo(ContentProvider.java:1902) 
        at android.app.ActivityThread.installProvider(ActivityThread.java:6528) 
        at android.app.ActivityThread.installContentProviders(ActivityThread.java:6021) 
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5927) 
        at android.app.ActivityThread.access$1200(ActivityThread.java:200) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1673) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:201) 
        at android.app.ActivityThread.main(ActivityThread.java:6806) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873) 
        Suppressed: java.io.IOException: No original dex files found for dex location /data/app/www.pro_cs_is.com-ewD1U225Ajh1l9uikBkdWg==/split_lib_resources_apk.apk
        at dalvik.system.DexFile.openDexFileNative(Native Method)
        at dalvik.system.DexFile.openDexFile(DexFile.java:354)
        at dalvik.system.DexFile.<init>(DexFile.java:101)
        at dalvik.system.DexFile.<init>(DexFile.java:75)
        at dalvik.system.DexPathList.loadDexFile(DexPathList.java:394)
        at dalvik.system.DexPathList.makeDexElements(DexPathList.java:354)
        at dalvik.system.DexPathList.<init>(DexPathList.java:164)
        at dalvik.system.BaseDexClassLoader.<init>(BaseDexClassLoader.java:74)
        at dalvik.system.BaseDexClassLoader.<init>(BaseDexClassLoader.java:65)
        at dalvik.system.PathClassLoader.<init>(PathClassLoader.java:64)
        at com.android.internal.os.ClassLoaderFactory.createClassLoader(ClassLoaderFactory.java:73)
        at com.android.internal.os.ClassLoaderFactory.createClassLoader(ClassLoaderFactory.java:88)
E/AndroidRuntime:     at android.app.ApplicationLoaders.getClassLoader(ApplicationLoaders.java:74)
        at android.app.ApplicationLoaders.getClassLoader(ApplicationLoaders.java:40)
        at android.app.LoadedApk.createOrUpdateClassLoaderLocked(LoadedApk.java:729)
        at android.app.LoadedApk.getClassLoader(LoadedApk.java:812)
        at android.app.LoadedApk.getResources(LoadedApk.java:1034)
        at android.app.ContextImpl.createAppContext(ContextImpl.java:2357)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5817)
                ... 8 more

build.gradle(Module:app)

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "test.com.app"
        minSdkVersion 15
        targetSdkVersion 28
        multiDexEnabled true
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            useProguard true
            debuggable false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    lintOptions {
        checkReleaseBuilds false
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    dexOptions {
        javaMaxHeapSize "4g"
    }
    packagingOptions {
        exclude 'META-INF/proguard/androidx-annotations.pro'
    }
    dataBinding {
        enabled = true
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation 'androidx.vectordrawable:vectordrawable-animated:1.0.0'
    implementation 'androidx.exifinterface:exifinterface:1.0.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'com.google.android.material:material:1.1.0-alpha05'
    implementation 'androidx.cardview:cardview:1.0.0'
    implementation 'com.google.firebase:firebase-messaging:17.5.0'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.2.0-alpha03'
    androidTestImplementation('androidx.test.espresso:espresso-core:3.1.0-alpha4', {
        exclude group: 'com.google.code.findbugs'
    })
    implementation 'com.squareup.retrofit2:retrofit:2.5.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
    implementation 'com.github.bumptech.glide:glide:4.8.0'
    implementation 'org.jsoup:jsoup:1.11.3'
    implementation 'com.google.apis:google-api-services-blogger:v3-rev57-1.23.0'
    implementation 'com.squareup.picasso:picasso:2.71828'
    implementation 'org.apache.commons:commons-lang3:3.8.1'
    implementation 'com.github.ybq:Android-SpinKit:1.2.0'
    implementation 'com.google.firebase:firebase-core:16.0.8'
    implementation('com.crashlytics.sdk.android:crashlytics:2.9.8@aar') {
        transitive = true
    }

    implementation 'androidx.multidex:multidex:2.0.1'
    configurations {
        all*.exclude group: 'com.google.guava', module: 'listenablefuture'
    }
    implementation 'com.android.support:customtabs:28.3.0'
    implementation 'org.jetbrains:annotations:15.0'
    implementation 'org.ocpsoft.prettytime:prettytime:4.0.1.Final'
    implementation 'com.github.seventhmoon:ipapi-retrofit:1.44'
    implementation 'com.google.firebase:firebase-ads:17.2.0'
    implementation 'com.google.android.ads.consent:consent-library:1.0.7'
    implementation 'com.facebook.android:facebook-android-sdk:4.42.0'
    implementation 'com.facebook.android:facebook-core:4.42.0'
    implementation 'com.facebook.android:facebook-marketing:4.42.0'

}
apply plugin: 'com.google.gms.google-services'
apply plugin: 'io.fabric'

AndroidManifest文件中的元数据

 <meta-data android:name="com.facebook.sdk.ApplicationId"
            android:value="@string/facebook_app_id"/>

我试图添加旧版或旧版的Facebook SDK,但这也行不通

I tried to add the old/previous version of facebook SDK but this also didn't work

implementation 'com.facebook.android:facebook-android-sdk:[4,5

维护Facebook规则

# Facebook
-keep class com.facebook.** {*;}
-dontwarn com.facebook.**

推荐答案

更新:已将SDK版本更改为4.39.0.

Update: Changing SDK version to 4.39.0 is the fix.

您的应用是否具有互联网许可?

Does your app have internet permission?

也可以尝试将4.39.0作为FB SDK版本

Also try 4.39.0 as FB SDK version

别忘了使invalidateCache并重新启动.

Don't forget to invalidateCache and restart.

这篇关于将android Facebook SDK添加到项目后,java.lang.NoClassDefFoundError和ClassNotFoundException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆