在您花费更多时间之前阅读这方面是必要的:我将自己回答这个问题。我花了一个全天调试这个,以为我应该分享。

我是一个应用程序的开发人员,即基本上是在高尔夫球场上的逐字导航。因此,我有需要旋转的图像,以使北面的图像。这显然需要一些矩阵变换。

在Android 4.3被推到HTC之后,我有一些投诉,只要有人想要使用它就会简单地结束。 “不幸的是已经停止了。”

我的初始调试会话未清除任何内容。没有一个例外被抛出,所以最初没有任何事情。我在我的日志中发现了以下内容:

11-12 14:12:56.257:assert / libc(5206):0x00000000(代码= 1),线程5206(ndroid.appname)

致命信号11(sigsegv)。

与真正开始调试,我很长一段长期的老学校踩到一切,识别可能的嫌疑人和大量的咖啡因,但最后我借助书写的同事们原来是罪魁祸首的代码。

有帮助吗?

解决方案

事实证明,这条线是造成所有问题: canvas.setmatrix(null);

该行的目的很简单:将变换矩阵重置回标识矩阵,以便应用新的转换。根据文档,这是允许的:

完全用指定的矩阵替换当前矩阵。如果矩阵参数为null,则将当前矩阵重置为标识。

显然,在Android上工作的人员从4.3代码中删除了此检查的NULL参数,但没有认为有必要更新文档抛出体面的异常。相反,这条线只崩溃了一切,因为它发生了很多线索以及它发生的地方以及为什么。

我已经提交了一个错误报告如果有人感兴趣。我希望它或这个线程在同样的情况下帮助某人。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top