Есть чужое приложение. Я его патчу, беру из него нативную библиотеку и через NativeActivity подгружаю в своем приложении, чтобы чужое приложение как бы запустилось "в контексте моего" и я мог кое-что изменить. Исходников нет, разве что декомпилированные нерабочие. Конечно же, вылетает, ведь в моей NativeActivity и вообще в моей сборке нету классов и методов, которые есть в оригинале и к котором обращается библиотека через JNI. И с каждой версией библиотеки, их всё больше и больше.
Моя задача - плавно, от старых версий к новым, сделать так, чтобы в итоге все необходимое было и приложение хотя бы не слетало при запуске.
Сначала в LogCat обнаруживались исключения NoSuchMethod от JNI. Туда шел полный StackTrace, с полным путем к методу, так что каждое исключение не составляло труда исправить, просто-напросто прилепив "заглушку".
Но в очередной раз вместо StackTrace вижу такое:
Exception thrown (Ljava/lang/NoSuchMethodError;) while throwing internal exception (Ljava/lang/NoSuchMethodError;)
Exception thrown (Ljava/lang/NoSuchMethodError;) while throwing internal exception (Ljava/lang/NoSuchMethodError;)
Exception thrown (Ljava/lang/NoSuchMethodError;) while throwing internal exception (Ljava/lang/NoSuchMethodError;)
JNI ERROR (app bug): attempt to use stale local reference 0x1
VM aborting
Что бы это значило (почему нет StackTrace, почему теперь пишет stale ведь в старых версиях работало)? И как все-таки перехватить подробную информацию?
Есть какой-нибудь отладчик на манер "глобального сниффера" всех исключений, что происходят в системе или конкретном приложении?