迁移到Android Studio后在运行时崩溃(NoSuchMethodError)

BVt*_*Vtp 5 crash android android-studio

我迁移到Android工作室,在我尝试运行应用程序之前,一切似乎都很好.它卡在Launcher活动中然后崩溃,打印:

E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.NoSuchMethodError: No direct method <init>(ILjava/lang/String;)V in class Lcom/google/android/gms/common/api/Status; or its super classes (declaration of 'com.google.android.gms.common.api.Status' appears in /data/data/com.MY PACKAGE/files/instant-run/dex/slice-google-play-........b-classes.dex)
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:1759)
at android.content.ContentProvider.attachInfo(ContentProvider.java:1728)
at android.app.ActivityThread.installProvider(ActivityThread.java:5534)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:5105)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5045)
at android.app.ActivityThread.access$1600(ActivityThread.java:150)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1459)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:168)
at android.app.ActivityThread.main(ActivityThread.java:5845)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687)
Run Code Online (Sandbox Code Playgroud)

Luc*_*ede 10

对我来说,问题是,我的游戏服务依赖的不同版本不同,比如

dependencies {
    compile 'com.google.android.gms:play-services-gcm:8.4.0' /different version
    compile 'com.google.android.gms:play-services-maps:9.0.2'
    compile 'com.google.android.gms:play-services-location:9.0.2'
}
Run Code Online (Sandbox Code Playgroud)

应改为

dependencies {
    compile 'com.google.android.gms:play-services-gcm:9.0.2'
    compile 'com.google.android.gms:play-services-maps:9.0.2'
    compile 'com.google.android.gms:play-services-location:9.0.2'
}
Run Code Online (Sandbox Code Playgroud)

我希望它适合你或遇到同样问题的人.


Tan*_*eja 1

将此行添加到您的清单文件中

<application
    ...
    android:name="android.support.multidex.MultiDexApplication">
    ...
</application>
Run Code Online (Sandbox Code Playgroud)

并将其添加到你的 gradle 中

defaultConfig {
    ...
    minSdkVersion 14
    targetSdkVersion 21
    ...

    // Enabling multidex support.
    multiDexEnabled true
}
Run Code Online (Sandbox Code Playgroud)

第二种解决方案:

将其添加到启动器活动的 onCreate() 方法中

public void onCreate(Bundle arguments) {
 Context context = this.getInstrumentation().getTargetContext().getApplicationContext();
  MultiDex.install(context );
  super.onCreate(arguments);
...
}
Run Code Online (Sandbox Code Playgroud)

或者

需要在扩展应用程序的类中添加此内容:

@Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
}
Run Code Online (Sandbox Code Playgroud)

欲了解更多详细信息: 链接1链接2链接3链接4

希望它有效..


归档时间:

查看次数:

6298 次

最近记录:

8 年,2 月 前