在 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/