我已经在索尼和Nexus设备以及多个仿真器(API 10 - 19)上测试我的应用程序已有好几周了,但事情看起来很好,但是,我的两个测试人员(远程直播)在启动时遇到崩溃并且ACRA没有提供发送崩溃日志电子邮件的选项,这让我相信它在ACRA实例化之前就已经崩溃了。 ACRA在我的设备和模拟器上按预期工作,并提供发送电子邮件(通过默认应用程序)。
三星手机是否进行了一些特殊的初始化?我是否在以下代码中执行任何可能导致崩溃的事情?
@ReportsCrashes(
formKey = "", // This is required for backward compatibility but not used
mailTo = "crash@mydomain.com",
customReportContent = {
ReportField.APP_VERSION_CODE,
ReportField.APP_VERSION_NAME,
ReportField.ANDROID_VERSION,
ReportField.PHONE_MODEL,
ReportField.CUSTOM_DATA,
ReportField.STACK_TRACE,
ReportField.LOGCAT }
)
public class AppState extends Application {
private static final String DIRECTORY_ROOT = Environment.getExternalStorageDirectory();
private static final String DIRECTORY_PICTURES_APP = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath() + File.separator + "MyApp";
private static final LogConfigurator logConfigurator = new LogConfigurator();
private static final Logger logger = Logger.getLogger(AppState.class);
@Override
public void onCreate() {
super.onCreate();
ACRA.init(this);
// try to create log file and directory; if successful, configure ACRA to include last lines with crash report
if (createLogFile()) {
ACRAConfiguration config = ACRA.getConfig();
config.setApplicationLogFile(LOGGER_FILENAME);
ACRA.setConfig(config);
}
...log4j, database init, etc...
项目的来源是located here on SourceForge。
编辑#1:
最后得到三星远程测试实验室设备之一!屏幕仍然不可见,但我至少可以看到logcat。以下是崩溃的原因:
ERROR AndroidRuntime at org.dumpsterdiver.sync.AppState.onCreate(Unknown Source)
这意味着系统无法找到我的Application类?经过一些谷歌搜索类似的问题,我认为这可能是一个程序错误(叹息,再次),所以我一直在玩其他答案的各种建议。到目前为止,这些都没有帮助(仍在试验各种价值观):
-keep public class org.dumpsterdiver.sync.AppState
-keep public class * extends android.app.Application
-keep public class * extends com.actionbarsherlock.app.SherlockActivity
编辑#2:
将此行添加到我的proguard配置文件似乎可以解决问题:
-keep class * { *; }
但我的APK大500 KB(3.7 - > 4.2 MB),我怀疑这可能会在第一时间使用proguard失败一半?有更好的解决方案吗?
答案 0 :(得分:0)
经过大量的实验,这就是问题所在:
-keep public class org.dumpsterdiver.sync.AppState
改变它似乎已经成功了:
-keep public class * extends android.app.Application