Android 빌드 도구 25.1.6 GCM / FCM으로 업데이트 한 후 IncompatibleClassChangeError


80

Android SDK Tools 25.1.6 및 Android Support Repository 32.0.0 (오늘 아침)으로 업데이트했기 때문에 다음 오류가 발생했습니다. 코드에서 아무것도 변경하지 않았으며 여전히 동료 컴퓨터에서 작동하고 있습니다 (Android SDK 도구 25.1.1 + Android 지원 저장소 30.0.0).

java.lang.IncompatibleClassChangeError: The method 
     'java.io.File android.support.v4.content.ContextCompat.getNoBackupFilesDir(android.content.Context)' 
     was expected to be of type virtual but instead was found to be of type direct 
     (declaration of 'java.lang.reflect.ArtMethod' appears in /system/framework/core-libart.jar)

     at com.google.android.gms.iid.zzd.zzeb(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.xxxxxxx.utils.RegistrationIntentService.onHandleIntent(RegistrationIntentService.java:55)
     at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
     at android.os.Handler.dispatchMessage(Handler.java:102)
     at android.os.Looper.loop(Looper.java:145)
     at android.os.HandlerThread.run(HandlerThread.java:61)

충돌하는 코드는 다음과 같습니다.

InstanceID instanceID = InstanceID.getInstance(this); // <-- crash here
String instanceIDToken = instanceID.getToken(getString(R.string.google_app_id),
GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);

Google 클라우드 메시징에서 토큰을 얻으려고 할 때입니다.

분할 된 플레이 서비스를 사용하여 Gradle에서 GCM을 가져옵니다.

 compile 'com.google.android.gms:play-services-analytics:9.0.0' 
 compile 'com.google.android.gms:play-services-maps:9.0.0'
 compile 'com.google.android.gms:play-services-location:9.0.0' 
 compile 'com.google.android.gms:play-services-gcm:9.0.0' 
 compile 'com.google.android.gms:play-services-base:9.0.0'

편집 내 생각 엔 내가 중포 기지 클라우드 메시지로 마이그레이션해야하므로 사용하지 GCM은 문제를 해결

EDIT2 내 기기가 Google Play 서비스 9.0을 수신합니다 (어제 8.4.x). 이제 더 이상 충돌하지 않지만 모듈 설명자에 대해 불평합니다.

 Failed to load module descriptor class: Didn't find class "com.google.android.gms.dynamite.descriptors.com.google.firebase.auth.ModuleDescriptor"
 Firebase API initialization failure.

누구든지 비슷한 오류가 있으며 어떻게 수정합니까?

고정 @stegranet에 특별한 감사를. ./gradlew -q app:dependencies --configuration compileSDK 24.x를 포함하는 종속성을 식별하는 데 도움이됩니다.

주요 문제는 일부 라이브러리 +가 버전 대신 서명을 사용하여 최신 지원 라이브러리를 가져 오는 것입니다. 이로 인해 사용 가능한 최신 버전이 포함되어 문제가 발생합니다.

따라서 +로그인 종속성을 피 하십시오.)


Google 클라우드 메시징이 Firebase 클라우드 메시징이 된 것 같습니다. firebase.google.com/docs/cloud-messaging 이 관련되어 있는지 확실하지 않지만 여전히 조사 중입니다.
sonique

이것은 빌드 도구 문제가 아니라고 생각합니다. 구글 플레이 서비스와 관련이 있습니다. 버전 9.0.0을 사용해 왔지만 여전히 오류와 내 서명이 유효하지 않다는 불평이 나타납니다 ...
Arnold Balliu

모바일에서 Google Play 서비스 버전을 어떻게 확인합니까? Google Play 뮤직, 게임 등이 표시되지만 Play 서비스와는 다릅니다.
bschandramohan 2016

답변:


36

이 오류를 해결하기 위해 gradle 종속성 트리를 사용했습니다.

다음 gradle -q app:dependencies --configuration compile 과 같은 항목에 대한 출력을 실행 하고 확인하십시오.

+--- com.mcxiaoke.viewpagerindicator:library:2.4.1
|    \--- com.android.support:support-v4:+ -> 24.0.0-beta1 (*)

으로 디에고 오르기는 이 버전 (> = 24) 너무 높은 말했다. 따라서 다음 build.gradle과 같이 종속성을 업데이트하십시오.

compile('com.mcxiaoke.viewpagerindicator:library:2.4.1') {
    exclude module: 'support-v4';
}
compile 'com.android.support:support-v4:23.4.0'

주요 문제는 +(예시와 같이) 기호를 사용하여 일부 모듈 가져 오기 지원 라이브러리였습니다 . 따라서 gradle에는 케이스에 맞지 않는 최신 버전이 포함되어 있습니다. 감사!
sonique

1
모든 것을 24 개 이하로 지정하면 Android가 어떻게> = 24 종속성을 프로젝트에 적용 할 수 있는지 이해하지 못합니다. 이것은 이제 내 앱의 디버그 버전을 벽돌로 만들고 상당히 혼란스럽게 만든 새로운 문제인 것 같습니다. 같은 코드로 저장 버전은 잘 보인다 반면
다니엘 윌슨

확인해 주셔서 감사합니다. 이 문제를 해결하기 위해 업데이트를 릴리스했습니다. 9.0.1 버전을 사용해보십시오
Diego Giorgini 2016 년

프로젝트를 분석하기위한 Android Studio GradleView 플러그인 .
Jignesh 파텔

다음 코드는 어디에서 실행합니까? "gradle -q app : dependencies --configuration compile"
Roee

34

업데이트 5 월 27 일 :

version 9.0.1첫 번째 편집에서 언급 한 비 호환성을 수정하기 위해 방금 업데이트 ( )를 출시했습니다 .
종속성을 업데이트하고 이것이 여전히 문제인지 알려주십시오.

감사!


원래 답변 5 월 20 일 :

발생한 문제는
play-services / firebase sdk v9.0.0com.android.support:appcompat-v7 >= 24
(android-N sdk로 출시 된 버전) 간의 비 호환성 때문입니다.

지원 라이브러리의 이전 버전을 대상으로하여 문제를 해결할 수 있어야합니다. 처럼:

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

2
이것이 효과가 있었던 유일한 해결책입니다. 감사합니다. 내가 말하는 것을 신경 쓰지 않으면 그런 버그가 프로덕션 릴리스로 미끄러질 수 있다는 것이 조금 무섭습니다!
Daniel Wilson은

나는 그것을 업데이트했다 :- 'com.google.android.gms : play-services-gcm : 9.0.2'도 com.google.gms : google-services : 3.0.0 '컴파일하지만 multidex 오류가 발생합니다. 어떤 아이디어 !!
Rohit

'com.google.android.gms : play-services-gcm : 9.0.2'에 여전히이 문제가 있습니다
Tom Bevelander

프로젝트 빌드의 모든 'play-services'모듈 및 'com.google.gms : google-services : 3.0.0'에 9.0.2를 사용합니다. 또한 최근에 출시 된 24.0.0 지원 라이브러리를 사용합니다. "compile 'com.google.android.gms : play-services-gcm : 9.0.2'"를 "compile 'com.google.firebase : firebase-messaging : 9.0.2'"로 바꾸는 오류를 제거 할 수있었습니다
c0deblooded

버전을 9.0.1로 변경하려고 할 때이 오류가 발생했습니다. google-services 플러그인 버전을 업데이트하여 버전 충돌을 수정하십시오 (최신 버전에 대한 정보는 bintray.com/android/android-tools/… ) 또는 com.google.android.gms 버전을 9.0.0으로 업데이트합니다. @Diego 오르기
로저 외국인

5

내 작업은 다음과 같습니다.

앱 수준 gradle

dependencies {
 compile 'com.android.support:appcompat-v7:23.4.0'
 compile 'com.android.support:design:23.4.0'
 compile 'com.google.android.gms:play-services:9.0.0'
}

루트 수준 gradle

dependencies {
    classpath 'com.google.gms:google-services:3.0.0'
}

2
이것은 나를 위해 일했습니다 ... 모든 버전 24.2.1을 23.4.0으로 변경하고 getToken이 다시 작동합니다 ... 이것은 끔찍합니다! 이제 버전을 업그레이드하는 것이 두렵습니다.
EZDsIt

5

플레이 서비스 종속성을 업데이트했습니다. build.gradle

dependencies {
    compile 'com.google.android.gms:play-services:9.0.0'
}

google-services 플러그인의 버전을 업데이트하여 버전 충돌을 해결하려면 build.gradle프로젝트의 루트 폴더 아래 에있는 google-services를 업데이트해야했습니다.

dependencies {
    classpath 'com.google.gms:google-services:3.0.0'
}

여기 에서 google-services의 최신 업데이트를받을 수 있습니다 .

예외를 피하지는 않지만 내 쪽에서 더 이상 응용 프로그램을 충돌시키지 않습니다.

최신 정보

베타 채널에서 Android 스튜디오를 업데이트하여 충돌을 피할 수있었습니다. 그런 다음 platform/build-tools내부 SDK를 업데이트하십시오 .

여기에 이미지 설명 입력


감사합니다. google-services를 3.0.0으로 업데이트했지만 도움이되지 않습니다 :(
sonique

제 경우에는 logcat에서 예외가 발생하지만 더 이상 충돌하지 않습니다
Reaz Murshed

좋아, 피드백 주셔서 감사합니다. Android 빌드 도구 25.1.6을 사용하고 있습니까?
sonique

당신 말이 맞아요, 그것은 플레이 서비스 9.0.0에서는 작동하지만,
분할 된

내가 해냈고 'com.google.android.gms : play-services-gcm : 9.0.2'도 com.google.gms : google-services : 3.0.0 '컴파일 업데이트했지만 multidex 오류가 발생합니다. 어떤 아이디어 !!
Rohit

4

최신 Google Play 서비스 버전으로 업데이트하면 문제가 해결되었습니다.

플러그인 적용 : 하단에 'com.google.gms.google-services'...

dependencies {
    compile 'com.google.android.gms:play-services:9.0.0'
}

https://developers.google.com/android/guides/setup#add_google_play_services_to_your_project


고마워요 나도 업데이트 9.0.0했지만 여전히 문제가 있습니다. 나는 현재 splited를 사용하고 gms있습니다. : compile 'com.google.android.gms:play-services-analytics:9.0.0' compile 'com.google.android.gms:play-services-maps:9.0.0' compile 'com.google.android.gms:play-services-location:9.0.0' compile 'com.google.android.gms:play-services-gcm:9.0.0' compile 'com.google.android.gms:play-services-base:9.0.0'
sonique

로 컴파일을 시도 play-services:9.0.0했지만 여전히 같은 문제입니다.
sonique

'com.google.android.gms : play-services-gcm : 9.0.2'를 사용하고 있지만 동일한 문제가 발생했습니다
Tom Bevelander


1

모든 플레이 서비스의 패키지를 포함함으로써

dependencies {
  compile 'com.google.android.gms:play-services:9.0.0'
}

오류를 억제하지만 최종 결과는 GCM 토큰 검색이 작동하지 않거나 GCM의 인스턴스를 가져올 수 없다는 것입니다. 그래서 이것은 내 책에서 해결책이 아닙니다. 누가 무슨 일이 일어나고 있는지 아는 사람이 있으면 우리를 계몽하십시오.

편집하다:

GCM을 firebase로 교체하고, android studio를 2.1에서 2.2로 업데이트하여 firebase 분석의 즉각적인 실행 문제를 해결하고, 빌드 도구를 24-rc4로, 플랫폼 도구를 24-rc3으로 업데이트하고, 지원 라이브러리의 버전을 23.4.0으로 유지했습니다. 이제 모든 것이 잘 작동하는 것 같습니다.


FCM을 구현해야하는 것 같습니다
sonique

내가 해냈지만 여전히 같은 오류가 발생합니다. 나는 완전히 GCM을 제거하고이를 바탕 FCM으로 교체 : developers.google.com/cloud-messaging/android/... 뭔가가 지원 라이브러리가 아닌 GCM 또는 FCM 패키지에 문제가 있습니다
Stilianos Tzouvaras

1

나는 같은 문제가 있었고 Android Support Repository 32.0.0에서 Android Support Repository 31.0.0으로 되 돌리면 해결되었습니다.


3
Android 지원 저장소를 어떻게 되 돌리나요?
Pratama Nur Wijaya

2
내가 찾은 유일한 방법은 새 저장소 대신 이전 저장소를 복사하는 것입니다. 저장소는 일반적으로 'SDK 관리자'가 가리키는 Android 폴더 아래에 있습니다 (Mac을 사용하는 경우 경로 ~ / Library / Android / sdk / extras). extras 폴더에서 'android 및'google '폴더를 이전 폴더로 바꿉니다.
BorisK

여기에서 저장소를 찾았습니다 : dl-ssl.google.com/android/repository/… , 그런 다음 ../sdk/extras/android 에 압축을 풀고 기존 m2reposity를 제거하면 지금까지 작동하는 것 같습니다 .
Tom Redman

1

GCM 2016을 사용한 Android 푸시 알림 :

1) Android SDK-> SDK 도구에서 Google Play 서비스 확인

2) gradle에서 종속성을 한 줄만 추가하십시오.

compile 'com.google.android.gms:play-services-gcm:9.4.0'

(특정 클래스 경로가 없으며 나를 위해 작동합니다)

3) 3 개의 클래스 (GCMPushReceiverService, GCMRegistrationIntentService, GCMTokenRefreshListenerService)를 생성해야합니다.

4.1) GCMTokenRefreshListenerService 코드 :

package com.myapp.android;

/**
 * Created by skygirl on 02/08/2016.
 */
import android.content.Intent;
import com.google.android.gms.iid.InstanceIDListenerService;

public class GCMTokenRefreshListenerService extends InstanceIDListenerService {

    //If the token is changed registering the device again
    @Override
    public void onTokenRefresh() {
        Intent intent = new Intent(this, GCMRegistrationIntentService.class);
        startService(intent);
    }
}

4.2) GCMRegistrationIntentService 용 코드 (authorizedEntity를 프로젝트 번호로 변경) :

package com.myapp.android;

/**
 * Created by Skygirl on 02/08/2016.
 */
import android.app.IntentService;
import android.content.Intent;
import android.support.v4.content.LocalBroadcastManager;
import android.util.Log;

import com.google.android.gms.gcm.GoogleCloudMessaging;
import com.google.android.gms.iid.InstanceID;

public class GCMRegistrationIntentService extends IntentService {
    //Constants for success and errors
    public static final String REGISTRATION_SUCCESS = "RegistrationSuccess";
    public static final String REGISTRATION_ERROR = "RegistrationError";

    //Class constructor
    public GCMRegistrationIntentService() {
        super("");
    }


    @Override
    protected void onHandleIntent(Intent intent) {
        //Registering gcm to the device
        registerGCM();
    }

    private void registerGCM() {
        //Registration complete intent initially null
        Intent registrationComplete = null;

        //Register token is also null
        //we will get the token on successfull registration
        String token = null;
        try {
            //Creating an instanceid
            InstanceID instanceID = InstanceID.getInstance(this);
            String authorizedEntity = "XXXXXXXXXX"; //  your project number

            //Getting the token from the instance id
            token = instanceID.getToken(authorizedEntity, GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);

            //Displaying the token in the log so that we can copy it to send push notification
            //You can also extend the app by storing the token in to your server
            Log.w("GCMRegIntentService", "token:" + token);

            //on registration complete creating intent with success
            registrationComplete = new Intent(REGISTRATION_SUCCESS);

            //Putting the token to the intent
            registrationComplete.putExtra("token", token);
        } catch (Exception e) {
            //If any error occurred
            Log.w("GCMRegIntentService", "Registration error");
            registrationComplete = new Intent(REGISTRATION_ERROR);
        }

        //Sending the broadcast that registration is completed
        LocalBroadcastManager.getInstance(this).sendBroadcast(registrationComplete);
    }
}

4.3) GCMPushReceiverService 용 코드 :

package com.myapp.android;

/**
 * Created by Skygirl on 02/08/2016.
 */
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.media.RingtoneManager;
import android.os.Bundle;
import android.support.v4.app.NotificationCompat;

import com.google.android.gms.gcm.GcmListenerService;

//Class is extending GcmListenerService
public class GCMPushReceiverService extends GcmListenerService {

    //This method will be called on every new message received
    @Override
    public void onMessageReceived(String from, Bundle data) {
        //Getting the message from the bundle
        String message = data.getString("message");
        //Displaying a notiffication with the message
        sendNotification(message);
    }

    //This method is generating a notification and displaying the notification
    private void sendNotification(String message) {
        Intent intent = new Intent(this, MainActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        int requestCode = 0;
        PendingIntent pendingIntent = PendingIntent.getActivity(this, requestCode, intent, PendingIntent.FLAG_ONE_SHOT);
        NotificationCompat.Builder noBuilder = new NotificationCompat.Builder(this)
                .setSmallIcon(R.drawable.your_logo)
                .setContentTitle("Your Amazing Title")
                .setContentText(message)
                .setPriority(Notification.PRIORITY_MAX)
                .setContentIntent(pendingIntent);
        noBuilder.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));

        NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
        notificationManager.notify(0, noBuilder.build()); //0 = ID of notification
    }
}

5) 패키지 이름을 변경하는 것을 잊지 마십시오

6) mainActivity에 다음 코드를 붙여 넣으십시오.

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Setup view
        setContentView(R.layout.main);
    mRegistrationBroadcastReceiver = new BroadcastReceiver() {

        //When the broadcast received
        //We are sending the broadcast from GCMRegistrationIntentService

        public void onReceive(Context context, Intent intent) {
            //If the broadcast has received with success
            //that means device is registered successfully
            if(intent.getAction().equals(GCMRegistrationIntentService.REGISTRATION_SUCCESS)){
                //Getting the registration token from the intent
                String token = intent.getStringExtra("token");
                //Displaying the token as toast
                Toast.makeText(getApplicationContext(), "Registration token:" + token, Toast.LENGTH_LONG).show();

                //if the intent is not with success then displaying error messages
            } else if(intent.getAction().equals(GCMRegistrationIntentService.REGISTRATION_ERROR)){
                Toast.makeText(getApplicationContext(), "GCM registration error!", Toast.LENGTH_LONG).show();
            } else {
                Toast.makeText(getApplicationContext(), "Error occurred", Toast.LENGTH_LONG).show();
            }
        }
    };

    //Checking play service is available or not
    int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext());

    //if play service is not available
    if(ConnectionResult.SUCCESS != resultCode) {
        //If play service is supported but not installed
        if(GooglePlayServicesUtil.isUserRecoverableError(resultCode)) {
            //Displaying message that play service is not installed
            Toast.makeText(getApplicationContext(), "Google Play Service is not install/enabled in this device!", Toast.LENGTH_LONG).show();
            GooglePlayServicesUtil.showErrorNotification(resultCode, getApplicationContext());

            //If play service is not supported
            //Displaying an error message
        } else {
            Toast.makeText(getApplicationContext(), "This device does not support for Google Play Service!", Toast.LENGTH_LONG).show();
        }

        //If play service is available
    } else {
        //Starting intent to register device
        Intent itent = new Intent(this, GCMRegistrationIntentService.class);
        startService(itent);
    }
}

//Unregistering receiver on activity paused
@Override
public void onPause() {
    super.onPause();
    Log.w("MainActivity", "onPause");
    LocalBroadcastManager.getInstance(this).unregisterReceiver(mRegistrationBroadcastReceiver);
}



    @Override
    public void onResume() {
 super.onResume();
        Log.w("MainActivity", "onResume");
        LocalBroadcastManager.getInstance(this).registerReceiver(mRegistrationBroadcastReceiver,
                new IntentFilter(GCMRegistrationIntentService.REGISTRATION_SUCCESS));
        LocalBroadcastManager.getInstance(this).registerReceiver(mRegistrationBroadcastReceiver,
                new IntentFilter(GCMRegistrationIntentService.REGISTRATION_ERROR));
    }

7) AndroidManifest.xml에 다음 줄을 추가하십시오.

<uses-permission android:name="android.permission.INTERNET" />

8) 콘솔 logcat에서 토큰을 복사하여이 사이트 에 붙여넣고 프로젝트 번호, 토큰 및 메시지를 추가하십시오. 그것은 나를 위해 잘 작동합니다 :)


안녕하세요 @Skygirl 저는 귀하의 예를 따르고 있습니다. AndroidManifest의 특별한 요구 사항이 있습니까? 코드의 해당 부분을 추가해 주시겠습니까? 감사합니다
ziniestro 2016-08-06

0

하루 종일이 작업을 마치면 Optimizely 라이브러리도 어떤 식 으로든 충돌하여이 오류가 발생하고 있음을 100 % 확인할 수 있습니다. 구체적으로 저는 Fabric을 통해 Optimizely를 사용하고 있습니다. 이러한 방식으로 Optimizely를 사용하는 동안 Firebase를 초기화하는 것은 불가능합니다 (모든면에서?).

나는 그것에 대해 그들의 github에 게시했으며 그들에게 직접 연락 할 것입니다 ...

https://github.com/optimizely/Optimizely-Android-SDK/issues/11


0

나는 같은 문제가 있었다. SDK 도구를 25.1.7 rc1로 업데이트했는데 문제가 사라졌습니다.


0

SDK 도구를 25.1.7로 업데이트하고이 문제를 해결했습니다.


0

글쎄, 나는 안드로이드를 사용하는 초보자입니다. FirebaseFirebase 웹 사이트에서 제공하는 지침 에 따라 사용자 생성을 테스트하고 싶었습니다 .

표시된 위치에 해당 줄을 추가했습니다.

클래스 경로 'com.google.gms : google-services : 3.0.0'

'com.google.firebase : firebase-auth : 9.2.0'컴파일

플러그인 적용 : 'com.google.gms.google-services'

그러나 createUserWithEmailAndPassword 메서드는 사용자 생성에 계속 실패했습니다. 그래서 내 문제를 파악하기 위해이 질문을 방문했습니다. 나는 모든 것을 읽고 각 조언을 적용했습니다. 그러나 IT는 계속해서 실패를 보였습니다. 하지만을 (를) 업그레이드하면 Android Studio from 2.1.1 to 2.1.2사용자를 성공적으로 만들 수있었습니다.

하지만 확인했을 때 logcat먼저 표시 "Firebase API initialization failure"되고 "FirebaseApp 초기화 ​​성공"이 표시되었습니다.

07-09 18:53:37.012 13352-13352/jayground.firebasetest A/FirebaseApp: Firebase API initialization failure. How can I solve

이? java.lang.reflect.Method.invokeNative (Native Method)의 java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invoke (Method.java:515) at com.google.firebase.FirebaseApp.zza (Unknown 출처) com.google.firebase.FirebaseApp.initializeApp (Unknown Source) at com.google.firebase.FirebaseApp.


확인. 감사합니다. 나는 내 문제를 어떻게 해결했는지 공유하는 것이 좋을 것이라고 생각했다. (완전히 해결했는지 잘 모르겠습니다. Android Studio 버전을 업데이트 한 후 com.google.firebase : firebase-auth : 9.2.0으로 사용자를 생성 할 수 있지만 logcat에서 여전히 Firebase API 초기화 실패가 발생합니다. 그래서 궁금했습니다. ) 다음에 '질문하기 버튼'을 사용하겠습니다.
Jayground

0

이 문제에 직면하여 앱 gradle 버전을 1.5.0에서 2.0.0으로 변경합니다.

클래스 경로 변경

com.android.tools.build:gradle:1.5.0

...에

classpath 'com.android.tools.build:gradle:2.0.0


0

해결책 1 :

dependencies {
 compile `com.android.support:appcompat-v7:23.4.0`
 compile `com.android.support:support-v4:23.4.0`
 compile `com.android.support:design:23.4.0`
 compile `com.google.android.gms:play-services:9.0.0`
}

해결 방법 2 : 폴더 .idie / libraries /에서 호환되지 않음을 감지합니다. 가끔 play-services-ads : 8.4.0을 play-services-gcm : 9.0.0과 동시에 선언합니다. 감지 한 build.grade 호환되지 않는 라이브러리에서 재정의해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.