2017-05-25 2 views
0

Jungs Ich habe zwei Fragen: 1), wie komplette app (ich meine Lauftest, nicht Einheit) auf jedem api von MinSDK-Version, die ich eingerichtet. Ist es ein automatischer Prozess dafür? 2) veröffentlichen nach meiner app habe ich ANR Fehler auf meiner App veröffentlicht Konsole (laufenden Betrieb 4.4 Kitkat):Kitkat 4.4 ANR Fehler nach Veröffentlichung

java.lang.RuntimeException: 
    at android.app.ActivityThread.installProvider(ActivityThread.java:5011) 
    at android.app.ActivityThread.installContentProviders(ActivityThread.java:4582) 
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4522) 
    at android.app.ActivityThread.access$1500(ActivityThread.java:151) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1381) 
    at android.os.Handler.dispatchMessage(Handler.java:110) 
    at android.os.Looper.loop(Looper.java:193) 
    at android.app.ActivityThread.main(ActivityThread.java:5292) 
    at java.lang.reflect.Method.invokeNative(Native Method:0) 
    at java.lang.reflect.Method.invoke(Method.java:515) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640) 
    at dalvik.system.NativeStart.main(Native Method:0) 
Caused by: java.lang.ClassNotFoundException: 
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:497) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:457) 
    at android.app.ActivityThread.installProvider(ActivityThread.java:4996) 

i AVD-Emulator mit ähnlichen Config auf meinem Android-Studio einrichten i nach kompilieren i unten Ausnahme habe:

1829-2839/com.google.android.gms.persistent E/LoadManifestTask: Can't find Chimera operation impl class com.google.android.location.copresence.GcmRegistrationChimeraReceiver dropping operation 
                        java.lang.ClassNotFoundException: Didn't find class "com.google.android.location.copresence.GcmRegistrationChimeraReceiver" on path: DexPathList[[zip file "/system/framework/com.android.media.remotedisplay.jar", zip file "/system/framework/com.android.location.provider.jar", zip file "/system/priv-app/PrebuiltGmsCore.apk", zip file "/data/data/com.google.android.gms/code_cache/secondary-dexes/PrebuiltGmsCore.apk.classes2.zip", zip file "/data/data/com.google.android.gms/code_cache/secondary-dexes/PrebuiltGmsCore.apk.classes3.zip", zip file "/data/data/com.google.android.gms/code_cache/secondary-dexes/PrebuiltGmsCore.apk.classes4.zip", zip file "/data/data/com.google.android.gms/code_cache/secondary-dexes/PrebuiltGmsCore.apk.classes5.zip"],nativeLibraryDirectories=[/vendor/lib, /system/lib]] 
                         at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 
                         at java.lang.ClassLoader.loadClass(ClassLoader.java:497) 
                         at java.lang.ClassLoader.loadClass(ClassLoader.java:457) 
                         at bws.<init>(:com.google.android.gms:799) 
                         at bwt.run(:com.google.android.gms:2049) 
                         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:841) 


                        [ 05-25 03:04:16.195 1623: 1638 D/   ] 
                        HostConnection::get() New Host Connection established 0xb9183a30, tid 1638 

Irgendeine Idee, was dieses Problem cuse? Meine App funktioniert gut auf Lollipop und Nugat. ich Paste meine gradle auch: Plugin anwenden: 'com.android.application' Plugin anwenden : 'Reich-android'

android { 
    compileSdkVersion 25 
    buildToolsVersion "25.0.2" 
    defaultConfig { 
     applicationId 'com.fff.hhh' 
     minSdkVersion 15 
     targetSdkVersion 25 
     versionCode 8 
     versionName '4.0' 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
     multiDexEnabled true 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
    productFlavors { 
    } 
} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
     exclude group: 'com.android.support', module: 'support-annotations' 
    }) 
    compile 'com.android.support:appcompat-v7:25.3.1' 
    compile 'com.android.support:design:25.3.1' 
    compile 'com.google.android.gms:play-services:10.2.6' 
    compile 'com.android.support:cardview-v7:25.3.1' 
    compile 'com.github.bumptech.glide:glide:3.8.0' 
    compile 'com.android.support:recyclerview-v7:25.3.1' 
    compile 'com.jakewharton:butterknife:8.5.1' 
    compile 'com.squareup.retrofit2:retrofit:2.3.0' 
    compile 'com.squareup.retrofit2:converter-gson:2.3.0' 
    testCompile 'junit:junit:4.12' 
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1' 
} 
+0

Prüfen Sie vor der Verwendung die Verfügbarkeit von Play Services? –

Antwort

0

Als offizieller docs beschrieben:

Sie sind stark gefördert Verwenden Sie die GoogleApiClient-Klasse unter , um auf die Google Play-Dienste zuzugreifen. Mit diesem Ansatz können Sie ein OnConnectionFailedListener Objekt an Ihren Client anhängen. Um festzustellen, ob das Gerät über die entsprechende Version der Google Play APK Dienste verfügt, implementieren Sie die onConnectionFailed() Callback-Methode. Wenn schlägt die Verbindung fehl aufgrund eines fehlenden oder out-of-date-Version des Google APK-Play, der Rückruf einen Fehlercode wie SERVICE_MISSING, SERVICE_VERSION_UPDATE_REQUIRED oder SERVICE_DISABLED empfängt. ... Ein anderer Ansatz ist die Verwendung der Methode isGooglePlayServicesAvailable(). Sie erhalten einen Verweis auf das Singleton-Objekt , das diese Methode unter Verwendung von GoogleApiAvailability.getInstance() bereitstellt. Sie können diese Methode in die onResume() Methode der Hauptaktivität aufrufen. Wenn der Ergebniscode SUCCESS lautet, ist das Google Play-Dienst-APK auf dem neuesten Stand und Sie können weiterhin eine Verbindung herstellen.

Bitte stellen Sie sicher, dass Sie diese Regeln befolgen.

0

Um die App gegen die jeweilige Version zu testen:

1. Write espresso test 
2. run those tests on the device with desired api level 

das GCM Problem hinzufügen Zur Lösung

apply plugin: 'com.google.gms.google-services' 

am Ende Ihres build.gradle Sie oben eingefügt haben.

+0

Android Studio sagen, dass "11:41 \t Gradle Sync fehlgeschlagen: Plugin mit der ID 'com.google.gms.google-Dienste' nicht gefunden." –

Verwandte Themen