java - Android ACRA 和 ProGuard

标签 java android eclipse android-studio proguard

在 ACRA 网站上有一个关于在 Eclipse 中使用 ACRA 和 ProGuard 的指南:https://github.com/ACRA/acra/wiki/ProGuard

就我而言,我使用 Android Studio,我不是 java 专家,但是我需要将 ACRA 支持添加到我的应用程序中。我刚刚编辑了我的项目,但我不明白如何在 Android Studio 中设置 ProGuard 来与 ACRA 一起使用,因此在我的发布应用程序中 ACRA 不起作用。

您能解释一下如何将 Eclipse 步骤“转换”为 Android Studio 步骤吗?

最佳答案

您是否有现有的 Eclipse 项目并希望将其导入到 Android Studio 中?

如果没有,解决方案如下:

您的 build.gradle(位于“app”文件夹中)文件应如下所示:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 20
    buildToolsVersion '20.0.0'

    defaultConfig {
        applicationId "com.yourapp"
        minSdkVersion 14
        targetSdkVersion 20
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard true//make this true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile project(':library')
    compile 'ch.acra:acra:4.5.0'//add this line here
}

和你的 proguard-rules.pro:

# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in C:\Android\AndroidSDKBundle2014-03-21x64\sdk/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
#
# For more details, see
#   http://developer.android.com/guide/developing/tools/proguard.html

# Add any project specific keep options here:

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
#class:
-keepclassmembers class fqcn.of.javascript.interface.for.webview {
   public *;
}


#ACRA specifics
# Restore some Source file names and restore approximate line numbers in the stack traces,
# otherwise the stack traces are pretty useless
-keepattributes SourceFile,LineNumberTable

# ACRA needs "annotations" so add this...
# Note: This may already be defined in the default "proguard-android-optimize.txt"
# file in the SDK. If it is, then you don't need to duplicate it. See your
# "project.properties" file to get the path to the default "proguard-android-optimize.txt".
-keepattributes *Annotation*

# keep this class so that logging will show 'ACRA' and not a obfuscated name like 'a'.
# Note: if you are removing log messages elsewhere in this file then this isn't necessary
-keep class org.acra.ACRA {
    *;
}

# keep this around for some enums that ACRA needs
-keep class org.acra.ReportingInteractionMode {
    *;
}

-keepnames class org.acra.sender.HttpSender$** {
    *;
}

-keepnames class org.acra.ReportField {
    *;
}

# keep this otherwise it is removed by ProGuard
-keep public class org.acra.ErrorReporter {
    public void addCustomData(java.lang.String,java.lang.String);
    public void putCustomData(java.lang.String,java.lang.String);
    public void removeCustomData(java.lang.String);
}

# keep this otherwise it is removed by ProGuard
-keep public class org.acra.ErrorReporter {
    public void handleSilentException(java.lang.Throwable);
}

其余的就像 eclipse 一样。

关于java - Android ACRA 和 ProGuard,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25776116/

相关文章:

java - 无法在 JPanel 上绘制矩形

java - Android - 可缩放的 Android 框架布局

java - Eclipse——避免与包相关的通知

Eclipse PyDev 使用远程解释器

java - 我的形状上没有显示 J 组件?

java - 有什么办法可以在 Thymeleaf 3.0.5 中添加 ExclusionStrategy 吗?

android - Ionic2: Http 发送 {"isTrusted":true} - 与其他可观察对象冲突?

android - 如何在 xml 布局中对元素进行分组以在 Android 中对齐

java - 如何禁用 Android 中的最近 Activity 按钮?

java - 在运行通用图像加载器时添加 imageUrl?