google GCM android crashes ( java.lang.NoClassDefFoundError: com.google.android.gms.R$string )

筅森魡賤 提交于 2019-12-05 22:59:48

问题


I am developing an app using the Google GCM service and it seems to be crashing on all pre-lollipop devices at Launch.. I Have followed google tutorial... and its working on lollipop and marshmallow

here are my project level dependencies

dependencies {
        classpath 'com.android.tools.build:gradle:1.5.0'
        classpath 'com.google.gms:google-services:1.5.0'
}

I have this in my app level gradle file

compile 'com.google.android.gms:play-services:8.4.0'

and this

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

I have also setup android manifest.. and service classes accordingly and receiving GCM on marshmallow device.

I am having this error.

E/AndroidRuntime: FATAL EXCEPTION: main
      Process: itcurves.driver, PID: 12788
      java.lang.NoClassDefFoundError: com.google.android.gms.R$string
      at com.google.android.gms.measurement.zza.<init>(Unknown Source)
      at com.google.android.gms.measurement.zza.zzaR(Unknown Source)
      at com.google.android.gms.measurement.internal.zzn.zziJ(Unknown Source)
      at com.google.android.gms.measurement.internal.zzz.zza(Unknown Source)
      at com.google.android.gms.measurement.internal.zzw.<init>(Unknown Source)
      at com.google.android.gms.measurement.internal.zzaa.zzDj(Unknown Source)
      at com.google.android.gms.measurement.internal.zzw.zzaT(Unknown Source)
      at com.google.android.gms.measurement.AppMeasurementContentProvider.onCreate(Unknown Source)
      at android.content.ContentProvider.attachInfo(ContentProvider.java:1591)
      at android.content.ContentProvider.attachInfo(ContentProvider.java:1562)
      at android.app.ActivityThread.installProvider(ActivityThread.java:4889)
      at android.app.ActivityThread.installContentProviders(ActivityThread.java:4476)
      at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4413)
      at android.app.ActivityThread.access$1500(ActivityThread.java:142)
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1263)
      at android.os.Handler.dispatchMessage(Handler.java:102)
      at android.os.Looper.loop(Looper.java:136)
      at android.app.ActivityThread.main(ActivityThread.java:5120)
      at java.lang.reflect.Method.invokeNative(Native Method)
      at java.lang.reflect.Method.invoke(Method.java:515)
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792)
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:608)
      at dalvik.system.NativeStart.main(Native Method)

回答1:


I had same problem.You are probably facing it on devices prior 5.0 version.The reason why this happen is that version prior to android 5.0 use Dalvik and by default, Dalvik limits apps to a single classes.dex bytecode file per APK.The solution is to use multidex support.

Include in your build.gradle dependencies this:

compile 'com.android.support:multidex:1.0.0'


public class MyApp extends MultiDexApplication { 

  @Override
  public void onCreate() {
     super.onCreate(); 
  } 

}

than in your Manifest add MultiDexApplication class

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android.multidex.myapplication">
    <application
        ...
        android:name=".MyApp">
        ...
    </application>
</manifest>

Note: If you already have your application class just extend it with MultiDexApplication class



来源:https://stackoverflow.com/questions/35334130/google-gcm-android-crashes-java-lang-noclassdeffounderror-com-google-android

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!