java.lang.NoClassDefFoundError: com.google.android.gms.common.internal.zzd
java.lang.NoClassDefFoundError: com.google.android.gms.common.internal.zzd
使用地图 api v2,它与 4.4、5.0、5.1、5.1.1、6 完美配合,但当我尝试 4.2.2 时应用程序崩溃。我一直在做很多研究,但似乎没有任何效果。这是完整的日志。
FATAL EXCEPTION: main
java.lang.NoClassDefFoundError: com.google.android.gms.common.
at com.google.android.gms.measurement.internal.zzk$zza.get(
at com.google.android.gms.measurement.internal.zzc.zzkG(
at com.google.android.gms.measurement.internal.zzr.<init>(
at com.google.android.gms.measurement.internal.zzx.zzb(
at com.google.android.gms.measurement.internal.zzt.<init>(
at com.google.android.gms.measurement.internal.zzx.zzBQ(
at com.google.android.gms.measurement.internal.zzt.zzaU(
at com.google.android.gms.measurement.ource)
at android.content.ContentProvider.attachInfo(ContentProvider
at android.app.ActivityThread.installProvider(ActivityThread.
at android.app.ActivityThread.installContentProviders(
at android.app.ActivityThread.handleBindApplication(
at android.app.ActivityThread.access00(ActivityThread.
at android.app.ActivityThread$H.handleMessage(ActivityThread.
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5041)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run
at com.android.internal.os.ZygoteInit.main(ZygoteInit.
at dalvik.system.NativeStart.main(Native Method)
有什么想法吗?
这是我的 build.gradle
buildscript {
repositories {
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'io.fabric.tools:gradle:1.+'
}
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
repositories {
mavenCentral()
maven {
url "http://dl.bintray.com/glomadrian/maven"
}
maven { url 'https://maven.fabric.io/public' }
}
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
applicationId "py.com.roshka.billeterabancard"
minSdkVersion 14
targetSdkVersion 23
versionCode 1
versionName "1.0"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.wang.avi:library:1.0.1'
compile 'com.nineoldandroids:library:2.4.0'
compile 'com.github.glomadrian:loadingballs:1.1@aar'
compile 'com.android.support:appcompat-v7:23.1.0'
compile 'com.google.android.gms:play-services:8.4.0'
compile 'com.android.support:design:23.1.0'
compile 'com.android.support:recyclerview-v7:23.1.0'
compile 'com.squareup.okio:okio:1.0.+'
compile 'com.squareup.okhttp:okhttp:1.5.4'
compile 'com.squareup.okhttp:okhttp-urlconnection:2.0.0'
compile 'com.squareup.retrofit:retrofit:1.8.0'
compile 'com.pnikosis:materialish-progress:1.7'
compile 'com.google.code.gson:gson:2.3'
compile 'me.dm7.barcodescanner:zxing:1.8.3'
compile 'me.dm7.barcodescanner:zbar:1.8.3'
compile('com.crashlytics.sdk.android:crashlytics:2.5.5@aar') {
transitive = true;
}
}
经过一些研究和几个小时的测试,我终于意识到 android 有一个叫做 DEX 64K 方法限制的东西。简而言之,将外部库添加到项目时可以达到一个限制。当您达到该限制时,您可能需要使用 multidex。我个人决定减少导入的库数量,因为其中一些库并没有真正使用或必需。
要进一步了解 multidex,您应该阅读这篇文章,
3 个简单步骤:
步骤#1:
Multidexing 是一项新功能,因此需要支持库才能与棒棒糖之前的设备兼容。您需要将以下内容添加到 gradle 文件依赖项中:
compile 'com.android.support:multidex:1.0.0'
步骤#2:
同时在你的 gradle 文件中启用 multidex 输出:
android {
compileSdkVersion 21
buildToolsVersion "21.1.0"
defaultConfig {
...
minSdkVersion 14
targetSdkVersion 21
...
// Enabling multidex support.
multiDexEnabled true
}
}
步骤#3:
然后将 multidex 支持应用程序添加到您的清单中:
<?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="android.support.multidex.MultiDexApplication">
...
</application>
注意:如果您的应用程序已经使用(扩展)应用程序class,您可以覆盖 attachBaseContext() 方法并调用 MultiDex.install(this ) 启用 multidex。有关详细信息,请参阅 MultiDexApplication 参考文档。
@Override
protected void attachBaseContext(Context context) {
super.attachBaseContext(context);
MultiDex.install(this);
}
这里有相同的说明供参考:https://developer.android.com/tools/building/multidex.html
使用地图 api v2,它与 4.4、5.0、5.1、5.1.1、6 完美配合,但当我尝试 4.2.2 时应用程序崩溃。我一直在做很多研究,但似乎没有任何效果。这是完整的日志。
FATAL EXCEPTION: main
java.lang.NoClassDefFoundError: com.google.android.gms.common.
at com.google.android.gms.measurement.internal.zzk$zza.get(
at com.google.android.gms.measurement.internal.zzc.zzkG(
at com.google.android.gms.measurement.internal.zzr.<init>(
at com.google.android.gms.measurement.internal.zzx.zzb(
at com.google.android.gms.measurement.internal.zzt.<init>(
at com.google.android.gms.measurement.internal.zzx.zzBQ(
at com.google.android.gms.measurement.internal.zzt.zzaU(
at com.google.android.gms.measurement.ource)
at android.content.ContentProvider.attachInfo(ContentProvider
at android.app.ActivityThread.installProvider(ActivityThread.
at android.app.ActivityThread.installContentProviders(
at android.app.ActivityThread.handleBindApplication(
at android.app.ActivityThread.access00(ActivityThread.
at android.app.ActivityThread$H.handleMessage(ActivityThread.
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5041)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run
at com.android.internal.os.ZygoteInit.main(ZygoteInit.
at dalvik.system.NativeStart.main(Native Method)
有什么想法吗?
这是我的 build.gradle
buildscript {
repositories {
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'io.fabric.tools:gradle:1.+'
}
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
repositories {
mavenCentral()
maven {
url "http://dl.bintray.com/glomadrian/maven"
}
maven { url 'https://maven.fabric.io/public' }
}
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
applicationId "py.com.roshka.billeterabancard"
minSdkVersion 14
targetSdkVersion 23
versionCode 1
versionName "1.0"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.wang.avi:library:1.0.1'
compile 'com.nineoldandroids:library:2.4.0'
compile 'com.github.glomadrian:loadingballs:1.1@aar'
compile 'com.android.support:appcompat-v7:23.1.0'
compile 'com.google.android.gms:play-services:8.4.0'
compile 'com.android.support:design:23.1.0'
compile 'com.android.support:recyclerview-v7:23.1.0'
compile 'com.squareup.okio:okio:1.0.+'
compile 'com.squareup.okhttp:okhttp:1.5.4'
compile 'com.squareup.okhttp:okhttp-urlconnection:2.0.0'
compile 'com.squareup.retrofit:retrofit:1.8.0'
compile 'com.pnikosis:materialish-progress:1.7'
compile 'com.google.code.gson:gson:2.3'
compile 'me.dm7.barcodescanner:zxing:1.8.3'
compile 'me.dm7.barcodescanner:zbar:1.8.3'
compile('com.crashlytics.sdk.android:crashlytics:2.5.5@aar') {
transitive = true;
}
}
经过一些研究和几个小时的测试,我终于意识到 android 有一个叫做 DEX 64K 方法限制的东西。简而言之,将外部库添加到项目时可以达到一个限制。当您达到该限制时,您可能需要使用 multidex。我个人决定减少导入的库数量,因为其中一些库并没有真正使用或必需。 要进一步了解 multidex,您应该阅读这篇文章,
3 个简单步骤:
步骤#1: Multidexing 是一项新功能,因此需要支持库才能与棒棒糖之前的设备兼容。您需要将以下内容添加到 gradle 文件依赖项中:
compile 'com.android.support:multidex:1.0.0'
步骤#2: 同时在你的 gradle 文件中启用 multidex 输出:
android {
compileSdkVersion 21
buildToolsVersion "21.1.0"
defaultConfig {
...
minSdkVersion 14
targetSdkVersion 21
...
// Enabling multidex support.
multiDexEnabled true
}
}
步骤#3: 然后将 multidex 支持应用程序添加到您的清单中:
<?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="android.support.multidex.MultiDexApplication">
...
</application>
注意:如果您的应用程序已经使用(扩展)应用程序class,您可以覆盖 attachBaseContext() 方法并调用 MultiDex.install(this ) 启用 multidex。有关详细信息,请参阅 MultiDexApplication 参考文档。
@Override
protected void attachBaseContext(Context context) {
super.attachBaseContext(context);
MultiDex.install(this);
}
这里有相同的说明供参考:https://developer.android.com/tools/building/multidex.html