我遇到的问题是,我正在开发的应用是在移动设备上工作(在4种不同的设备上测试过),但是当我尝试在平板电脑上测试它时会崩溃。我使用的平板电脑是Tesco Hudl 2,虽然它是一款质量好的低成本设备,但缺少adb驱动程序,因此您无法通过USB调试应用程序并获取Logcat数据。该应用程序是使用Android Studio开发的。
对于我开发的其他应用程序,我刚刚在项目中设置了ACRA,因此我仍然可以从崩溃中获取调试信息。然而,这一次,应用程序崩溃而没有来自ACRA的任何信息,因此我不太确定出了什么问题。我很确定我已经正确设置了ACRA,因为我之前在几个项目中使用过它,并且此次没有看错。可能是因为任何出错的事情发生得太早,以至于ACRA无法赶上?
我已从活动中提取了所有代码,因此代码中唯一发生的事情是ACRA在派生的Application类中初始化(请注意,崩溃在没有ACRA的情况下存在)。该应用还使用Google地图和提供商提供搜索建议。如果有任何人想要看到的任何代码只是问,但我不确定究竟要发布什么,因为其他一切都被删除了。那么,有没有人知道我可以做些什么来解决这个问题,或者我可以用什么工具来捕捉应用程序生命周期中早期发生的任何错误?
由于
以奇怪的行为进行更新......下载了Crashlytics并且它也没有发现崩溃。我复制了项目并删除了除Application,Activity和provider之外的每个.java文件。提供者函数为空(保存返回值为0 / false / null / what),应用程序类刚刚初始化了Crashlyitcs,而Activity类为空。然后这工作,我甚至能够添加很多代码,并加载谷歌地图。 现在如果我在我的主项目中做同样的事情,除了不删除.java文件之外,崩溃仍然会发生。这些文件中的类没有使用,所以我不知道它们是如何导致崩溃的。否则,所有xml,gradle,资源都是相同的(包和应用程序名称除外)。很混乱...
答案 0 :(得分:1)
考虑使用其中一个应用来查看设备上的logcat:
也可以尝试使用Crashlytics。也许它会抓住你的崩溃?
但是,在崩溃记者(ACRA或Crashlytics)有机会抓住它之前,可能会发生崩溃。
还有一点需要注意,也许有一种方法可以通过WiFi启用ADB。 通常你需要通过adb启用它,但是如果这个便宜又奇怪的平板电脑,有一个选项可以在ROM中启用吗?
答案 1 :(得分:0)
确定!所以现在是凌晨1点,我决定最后一次尝试修复,我想我做了。在我的清单中,我有像
这样的东西 <activity
android:name=".MyActivity"
...
例如,虽然这在移动设备上工作正常,但由于某种原因,Hudl需要完整的包名,即com.mypackage.MyActivity。不知道为什么会这样,但它似乎解决了这个问题。