【发布时间】:2015-12-23 12:35:46
【问题描述】:
我的应用由于 multidex 而崩溃。以下是崩溃日志信息:
12-23 16:43:12.437 6823-6823/com.rogers.tsc I/MultiDex:2.1.0 版本的 VM 支持 multidex 12-23 16:43:12.438 6823-6823/com.rogers.tsc I/MultiDex: 安装 12-23 16:43:12.438 6823-6823/com.rogers.tsc I/MultiDex:VM 支持 multidex,MultiDex 支持库被禁用。 12-23 16:43:12.462 6823-6823/com.rogers.tsc D/AndroidRuntime: 关闭虚拟机 12-23 16:43:12.463 6823-6823/com.rogers.tsc E/AndroidRuntime: 致命异常: main 进程:com.rogers.tsc,PID:6823 java.lang.RuntimeException:无法获取提供程序 com.google.android.gms.measurement.AppMeasurementContentProvider:java.lang.NullPointerException:空引用 在 android.app.ActivityThread.installProvider(ActivityThread.java:5156) 在 android.app.ActivityThread.installContentProviders(ActivityThread.java:4748) 在 android.app.ActivityThread.handleBindApplication(ActivityThread.java:4688) 在 android.app.ActivityThread.-wrap1(ActivityThread.java) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5417) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 引起:java.lang.NullPointerException:空引用 在 com.google.android.gms.common.internal.zzx.zzz(未知来源) 在 com.google.android.gms.measurement.internal.zzw.zzaT(未知来源) 在 com.google.android.gms.measurement.AppMeasurementContentProvider.onCreate(未知来源) 在 android.content.ContentProvider.attachInfo(ContentProvider.java:1748) 在 android.content.ContentProvider.attachInfo(ContentProvider.java:1723) 在 android.app.ActivityThread.installProvider(ActivityThread.java:5153) 在 android.app.ActivityThread.installContentProviders(ActivityThread.java:4748) 在 android.app.ActivityThread.handleBindApplication(ActivityThread.java:4688) 在 android.app.ActivityThread.-wrap1(ActivityThread.java) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5417) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
导致问题的 multidex 似乎存在一些问题。我已经在我的应用程序中添加了 multidex 支持。我还在我的应用程序 gradle 中添加了 compile 'com.android.support:multidex:1.0.0'。
这是我的应用程序类
public class MyApplication extends Application {
private static TscApplication mApplication;
public static TscApplication getApplication()
{
return mApplication;
}
public Context getApplicationContext(){
return mApplication;
}
@Override
public void onCreate() {
super.onCreate();
mApplication = this;
}
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
每当我在 AndroidManifest 中添加应用程序类引用时,只会发生崩溃,否则如果我删除它就不会发生。
下面是我的app.graddle
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.app.ysc"
minSdkVersion 15
versionCode 1
versionName "1.0"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'
compile 'com.android.support:cardview-v7:23.1.1'
compile 'com.android.support:recyclerview-v7:23.1.1'
compile 'com.mcxiaoke.volley:library:1.0.19'
compile 'com.google.android.gms:play-services-gcm:8.4.0'
compile 'com.android.support:multidex:1.0.0'
}
apply plugin: 'com.google.gms.google-services'
【问题讨论】:
-
随便
public class MyApplication extends MultiDexApplication { -
你不需要用 Application 类扩展任何类。只需在应用程序 gradle 中启用 multidex。 multiDexEnabled = true
标签: android proguard android-proguard android-multidex