首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android DexGuard:从混淆中排除Crashlytics

Android DexGuard:从混淆中排除Crashlytics
EN

Stack Overflow用户
提问于 2015-09-04 15:26:53
回答 1查看 1.4K关注 0票数 1

当我关闭DexGuard时,我的应用程序可以在Crashlytics中完美地运行。但是,当我添加以下配置来混淆我的代码时,应用程序会在启动时使用黑色屏幕。

下面是build.gradle的相关部分

代码语言:javascript
复制
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文件:

代码语言:javascript
复制
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文件的相关部分:

代码语言:javascript
复制
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-multidex

-keep class com.crashlytics.** { *; }
-dontwarn com.crashlytics.**

Logcat控制台输出:

代码语言:javascript
复制
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做什么:

代码语言:javascript
复制
Crashlytics.getInstance().core.setString("ENVIRONMENT", "TEST");

我在构建日志中没有看到警告或错误。有人知道是什么导致了这个问题吗?

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2015-10-13 14:21:44

你试过在dexguard之后应用dexguard吗?

我有一个与右旋护卫和crashlytics一起工作的应用程序,Crashlytics.getInstance().core.setString("ENVIRONMENT", BuildConfig.BUILD_TYPE);不会导致错误。我使用的-keep-dontwarn配置与您相同。

从我的build.gradle文件

apply plugin: 'com.android.application' apply plugin: 'dexguard' apply plugin: 'io.fabric'

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32401616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档