java Fabric/Crashlytics NoClassDefFoundError 仅在某些设备上
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/32097150/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Fabric/Crashlytics NoClassDefFoundError only on certain devices
提问by codeman
I'm seeing a crash in Google Play related to Fabric/Crashlytics. This happened after I updated from normal Crashlytics to the new Fabric Crashlytics. I can only reproduce it on one of my devices (Galaxy S2). All other devices that I have (Nexus 5 and S4) do not have the crash. Here's the stack trace:
我在 Google Play 中看到与 Fabric/Crashlytics 相关的崩溃。这是在我从普通 Crashlytics 更新到新的 Fabric Crashlytics 之后发生的。我只能在我的一台设备(Galaxy S2)上重现它。我拥有的所有其他设备(Nexus 5 和 S4)都没有崩溃。这是堆栈跟踪:
08-19 09:32:26.328 7084-7084/com.tsm.countryjam D/dalvikvm﹕ WAIT_FOR_CONCURRENT_GC blocked 0ms
08-19 09:32:26.653 7084-7088/com.tsm.countryjam D/dalvikvm﹕ GC_CONCURRENT freed 251K, 12% free 9567K/10823K, paused 12ms+2ms, total 70ms
08-19 09:32:26.653 7084-7084/com.tsm.countryjam D/dalvikvm﹕ WAIT_FOR_CONCURRENT_GC blocked 42ms
08-19 09:32:26.653 7084-7100/com.tsm.countryjam D/dalvikvm﹕ WAIT_FOR_CONCURRENT_GC blocked 42ms
08-19 09:32:26.668 7084-7084/com.tsm.countryjam I/dalvikvm﹕ Failed resolving Lcom/crashlytics/android/beta/Beta; interface 9027 'Lio/fabric/sdk/android/services/common/DeviceIdentifierProvider;'
08-19 09:32:26.668 7084-7084/com.tsm.countryjam W/dalvikvm﹕ Link of class 'Lcom/crashlytics/android/beta/Beta;' failed
08-19 09:32:26.668 7084-7084/com.tsm.countryjam E/dalvikvm﹕ Could not find class 'com.crashlytics.android.beta.Beta', referenced from method com.crashlytics.android.Crashlytics.<init>
08-19 09:32:26.668 7084-7084/com.tsm.countryjam W/dalvikvm﹕ VFY: unable to resolve new-instance 1791 (Lcom/crashlytics/android/beta/Beta;) in Lcom/crashlytics/android/Crashlytics;
08-19 09:32:26.668 7084-7084/com.tsm.countryjam D/dalvikvm﹕ VFY: replacing opcode 0x22 at 0x000a
08-19 09:32:26.668 7084-7084/com.tsm.countryjam I/dalvikvm﹕ Failed resolving Lcom/crashlytics/android/beta/Beta; interface 9027 'Lio/fabric/sdk/android/services/common/DeviceIdentifierProvider;'
08-19 09:32:26.668 7084-7084/com.tsm.countryjam W/dalvikvm﹕ Link of class 'Lcom/crashlytics/android/beta/Beta;' failed
08-19 09:32:26.668 7084-7084/com.tsm.countryjam W/dalvikvm﹕ VFY: unable to find class referenced in signature (Lcom/crashlytics/android/beta/Beta;)
08-19 09:32:26.673 7084-7084/com.tsm.countryjam I/dalvikvm﹕ Failed resolving Lcom/crashlytics/android/beta/Beta; interface 9027 'Lio/fabric/sdk/android/services/common/DeviceIdentifierProvider;'
08-19 09:32:26.673 7084-7084/com.tsm.countryjam W/dalvikvm﹕ Link of class 'Lcom/crashlytics/android/beta/Beta;' failed
08-19 09:32:26.673 7084-7084/com.tsm.countryjam W/dalvikvm﹕ VFY: unable to find class referenced in signature (Lcom/crashlytics/android/core/PinningInfoProvider;)
08-19 09:32:26.673 7084-7084/com.tsm.countryjam W/dalvikvm﹕ VFY: unable to find class referenced in signature (Lcom/crashlytics/android/core/PinningInfoProvider;)
08-19 09:32:26.673 7084-7084/com.tsm.countryjam W/dalvikvm﹕ VFY: unable to find class referenced in signature (Lcom/crashlytics/android/core/PinningInfoProvider;)
08-19 09:32:26.678 7084-7084/com.tsm.countryjam W/dalvikvm﹕ VFY: unable to find class referenced in signature (Lcom/crashlytics/android/core/CrashlyticsListener;)
08-19 09:32:26.678 7084-7084/com.tsm.countryjam W/dalvikvm﹕ VFY: unable to find class referenced in signature (Lcom/crashlytics/android/core/CrashlyticsListener;)
08-19 09:32:26.678 7084-7084/com.tsm.countryjam I/dalvikvm﹕ Failed resolving Lcom/crashlytics/android/beta/Beta; interface 9027 'Lio/fabric/sdk/android/services/common/DeviceIdentifierProvider;'
08-19 09:32:26.678 7084-7084/com.tsm.countryjam W/dalvikvm﹕ Link of class 'Lcom/crashlytics/android/beta/Beta;' failed
08-19 09:32:26.678 7084-7084/com.tsm.countryjam D/dalvikvm﹕ DexOpt: unable to opt direct call 0x3474 at 0x0f in Lcom/crashlytics/android/Crashlytics;.<init>
08-19 09:32:26.678 7084-7084/com.tsm.countryjam I/dalvikvm﹕ Failed resolving Lcom/crashlytics/android/answers/SessionEventTransform; interface 9072 'Lio/fabric/sdk/android/services/events/EventTransform;'
08-19 09:32:26.678 7084-7084/com.tsm.countryjam W/dalvikvm﹕ Link of class 'Lcom/crashlytics/android/answers/SessionEventTransform;' failed
08-19 09:32:26.678 7084-7084/com.tsm.countryjam E/dalvikvm﹕ Could not find class 'com.crashlytics.android.answers.SessionEventTransform', referenced from method com.crashlytics.android.answers.Answers.initializeSessionAnalytics
08-19 09:32:26.678 7084-7084/com.tsm.countryjam W/dalvikvm﹕ VFY: unable to resolve new-instance 1784 (Lcom/crashlytics/android/answers/SessionEventTransform;) in Lcom/crashlytics/android/answers/Answers;
08-19 09:32:26.678 7084-7084/com.tsm.countryjam D/dalvikvm﹕ VFY: replacing opcode 0x22 at 0x0004
08-19 09:32:26.678 7084-7084/com.tsm.countryjam I/dalvikvm﹕ Could not find method io.fabric.sdk.android.services.common.CommonUtils.logControlledError, referenced from method com.crashlytics.android.answers.Answers.initializeSessionAnalytics
08-19 09:32:26.678 7084-7084/com.tsm.countryjam W/dalvikvm﹕ VFY: unable to resolve static method 59049: Lio/fabric/sdk/android/services/common/CommonUtils;.logControlledError (Landroid/content/Context;Ljava/lang/String;Ljava/lang/Throwable;)V
08-19 09:32:26.678 7084-7084/com.tsm.countryjam D/dalvikvm﹕ VFY: replacing opcode 0x77 at 0x0194
08-19 09:32:26.678 7084-7084/com.tsm.countryjam I/dalvikvm﹕ Could not find method io.fabric.sdk.android.services.settings.Settings.getInstance, referenced from method com.crashlytics.android.answers.Answers.doInBackground
08-19 09:32:26.678 7084-7084/com.tsm.countryjam W/dalvikvm﹕ VFY: unable to resolve static method 59331: Lio/fabric/sdk/android/services/settings/Settings;.getInstance ()Lio/fabric/sdk/android/services/settings/Settings;
08-19 09:32:26.678 7084-7084/com.tsm.countryjam D/dalvikvm﹕ VFY: replacing opcode 0x71 at 0x000c
08-19 09:32:26.678 7084-7084/com.tsm.countryjam I/dalvikvm﹕ Could not find method io.fabric.sdk.android.services.common.CommonUtils.getStringsFileValue, referenced from method com.crashlytics.android.answers.Answers.getOverridenSpiEndpoint
08-19 09:32:26.678 7084-7084/com.tsm.countryjam W/dalvikvm﹕ VFY: unable to resolve static method 59043: Lio/fabric/sdk/android/services/common/CommonUtils;.getStringsFileValue (Landroid/content/Context;Ljava/lang/String;)Ljava/lang/String;
08-19 09:32:26.678 7084-7084/com.tsm.countryjam D/dalvikvm﹕ VFY: replacing opcode 0x71 at 0x0008
08-19 09:32:26.678 7084-7084/com.tsm.countryjam E/dalvikvm﹕ Could not find class 'io.fabric.sdk.android.services.persistence.FileStoreImpl', referenced from method com.crashlytics.android.answers.Answers.getSdkDirectory
08-19 09:32:26.678 7084-7084/com.tsm.countryjam W/dalvikvm﹕ VFY: unable to resolve new-instance 9090 (Lio/fabric/sdk/android/services/persistence/FileStoreImpl;) in Lcom/crashlytics/android/answers/Answers;
08-19 09:32:26.678 7084-7084/com.tsm.countryjam D/dalvikvm﹕ VFY: replacing opcode 0x22 at 0x0001
08-19 09:32:26.678 7084-7084/com.tsm.countryjam I/dalvikvm﹕ Could not find method io.fabric.sdk.android.services.common.Crash$FatalException.getSessionId, referenced from method com.crashlytics.android.answers.Answers.onException
08-19 09:32:26.678 7084-7084/com.tsm.countryjam W/dalvikvm﹕ VFY: unable to resolve virtual method 59056: Lio/fabric/sdk/android/services/common/Crash$FatalException;.getSessionId ()Ljava/lang/String;
08-19 09:32:26.678 7084-7084/com.tsm.countryjam D/dalvikvm﹕ VFY: replacing opcode 0x6e at 0x000b
08-19 09:32:26.683 7084-7084/com.tsm.countryjam I/dalvikvm﹕ Could not find method io.fabric.sdk.android.services.common.Crash$LoggedException.getSessionId, referenced from method com.crashlytics.android.answers.Answers.onException
08-19 09:32:26.683 7084-7084/com.tsm.countryjam W/dalvikvm﹕ VFY: unable to resolve virtual method 59058: Lio/fabric/sdk/android/services/common/Crash$LoggedException;.getSessionId ()Ljava/lang/String;
08-19 09:32:26.683 7084-7084/com.tsm.countryjam D/dalvikvm﹕ VFY: replacing opcode 0x6e at 0x000b
08-19 09:32:26.683 7084-7084/com.tsm.countryjam I/dalvikvm﹕ Failed resolving Lcom/crashlytics/android/answers/SessionEventTransform; interface 9072 'Lio/fabric/sdk/android/services/events/EventTransform;'
08-19 09:32:26.683 7084-7084/com.tsm.countryjam W/dalvikvm﹕ Link of class 'Lcom/crashlytics/android/answers/SessionEventTransform;' failed
08-19 09:32:26.683 7084-7084/com.tsm.countryjam D/dalvikvm﹕ DexOpt: unable to opt direct call 0x3455 at 0x0c in Lcom/crashlytics/android/answers/Answers;.initializeSessionAnalytics
08-19 09:32:26.683 7084-7084/com.tsm.countryjam D/dalvikvm﹕ DexOpt: unable to opt direct call 0xe6da at 0x19 in Lcom/crashlytics/android/answers/Answers;.initializeSessionAnalytics
08-19 09:32:26.683 7084-7084/com.tsm.countryjam D/dalvikvm﹕ DexOpt: unable to opt direct call 0xe78c at 0x36 in Lcom/crashlytics/android/answers/Answers;.initializeSessionAnalytics
08-19 09:32:26.683 7084-7084/com.tsm.countryjam W/dalvikvm﹕ Unable to resolve superclass of Lcom/crashlytics/android/answers/SessionAnalyticsFilesManager; (9073)
08-19 09:32:26.683 7084-7084/com.tsm.countryjam W/dalvikvm﹕ Link of class 'Lcom/crashlytics/android/answers/SessionAnalyticsFilesManager;' failed
08-19 09:32:26.683 7084-7084/com.tsm.countryjam D/dalvikvm﹕ DexOpt: unable to opt direct call 0x342a at 0x4b in Lcom/crashlytics/android/answers/Answers;.initializeSessionAnalytics
08-19 09:32:26.683 7084-7084/com.tsm.countryjam I/dalvikvm﹕ DexOpt: unable to optimize static field ref 0x5e1e at 0x72 in Lcom/crashlytics/android/answers/Answers;.initializeSessionAnalytics
08-19 09:32:26.683 7084-7084/com.tsm.countryjam I/dalvikvm﹕ DexOpt: unable to optimize static field ref 0x5e1c at 0x7e in Lcom/crashlytics/android/answers/Answers;.initializeSessionAnalytics
08-19 09:32:26.683 7084-7084/com.tsm.countryjam I/dalvikvm﹕ DexOpt: unable to optimize static field ref 0x5e21 at 0x8a in Lcom/crashlytics/android/answers/Answers;.initializeSessionAnalytics
08-19 09:32:26.683 7084-7084/com.tsm.countryjam D/dalvikvm﹕ DexOpt: unable to opt direct call 0xe78f at 0x115 in Lcom/crashlytics/android/answers/Answers;.initializeSessionAnalytics
08-19 09:32:26.683 7084-7084/com.tsm.countryjam D/dalvikvm﹕ DexOpt: unable to opt direct call 0xe78f at 0x17d in Lcom/crashlytics/android/answers/Answers;.initializeSessionAnalytics
08-19 09:32:26.683 7084-7084/com.tsm.countryjam I/dalvikvm﹕ DexOpt: unable to optimize instance field ref 0x5e91 at 0x20 in Lcom/crashlytics/android/answers/Answers;.doInBackground
08-19 09:32:26.683 7084-7084/com.tsm.countryjam I/dalvikvm﹕ DexOpt: unable to optimize instance field ref 0x5e8c at 0x22 in Lcom/crashlytics/android/answers/Answers;.doInBackground
08-19 09:32:26.683 7084-7084/com.tsm.countryjam I/dalvikvm﹕ DexOpt: unable to optimize instance field ref 0x5e8e at 0x2a in Lcom/crashlytics/android/answers/Answers;.doInBackground
08-19 09:32:26.683 7084-7084/com.tsm.countryjam D/dalvikvm﹕ DexOpt: unable to opt direct call 0xe7ac at 0x07 in Lcom/crashlytics/android/answers/Answers;.getSdkDirectory
08-19 09:32:26.683 7084-7084/com.tsm.countryjam D/AndroidRuntime﹕ Shutting down VM
08-19 09:32:26.683 7084-7084/com.tsm.countryjam W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x4127b2a0)
08-19 09:32:26.683 7084-7084/com.tsm.countryjam E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.NoClassDefFoundError: com.crashlytics.android.beta.Beta
at com.crashlytics.android.Crashlytics.<init>(Crashlytics.java:29)
at com.tsm.events.application.TownsquareEvents.onCreate(TownsquareEvents.java:59)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1014)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4251)
at android.app.ActivityThread.access00(ActivityThread.java:140)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1297)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4921)
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(ZygoteInit.java:1027)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
at dalvik.system.NativeStart.main(Native Method)
And here's the contents of my build.gradle:
这是我的 build.gradle 的内容:
buildscript {
repositories {
jcenter()
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'com.android.tools.build:gradle:1.0.+'
classpath 'io.fabric.tools:gradle:1.+'
}
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
repositories {
jcenter()
flatDir {
dirs 'libs'
}
maven { url 'https://maven.fabric.io/public' }
}
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "com.tsm.events"
minSdkVersion 15
targetSdkVersion 22
versionCode 1
versionName "1.0.0"
multiDexEnabled = true
}
dexOptions {
javaMaxHeapSize "4g"
}
buildTypes {
debug {
debuggable true
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile project(':libraries:ResideMenu')
//compile 'com.android.support:support-v4:20.0.+'
compile 'com.android.support:support-v4:22.0.+'
compile files('libs/universal-image-loader-1.9.3.jar')
compile 'io.realm:realm-android:0.81.1'
compile 'se.emilsjolander:stickylistheaders:2.5.2'
compile 'com.google.android.gms:play-services:6.5.87'
compile 'com.parse.bolts:bolts-android:1.+'
compile fileTree(dir: 'libs', include: 'Parse-*.jar')
compile('com.crashlytics.sdk.android:crashlytics:2.4.0@aar') {
transitive = true
}
// Twitter Kit
compile('com.twitter.sdk.android:twitter:1.6.0@aar') {
transitive = true
}
compile('com.twitter.sdk.android:tweet-composer:0.8.0@aar') {
transitive = true;
}
compile 'com.facebook.android:facebook-android-sdk:3.20.0'
compile 'com.google.maps.android:android-maps-utils:0.3+'
compile(name: 'estimote-sdk-preview', ext: 'aar')
compile files('libs/biweekly-0.4.2.jar')
compile files('libs/Hymanson-core-2.5.2.jar')
}
回答by codeman
I just figured it out with a hunch! I recently had to add multi-dex support after upgrading to the new Fabric framework, and I had a feeling that maybe I didn't do it correctly. So after adding these additional changes, now it no longer crashes:
我只是凭直觉想出来的!最近在升级到新的 Fabric 框架后不得不添加 multi-dex 支持,我有一种感觉,可能是我做的不对。所以在添加这些额外的更改后,现在它不再崩溃:
In my build.gradle, I added an incremental settings:
在我的 build.gradle 中,我添加了一个增量设置:
dexOptions {
incremental true
javaMaxHeapSize "4g"
}
and an additional dependency:
和一个额外的依赖:
compile 'com.android.support:multidex:'
and on my application class I'm extending MultiDexApplication:
在我的应用程序类中,我正在扩展 MultiDexApplication:
public class TownsquareEvents extends android.support.multidex.MultiDexApplication
回答by user7176550
please build this: compile 'com.android.support:multidex:1.0.1'
请构建这个:编译'com.android.support:multidex:1.0.1'
and add this method in your application class :
并在您的应用程序类中添加此方法:
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
回答by Sakiboy
If you're using MultiDex
correctly and still running into this error, it may be because you are using Proguard
and MultiDex
doesn't know which classes to keep.
如果您使用MultiDex
正确但仍然遇到此错误,则可能是因为您正在使用Proguard
并且MultiDex
不知道要保留哪些类。
So be sure to "sync" your MultiDex
keep file with your Proguard
.pro
file.
因此,请务必将您的MultiDex
保留文件与您的Proguard
.pro
文件“同步” 。
Example:
示例:
buildTypes {
// other stuff...
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
ext.enableCrashlytics = true
//
// IMPORTANT PART:
//
// tell your MultiDex to keep the classes you defined in your Proguard .pro file.
multiDexKeepProguard file('proguard-rules.pro')
}
}
By doing this, you don't need to manually specify a multidex.keep
file!
通过这样做,您无需手动指定multidex.keep
文件!
More info on multiDexKeepProguard
here, and the full developer docsfrom Google.
回答by Adrien Dos Reis
Additional info two years later : It seems that the problem occurs only on devices running Android < 5 (if that helps someone to narrow their search of the crash...)
两年后的附加信息:似乎问题只发生在运行 Android < 5 的设备上(如果这有助于某人缩小对崩溃的搜索范围......)
回答by Martin Vysny
I'm trying to remedy this bug by updating Crashlytics to 2.9.1. According to https://docs.fabric.io/android/changelog.html#february-28-2018:
我正在尝试通过将 Crashlytics 更新到 2.9.1 来修复此错误。根据https://docs.fabric.io/android/changelog.html#february-28-2018:
Fixed bug causing Firebase Crashlytics to fail to start when Firebase Core is not explicitly included as a dependency.
修复了当 Firebase Core 未明确包含为依赖项时导致 Firebase Crashlytics 无法启动的错误。
My build.gradle
now reads:
我build.gradle
现在读到:
implementation('com.crashlytics.sdk.android:crashlytics:2.9.1@aar') {
transitive = true;
}
EDIT: didn't help. On Android 4.x Crashlytics crashes. What irony.
编辑:没有帮助。在 Android 4.x 上 Crashlytics 崩溃。多么讽刺。
回答by Arpit Patel
First check Fabric SDK is add or not then after If you got this error check below files.
首先检查 Fabric SDK 是否添加,然后如果出现此错误,请检查以下文件。
01-26 12:15:46.186 32094-32094/com.example.android I/SELinux﹕ Function: selinux_android_load_priority [0], There is no sepolicy file.
01-26 12:15:46.186 32094-32094/com.example.android I/SELinux﹕ SELinux: VERIFYSIG File Open Unsuccessful:
01-26 12:15:46.186 32094-32094/com.example.android I/SELinux﹕ Function: selinux_android_load_priority , spota verifySig or checkHash fails. priority version is VE=SEPF_GT-I9500_4.4.2_0018
01-26 12:15:46.186 32094-32094/com.example.android I/SELinux﹕ selinux_android_seapp_context_reload: seapp_contexts file is loaded from /seapp_contexts
01-26 12:15:46.191 32094-32094/com.example.android E/dalvikvm﹕ >>>>> Normal User
01-26 12:15:46.191 32094-32094/com.example.android E/dalvikvm﹕ >>>>> com.example.android [ userId:0 | appId:10288 ]
01-26 12:15:46.191 32094-32094/com.example.android D/dalvikvm﹕ Late-enabling CheckJNI
01-26 12:15:46.261 32094-32094/com.example.android E/dalvikvm﹕ Could not find class 'io.fabric.sdk.android.Kit[]', referenced from method com.example.android.ExampleApplication.onCreate
01-26 12:15:46.261 32094-32094/com.example.android W/dalvikvm﹕ VFY: unable to resolve new-array 10457 ([Lio/fabric/sdk/android/Kit;) in Lcom/example/android/ExampleApplication;
01-26 12:15:46.261 32094-32094/com.example.android D/dalvikvm﹕ VFY: replacing opcode 0x23 at 0x0007
01-26 12:15:46.261 32094-32094/com.example.android W/dalvikvm﹕ Unable to resolve superclass of Lcom/crashlytics/android/Crashlytics; (8949)
01-26 12:15:46.261 32094-32094/com.example.android W/dalvikvm﹕ Link of class 'Lcom/crashlytics/android/Crashlytics;' failed
01-26 12:15:46.261 32094-32094/com.example.android D/dalvikvm﹕ DexOpt: unable to opt direct call 0x3705 at 0x12 in Lcom/example/android/ExampleApplication;.onCreate
01-26 12:15:46.261 32094-32094/com.example.android I/MultiDex﹕ VM with version 1.6.0 does not have multidex support
01-26 12:15:46.261 32094-32094/com.example.android I/MultiDex﹕ install
01-26 12:15:46.261 32094-32094/com.example.android I/MultiDex﹕ MultiDexExtractor.load(/data/app/com.example.android-1.apk, false)
01-26 12:15:46.271 32094-32094/com.example.android I/MultiDex﹕ loading existing secondary dex files
01-26 12:15:46.271 32094-32094/com.example.android I/MultiDex﹕ load found 1 secondary dex files
01-26 12:15:46.276 32094-32094/com.example.android I/MultiDex﹕ install done
01-26 12:15:46.281 32094-32094/com.example.android I/PersonaManager﹕ getPersonaService() name persona_policy
01-26 12:15:46.291 32094-32094/com.example.android D/AndroidRuntime﹕ Shutting down VM
01-26 12:15:46.291 32094-32094/com.example.android W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x41887c08)
01-26 12:15:46.296 32094-32094/com.example.android E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.android, PID: 32094
java.lang.NoClassDefFoundError: io.fabric.sdk.android.Kit[]
at com.example.android.ExampleApplication.onCreate(ExampleApplication.java:16)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1025)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4581)
at android.app.ActivityThread.access00(ActivityThread.java:161)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1325)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5356)
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:1265)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
at dalvik.system.NativeStart.main(Native Method)
01-26 12:15:52.016 32094-32094/com.example.android I/Process﹕ Sending signal. PID: 32094 SIG: 9
build.gradle
构建.gradle
buildscript {
repositories {
maven { url 'https://maven.fabric.io/repo' }
}
dependencies {
classpath 'io.fabric.tools:gradle:1.14.4'
}
}
apply plugin: 'com.android.application'
//Put Fabric plugin after Android plugin
apply plugin: 'io.fabric'
repositories {
maven { url 'https://raw.github.com/beshkenadze/dozer/mvn-repo' }
maven { url 'https://maven.fabric.io/repo' }
}
...
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
...
// Crashlytics Kit
compile('com.crashlytics.sdk.android:crashlytics:2.2.0@aar') {
transitive = true
}
}
afterEvaluate {
tasks.matching {
it.name.startsWith('dex')
}.each { dx ->
if (dx.additionalParameters == null) {
dx.additionalParameters = []
}
dx.additionalParameters += '--multi-dex'
dx.additionalParameters += "--main-dex-list=$projectDir/multidex.keep".toString()
}
}
ExampleApplication.java
示例应用程序.java
package com.example.android;
import android.support.multidex.MultiDexApplication;
import com.crashlytics.android.Crashlytics;
import io.fabric.sdk.android.Fabric;
public class ExampleApplication extends MultiDexApplication {
private ExampleManager mManager;
@Override
public void onCreate() {
super.onCreate();
Fabric.with(this, new Crashlytics());
mManager = ExampleManager.getInstance();
mManager.init(getApplicationContext());
}
}
multidex.keep
多索引.保持
android/support/multidex/BuildConfig.class
android/support/multidex/MultiDex$V14.class
android/support/multidex/MultiDex$V19.class
android/support/multidex/MultiDex$V4.class
android/support/multidex/MultiDex.class
android/support/multidex/MultiDexApplication.class
android/support/multidex/MultiDexExtractor.class
android/support/multidex/MultiDexExtractor.class
android/support/multidex/ZipUtil$CentralDirectory.class
android/support/multidex/ZipUtil.class
com/example/android/ExampleApplication.class
progurad-rules.pro
progurad-rules.pro
-dontoptimize
-dontobfuscate
#-optimizationpasses 5
-printusage unused.txt
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-keepattributes SourceFile,LineNumberTable
-keepattributes *Annotation*
-keepattributes InnerClasses
#Project
-keep public class com.example.android.** { *; }
-dontwarn com.example.android.**
-dontwarn com.example.android.db.**
-keep public class com.example.android.db.** { *; }
# JavascriptInterface Proguard RULES
-keepclassmembers class * {
@android.webkit.JavascriptInterface <methods>;
}
-keepattributes JavascriptInterface
-keep public class com.example.android.ui.view.EditorView$EditorInterface
-keep public class * implements com.example.android.ui.view.EditorView$EditorInterface
-keepclassmembers class com.example.android.ui.view.EditorView$EditorInterface {
<methods>;
}
# Libs
#-libraryjars libs/AF-Android-SDK-v2.3.1.11.jar
#-libraryjars libs/aws-android-sdk-1.7.1.1-core.jar
#-libraryjars libs/aws-android-sdk-1.7.1.1-s3.jar
#-libraryjars libs/FlurryAnalytics_3.3.3.jar
#-libraryjars libs/Parse-1.4.3.jar
#-libraryjars libs/google-play-services-STRIPPED.jar
#-libraryjars ../bypass-library/libs/bypass.jar
# Models
-keep class com.example.android.api.data.** { *; }
-keep class com.example.android.model.** { *; }
# Bypass
-keep class in.uncod.android.bypass.** { *; }
# Butterknife
-dontwarn butterknife.internal.**
-keep class **$$ViewInjector { *; }
-keepnames class * { @butterknife.InjectView *;}
# Parse.com
-dontwarn com.parse.FacebookAuthenticationProvider*
-dontwarn com.parse.FacebookAuthenticationProvider
-dontwarn com.parse.ParseFacebookUtils
-dontwarn com.parse.**
-keep class com.parse.** { *; }
# AWS SDK for Android
-keep class org.apache.commons.logging.** { *; }
-keep class com.amazonaws.services.sqs.QueueUrlHandler { *; }
-keep class com.amazonaws.javax.xml.transform.sax.* { public *; }
-keep class com.amazonaws.javax.xml.stream.** { *; }
-keep class com.amazonaws.services.**.model.*Exception* { *; }
-keep class org.codehaus.** { *; }
-keep class com.amazonaws.internal.config.** { *; }
-keepattributes Signature,*Annotation*
-dontwarn javax.xml.stream.events.**
-dontwarn com.fasterxml.Hymanson.**
-dontwarn org.apache.commons.logging.impl.**
-dontwarn org.apache.http.conn.scheme.**
-dontwarn com.amazonaws.AmazonWebServiceRequest
-dontwarn com.amazonaws.ClientConfiguration
-dontwarn com.amazonaws.DefaultRequest
-dontwarn com.amazonaws.RequestClientOptions
-dontwarn com.amazonaws.auth.**
-dontwarn com.amazonaws.http.AmazonHttpClient
-dontwarn com.amazonaws.http.ExecutionContext
-dontwarn com.amazonaws.http.impl.**
-dontwarn com.amazonaws.internal.config.HttpClientConfig
-dontwarn com.amazonaws.internal.config.InternalConfig
-dontwarn com.amazonaws.internal.config.SignerConfig
-dontwarn com.amazonaws.metrics.ServiceLatencyProvider
-dontwarn com.amazonaws.org.apache.http.**
-dontwarn com.amazonaws.retry.RetryPolicy
-dontwarn com.amazonaws.util.**
-dontwarn com.amazonaws.org.joda.**
-dontwarn com.amazonaws.javax.**
-dontwarn org.apache.commons.**
# Android
-keep public class * extends android.app.Activity
-keep public class * extends android.webkit.WebView
-keep public class * extends android.app.Application
-keep public class * extends android.app.Fragment
-keep public class * extends android.app.ListActivity
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keepclasseswithmembers class * {
native <methods>;
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keepclassmembers class * {
public void onClickUpdate(android.view.View);
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
-keep class * extends java.util.ListResourceBundle {
protected Object[][] getContents();
}
# Google API
-keep class com.google.** { *;}
-keep interface com.google.** { *;}
-dontwarn com.google.**
-dontwarn sun.misc.Unsafe
-dontwarn com.google.common.collect.MinMaxPriorityQueue
-keepattributes *Annotation*,Signature
-keep class * extends com.google.api.client.json.GenericJson {
*;
}
-keep class * extends java.util.ListResourceBundle {
protected Object[][] getContents();
}
-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
public static final *** NULL;
}
-keepnames @com.google.android.gms.common.annotation.KeepName class *
-keepclassmembernames class * {
@com.google.android.gms.common.annotation.KeepName *;
}
-keepnames class * implements android.os.Parcelable {
public static final ** CREATOR;
}
# Squareup
-dontwarn com.squareup.okhttp.**
# Joda-Time
-dontwarn org.joda.time.**
# EventBus
-keepclassmembers class ** {
public void onEvent*(**);
}
# Annotation
-keepattributes *Annotation*
# Retrofit
-keep class com.google.gson.** { *; }
-keep class com.google.inject.** { *; }
-keep class org.apache.http.** { *; }
-keep class org.apache.james.mime4j.** { *; }
-keep class javax.inject.** { *; }
-keep class retrofit.** { *; }
-keep class com.example.testobfuscation.** { *; }
-keepattributes Signature
-keep class sun.misc.Unsafe { *; }
-dontwarn rx.**
# Scribe oAuth
-keep class org.scribe.** {
*;
}
-keep class javax.xml.bind.DatatypeConverter
-dontwarn javax.xml.bind.DatatypeConverter
-dontwarn org.scribe.**
#Roundview
-dontwarn com.makeramen.**
#android.support.v4
-dontwarn android.support.v4.**
-keepclasseswithmembers class io.fabric.sdk.android.** {
*;
}
-keep public class * extends io.fabric.sdk.android.Kit.**
-keep class * implements io.fabric.sdk.android.KitGroup.**