Android DexGuard:从混淆中排除Crashlytics
当我关闭DexGuard时,我的应用程序可以与Crashlytics完美运行。但是,当我添加以下配置以混淆代码时,应用程序在启动时会出现黑屏 下面是build.gradle的相关部分Android DexGuard:从混淆中排除Crashlytics,android,obfuscation,crashlytics,dexguard,Android,Obfuscation,Crashlytics,Dexguard,当我关闭DexGuard时,我的应用程序可以与Crashlytics完美运行。但是,当我添加以下配置以混淆代码时,应用程序在启动时会出现黑屏 下面是build.gradle的相关部分 apply plugin: 'com.android.application' apply plugin: 'io.fabric' apply plugin: 'dexguard' repositories { maven { url 'https://maven.fabric.io/public' } }
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
apply plugin: 'dexguard'
repositories {
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile project(':MyProject')
compile('commons-validator:commons-validator:1.4.0') {
exclude group: 'commons-logging', module: 'commons-logging'
}
compile project(':android-maps-extensions')
compile('com.crashlytics.sdk.android:crashlytics:2.5.1@aar') {
transitive = true;
}
}
android {
publishNonDefault true
compileSdkVersion 23
buildToolsVersion "23"
compileOptions {
encoding "windows-1254"
}
defaultConfig {
applicationId "com.x.y"
minSdkVersion 16
targetSdkVersion 22
multiDexEnabled true
}
lintOptions {
abortOnError false
checkReleaseBuilds false
}
dexOptions{
incremental true
javaMaxHeapSize "4g"
jumboMode true
}
android.enforceUniquePackageName = false
buildTypes {
debug {
minifyEnabled false
}
release {
minifyEnabled true
proguardFiles getDefaultDexGuardFile('dexguard-release.pro'),'dexguard-project.txt'
}
}
}
基本build.gradle文件:
buildscript {
repositories {
flatDir dirs: System.getenv('DEXGUARD_LIB')
jcenter()
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath ':dexguard'
classpath 'com.android.tools.build:gradle:1.2.3'
classpath 'io.fabric.tools:gradle:1.+'
}
}
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-multidex
-keep class com.crashlytics.** { *; }
-dontwarn com.crashlytics.**
dexguard project.txt文件的相关部分:
buildscript {
repositories {
flatDir dirs: System.getenv('DEXGUARD_LIB')
jcenter()
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath ':dexguard'
classpath 'com.android.tools.build:gradle:1.2.3'
classpath 'io.fabric.tools:gradle:1.+'
}
}
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-multidex
-keep class com.crashlytics.** { *; }
-dontwarn com.crashlytics.**
Logcat控制台输出:
Could not find method com.crashlytics.android.Crashlytics.getInstance, referenced from method com.x.y.application.MyApplication.ʻ
Could not find method com.crashlytics.android.Crashlytics.getInstance, referenced from method com.x.y.application.MyApplication.ˏ
Could not find method com.crashlytics.android.Crashlytics.getInstance, referenced from method com.x.y.application.MyApplication.ᐝ
Starting window AppWindowToken{4518e2c0 token=Token{43255cd8 ActivityRecord{42d2a290 u0 com.x.y.tst/com.x.y.activity.start.FirstActivity t369}}} timed out
我对Crashlytics.getInstance的实际操作:
Crashlytics.getInstance().core.setString("ENVIRONMENT", "TEST");
我在生成日志中没有看到任何警告或错误。
有人知道问题的原因吗
提前谢谢 您是否尝试在
dexguard
之后应用io.fabric
我有一个使用dexguard和crashlytics以及crashlytics.getInstance().core.setString(“环境”,BuildConfig.BUILD_类型)的应用程序代码>不会导致错误。我使用与您相同的-keep
和-dontwarn
配置
从我的build.gradle
文件
应用插件:“com.android.application”
应用插件:“dexguard”
应用插件:“io.fabric”
谢谢!这为我解决了问题。我尝试过这个,但没有成功。现在,我删除了Google PlayServices中不必要的组件,引用的数量减少到65k以下。无论如何,谢谢你的回复。