2016-09-09 40 views
9

Konum farkında uygulama geliştiriyorum. Google Play Konum Hizmetleri ve Google Haritalar'ı uygulamamla entegre ettim. Uygulamam hata ayıklama modunda bir sorun olmadan çalışır. Biliyorum bu kontrol benim veridiliminin onResume yöntem olur her yaşam döngüsü yönteminin aşağıdaki günlükleri tarafından farkSecurityException: İmzalı APK'da yanlış bir arabirime ciltleyici çağırma

Process: com.example.akif, PID: 4233 
    java.lang.RuntimeException: Unable to resume activity {com.example.akif/com.example.akif.activities.MainActivity}: java.lang.SecurityException: Binder invocation to an incorrect interface 
    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3400) 
    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3440) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2713) 
    at android.app.ActivityThread.-wrap12(ActivityThread.java) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:154) 
    at android.app.ActivityThread.main(ActivityThread.java:6077) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 
Caused by: java.lang.SecurityException: Binder invocation to an incorrect interface 
    at android.os.Parcel.nativeEnforceInterface(Native Method) 
    at android.os.Parcel.enforceInterface(Parcel.java:482) 
    at vz.onTransact(:com.google.android.gms.DynamiteModulesB:81) 
    at android.os.Binder.transact(Binder.java:499) 
    at com.google.android.gms.maps.a.bt.c(Unknown) 
    at com.google.android.gms.maps.i.b(Unknown) 
    at com.google.android.gms.b.d.b(Unknown) 
    at com.google.android.gms.b.j.a(Unknown) 
    at com.google.android.gms.maps.h.b(Unknown) 
    at com.google.android.gms.maps.h.a(Unknown) 
    at com.google.android.gms.b.a.c(Unknown) 
    at com.google.android.gms.b.a.e(Unknown) 
    at com.google.android.gms.maps.g.f(Unknown) 
    at android.support.v4.app.k.ay(Unknown) 
    at android.support.v4.app.x.l(Unknown) 
    at android.support.v4.app.ax.h(Unknown) 
    at android.support.v4.app.ax.i(Unknown) 
    at android.support.v4.app.ax.run(Unknown) 
    at android.support.v4.app.x.ae(Unknown) 
    at android.support.v4.app.i.aa(Unknown) 
    at android.support.v4.app.a.onPostResume(Unknown) 
    at android.support.v7.app.a.onPostResume(Unknown) 
    at android.app.Activity.performResume(Activity.java:6792) 
    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3377) 
    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3440)  
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2713)  
    at android.app.ActivityThread.-wrap12(ActivityThread.java)  
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)  
    at android.os.Handler.dispatchMessage(Handler.java:102)  
    at android.os.Looper.loop(Looper.java:154)  
    at android.app.ActivityThread.main(ActivityThread.java:6077)  
    at java.lang.reflect.Method.invoke(Native Method)  
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)  

: Salıverme modunda imzalı APK üretmek ve uygulamayı çalıştırdığınızda, aşağıdaki istisna ile, başlangıçta çöker aşağıdaki Google Oda durumunu oynayın:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 24 
    buildToolsVersion "24.0.1" 

    defaultConfig { 
     applicationId "com.example.akif" 
     minSdkVersion 15 
     targetSdkVersion 24 
     versionCode 1 
     versionName "0.1" 

     jackOptions { 
      enabled true 
     } 
    } 

    compileOptions { 
     sourceCompatibility JavaVersion.VERSION_1_8 
     targetCompatibility JavaVersion.VERSION_1_8 
    } 

    buildTypes { 
     debug { 
      applicationIdSuffix '.test' 
     } 

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

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    compile 'com.android.support:appcompat-v7:24.2.0' 
    compile 'com.android.support:cardview-v7:24.2.0' 
    compile 'com.android.support:design:24.2.0' 
    compile 'com.android.support:preference-v7:24.2.0' 
    compile 'com.google.android.gms:play-services-location:9.4.0' 
    compile 'com.google.android.gms:play-services-maps:9.4.0' 
    compile 'com.github.mehmetakiftutuncu:toolbelt:1.1.0' 
    compile 'com.squareup.okhttp3:okhttp:3.4.1' 
    compile 'joda-time:joda-time:2.9.4' 
} 

Ben iki Google Maps API k:

@Override public void onResume() { 
    Log.debug(getClass(), "onResume()"); 

    GoogleApiAvailability googleApiAvailability = GoogleApiAvailability.getInstance(); 

    int googlePlayServicesAvailabilityResult = googleApiAvailability.isGooglePlayServicesAvailable(getContext()); 

    if (googlePlayServicesAvailabilityResult != ConnectionResult.SUCCESS) { 
     if (!googleApiAvailability.isUserResolvableError(googlePlayServicesAvailabilityResult)) { 
      Toast.makeText(getContext(), "Your device doesn't support Google Play location services. This application cannot run without it!", Toast.LENGTH_LONG).show(); 

      getActivity().finish(); 

      return; 
     } 

     Dialog errorDialog = googleApiAvailability.getErrorDialog(getActivity(), googlePlayServicesAvailabilityResult, GOOGLE_PLAY_SERVICES_REQUEST_CODE); 

     if (errorDialog != null) { 
      errorDialog.setCancelable(false); 
      errorDialog.setCanceledOnTouchOutside(false); 
      errorDialog.setOnDismissListener((DialogInterface dialogInterface) -> { 
       Toast.makeText(getContext(), "You need Google Play location services to run this application!", Toast.LENGTH_LONG).show(); 

       getActivity().finish(); 
      }); 

      errorDialog.show(); 
     } 
    } else if (googleApiClient.isConnected() && !isUpdatingLocation) { 
     startLocationUpdates(); 
    } 

    super.onResume(); 
} 

Benim gradle dosyası aşağıdaki gibi görünür hata ayıklama ve serbest bırakma modları için sırasıyla paketlerim com.example.akif.test ve com.example.akif numaralarına göre kurulur. Öyleyse, paket isimleriyle ilgili olduğunu sanmıyorum, ama yine de, hatadan hiçbir şey anlamadığım için bu konuyla ilgili çok iyi olabilir.

Neler olduğu hakkında bir fikrin var mı?

+0

Bu benzer [Konuyu] (http://stackoverflow.com/questions/24591282/securityexception-binder-invocation-to-an-incorrect-interface-using-in-app-bill). – noogui

+0

@noogui Ama öyle değil. Faturalandırma hizmetleri kullanmıyorum. Ayrıca hiçbir AIDL dosyanız yok. –

cevap

2

neredeyse hiç sonuçlarla çok araştırma yaptıktan sonra, aşağıdaki Proguard kurallarına sorunu gidermek başardı: Ben bu sorunu vardı neden

-keep public class com.google.android.gms.* { public *; } 
-dontwarn com.google.android.gms.** 

Hala gerçek nedenini bilmiyorum ama bununla sabit görünüyor.

Bu yardımcı olur umarım.

+1

Çok fazla tutuyorsun. Http://stackoverflow.com/a/39701449/94363 adresine bakın. – rds