gpt4 book ai didi

安卓 DexGuard : Exclude Crashlytics from Obfuscation

转载 作者:行者123 更新时间:2023-11-30 01:54:52 24 4
gpt4 key购买 nike

当我关闭 DexGuard 时,我的应用程序可以与 Crashlytics 完美运行。但是,当我添加以下配置来混淆我的代码时,应用程序在启动时卡住并出现黑屏。

这里是build.gradle

的相关部分
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.+'
}
}

dexguard-project.txt文件的相关部分:

-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("ENVIRONMENT", BuildConfig.BUILD_TYPE); 不会导致错误。我使用与您相同的 -keep-dontwarn 配置。

来 self 的 build.gradle 文件


应用插件:'com.android.application'
应用插件:'dexguard'
应用插件:'io.fabric'

关于安卓 DexGuard : Exclude Crashlytics from Obfuscation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32401616/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com