Приложение вылетает Android 4.3+ в нативном коде с приложением с использованием матричных расчетов на холсте

StackOverflow https://stackoverflow.com//questions/20022243

Вопрос

Прежде чем проводить больше времени, прочитав это, чем необходимо: Я отвечу на этот вопрос сам. Я провел полный день отладки этого и думал, что должен поделиться.

Я являюсь разработчиком для приложения, который в основном является своего рода навигация по поводу поворота на полях для гольфа. Таким образом, у меня есть изображения, которые необходимо повернуть, чтобы сделать изображение North-ориентированным. Это, очевидно, требует некоторых матричных преобразований.

После того, как Android 4.3 выталкивался в HTC One, у меня есть несколько жалоб, что приложение просто закрылось, когда кто-то хотел его использовать. «К сожалению остановился».

Мой первоначальный сеанс отладки ничего не понял. Не было никакого брошенного исключения, поэтому нечего выходить изначально. Я нашел следующее в моих журналах:

11-12 14: 12: 56.257: Assert / libc (5206): фатальный сигнал 11 (SIGSEGV) на 0x00000000 (код= 1), нить 5206 (ndroid.appname)

с ниоткуда на самом деле начать отладку, я был в течение длительного пробега в старой школе, наступая через все, идентифицируя вероятные подозреваемые и много кофеина, но в конце концов я полагал его с помощью коллеги, который написал код, который оказался виновником.

Это было полезно?

Решение

Как оказывается, эта линия вызывала все вопросы: canvas.setmatrix (null);

Намерение этой линии было простым: сбросить матрицу преобразования обратно в матрицу идентификатора, чтобы можно было применять новое преобразование. Согласно Документация Это разрешено:

полностью замените текущую матрицу указанной матрицей. Если параметр Matrix является NULL, то текущая матрица сбрасывается на идентичность.

Видимо, люди, работающие на Android, удалили эту проверку для нулевого параметра из кода 4.3, но не считали необходимым либо обновлять документацию или бросить достойное исключение. Вместо этого эта линия просто разбивает все не так много, как ключевое сообщение, где это произошло и почему.

Я подал a Отчет об ошибках Если кто-то заинтересован. Я надеюсь, что это нить поможет кому-то в той же ситуации.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top