2016-12-01 18 views
13

Tôi cập nhật playservice trong sdk của mình và tôi gặp phải lỗi này. Và tôi không thể truy cập Mã thông báo GCM. Trước khi cập nhật sdk dự án của tôi hoạt động hoàn hảo.java.lang.IllegalAccessError: Phương thức 'void android.support.v4.content

Tôi phí cả ngày nhưng không tìm thấy giải pháp nào. Tôi cố gắng this nhưng gettting lỗi trong việc này phụ thuộc nào com.google.android.gms:play-services-plus:9.0.0

Đây là logcat tôi

Caused by: java.lang.IllegalAccessError: Method 'void android.support.v4.content.ContextCompat.<init>()' is inaccessible to class 'com.google.android.gms.iid.zzd' (declaration of 'com.google.android.gms.iid.zzd' appears in /data/data/com.hwindiapp.passenger/files/instant-run/dex/slice-com.google.android.gms-play-services-iid-9.0.0_b51865a18dbfbfb3651aaa54856c955adf1e354f-classes.dex) 
    at com.google.android.gms.iid.zzd.zzeC(Unknown Source) 
    at com.google.android.gms.iid.zzd.<init>(Unknown Source) 
    at com.google.android.gms.iid.zzd.<init>(Unknown Source) 
    at com.google.android.gms.iid.InstanceID.zza(Unknown Source) 
    at com.google.android.gms.iid.InstanceID.getInstance(Unknown Source) 
    at com.mainProfile.classFiles.RegisterFbLoginResCallBack$registerFBUser.processGCMID_user(RegisterFbLoginResCallBack.java:166) 
    at com.mainProfile.classFiles.RegisterFbLoginResCallBack$registerFBUser.doInBackground(RegisterFbLoginResCallBack.java:219) 
    at com.mainProfile.classFiles.RegisterFbLoginResCallBack$registerFBUser.doInBackground(RegisterFbLoginResCallBack.java:153) 
    at android.os.AsyncTask$2.call(AsyncTask.java:292) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)  
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)  
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)  
    at java.lang.Thread.run(Thread.java:818)  
12-01 12:23:59.553 18157-18703/com.hwindiapp.passenger E/ACRA: Not adding buildConfig to log. Class Not found : com.VolleyLibFiles.BuildConfig. Please configure 'buildConfigClass' in your ACRA config 
12-01 12:24:00.013 18157-19059/com.hwindiapp.passenger E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #4 
Process: com.hwindiapp.passenger, PID: 18157 
java.lang.RuntimeException: An error occured while executing doInBackground() 
    at android.os.AsyncTask$3.done(AsyncTask.java:304) 
    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355) 
    at java.util.concurrent.FutureTask.setException(FutureTask.java:222) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:242) 
    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
    at java.lang.Thread.run(Thread.java:818) 
    Caused by: java.lang.IllegalAccessError: Method 'void android.support.v4.content.ContextCompat.<init>()' is inaccessible to class 'com.google.android.gms.iid.zzd' (declaration of 'com.google.android.gms.iid.zzd' appears in /data/data/com.hwindiapp.passenger/files/instant-run/dex/slice-com.google.android.gms-play-services-iid-9.0.0_b51865a18dbfbfb3651aaa54856c955adf1e354f-classes.dex) 
    at com.google.android.gms.iid.zzd.zzeC(Unknown Source) 
    at com.google.android.gms.iid.zzd.<init>(Unknown Source) 
    at com.google.android.gms.iid.zzd.<init>(Unknown Source) 
    at com.google.android.gms.iid.InstanceID.zza(Unknown Source) 
    at com.google.android.gms.iid.InstanceID.getInstance(Unknown Source) 
    at com.mainProfile.classFiles.RegisterFbLoginResCallBack$registerFBUser.processGCMID_user(RegisterFbLoginResCallBack.java:166) 
    at com.mainProfile.classFiles.RegisterFbLoginResCallBack$registerFBUser.doInBackground(RegisterFbLoginResCallBack.java:219) 
    at com.mainProfile.classFiles.RegisterFbLoginResCallBack$registerFBUser.doInBackground(RegisterFbLoginResCallBack.java:153) 
at android.os.AsyncTask$2.call(AsyncTask.java:292) 

Hiển thị lỗi trong dòng mã này

InstanceID instanceID = InstanceID.getInstance(mContext); 
      GCMregistrationId = instanceID.getToken(CommonUtilities.SENDER_ID, GoogleCloudMessaging.INSTANCE_ID_SCOPE, 
        null); 

Và đây là gradle tôi

apply plugin: 'com.android.application' 

android { 
    signingConfigs { 
     config { 
      keyAlias 'hwindi' 
      keyPassword '123456' 
      storeFile file('D:/Company Projects/Hwindi/Project 2/Play_KeyStore/HwindiKeyStore.jks') 
      storePassword '123456' 
     } 
    } 
    compileSdkVersion 24 
    buildToolsVersion "24.0.3" 
    defaultConfig { 
     applicationId "com.hwindiapp.passenger" 
     minSdkVersion 16 
     targetSdkVersion 24 
     versionCode 12 
     versionName "1.12" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
    packagingOptions { 
     exclude 'lib/arm64-v8a/libcardioDecider.so' 
     exclude 'lib/arm64-v8a/libcardioRecognizer.so' 
     exclude 'lib/arm64-v8a/libcardioRecognizer_tegra2.so' 
     exclude 'lib/arm64-v8a/libopencv_core.so' 
     exclude 'lib/arm64-v8a/libopencv_imgproc.so' 
     exclude 'lib/armeabi/libcardioDecider.so' 
     exclude 'lib/armeabi-v7a/libcardioDecider.so' 
     exclude 'lib/armeabi-v7a/libcardioRecognizer.so' 
     exclude 'lib/armeabi-v7a/libcardioRecognizer_tegra2.so' 
     exclude 'lib/armeabi-v7a/libopencv_core.so' 
     exclude 'lib/armeabi-v7a/libopencv_imgproc.so' 
     exclude 'lib/mips/libcardioDecider.so' 
     exclude 'lib/x86/libcardioDecider.so' 
     exclude 'lib/x86/libcardioRecognizer.so' 
     exclude 'lib/x86/libcardioRecognizer_tegra2.so' 
     exclude 'lib/x86/libopencv_core.so' 
     exclude 'lib/x86/libopencv_imgproc.so' 
     exclude 'lib/x86_64/libcardioDecider.so' 
     exclude 'lib/x86_64/libcardioRecognizer.so' 
     exclude 'lib/x86_64/libcardioRecognizer_tegra2.so' 
     exclude 'lib/x86_64/libopencv_core.so' 
     exclude 'lib/x86_64/libopencv_imgproc.so' 
    } 
    configurations.all { 
     /*resolutionStrategy { 
      force 'com.android.support:design:23.4.0' 
      force 'com.android.support:support-v4:23.4.0' 
      force 'com.android.support:appcompat-v7:23.4.0' 
     }*/ 
    } 
} 
repositories { 
    mavenCentral() 
    maven { url "https://jitpack.io" } 
} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    testCompile ('com.squareup:fest-android:1.0.8') { 
     exclude module: 'support-v4' 
    } 
    compile 'com.android.support:appcompat-v7:24.2.0' 
    compile 'com.android.support:design:24.2.0' 
    compile 'com.android.support:cardview-v7:24.2.0' 
    compile 'com.android.support:recyclerview-v7:24.2.0' 
    compile 'com.google.android.gms:play-services-gcm:9.0.0' 
    compile 'com.google.android.gms:play-services-location:9.0.0' 
    compile 'com.google.android.gms:play-services-maps:9.0.0' 
    compile 'com.google.android.gms:play-services-plus:9.0.0' 
    compile 'com.facebook.android:facebook-android-sdk:[4,5)' 
    compile 'com.paypal.sdk:paypal-android-sdk:2.13.3' 
    compile 'com.wdullaer:materialdatetimepicker:2.2.0' 
    compile 'com.mukesh:permissions:1.0.3' 
} 

Trả lời

10

Vui lòng kiểm tra declared dependencies của bạn. Như đã thảo luận trong documentation nhất định có ba loại phụ thuộc trực tiếp khác nhau trong tệp build.gradle của ứng dụng/mô-đun.

Mẫu phụ thuộc như sau:

android {...} 
... 
dependencies { 
    // The 'compile' configuration tells Gradle to add the dependency to the 
    // compilation classpath and include it in the final package. 

    // Dependency on the "mylibrary" module from this project 
    compile project(":mylibrary") 

    // Remote binary dependency 
    compile 'com.android.support:appcompat-v7:25.0.1' 

    // Local binary dependency 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
} 

Hơn nữa, như đã trả lời bởi @Diego Giorgini trong một chiến dịch SO post,

The issue you are experiencing is due to an incompatibility between play-services/firebase sdk v9.0.0 and com.android.support:appcompat-v7 >= 24 (the version released with android-N sdk)

Với điều này, bạn có thể muốn thử sửa chữa đề nghị:

You should be able to fix it by targeting an earlier version of the support library. Like:

compile 'com.android.support:appcompat-v7:23.4.0'

Bạn cũng có thể kiểm tra các gợi ý khác estions trong bài viết SO sau:

+0

Cảm ơn bạn đã trả lời nhưng tôi đã giải quyết. bằng cách loại bỏ api 25 trong sdk cũng như xây dựng các công cụ và thay đổi phiên bản facebook thành 4.16.+ –

+0

Rõ ràng, nó biên dịch không có lỗi nếu bạn không bao gồm phụ thuộc appcomapt, nhưng nó sẽ không làm việc mà không có nó, và nó không cho bạn biết rằng đây là một vấn đề ... Yeeesh –

+0

Dường như không hoạt động, lấy làm tiếc. Chỉ có giải pháp là cập nhật công cụ xây dựng và phiên bản tuân thủ sdk ... –

4

Tôi đã gặp phải vấn đề tương tự sau khi đào một số tôi phát hiện ra rằng sdk facebook tùy thuộc vào phiên bản mới của thư viện hỗ trợ google hơn tôi đã biên soạn.

Bạn có thể kiểm tra sự phụ thuộc với lệnh gradle

./gradlew app:dependencies 

Đảm bảo rằng tất cả các thư viện phụ thuộc có cùng một phiên bản. Nếu không thì bạn có thể loại trừ rằng sự phụ thuộc sử dụng

compile ('com.facebook.android:facebook-android-sdk:[4,5)'){ 
    exclude module: 'support-v4' 
    exclude group: 'com.android.support' 
} 

sau đó thêm các yêu cầu phụ thuộc bạn đã biên soạn dự án của bạn trên, Trong trường hợp của tôi

compile 'com.android.support:support-v4:23.1.0'

-1

Tôi có Android Studio 2.3 và vấn đề của tôi là được giải quyết bằng cách gỡ cài đặt "Thư viện hỗ trợ Android (lỗi thời)" từ Công cụ SDK.

Các vấn đề liên quan