[Android-development] JNI problem with nested classes

Stromme Christian Christian.Stromme at digia.com
Mon Dec 2 14:17:35 CET 2013


On 02 Dec 2013, at 08:19 , Denis Kormalev <kormalev.denis at gmail.com> wrote:

> Hi all,
> 
> I'm looking now at camera at android and found crash there when I try to set 
> custom focus area. Small research showed me that it crashes with message
> dvmFindClassByName rejecting 'android/hardware/Camera$Area'
> 

That seems strange, this indicates that the class name is wrong or that the class name is
not converted to the correct format. It might be related to your android version, in which case we need
to add some changes to the classLoader code. I have created a bug report[1] could you add
information about your android version and device there? (Alternatively just replay here and
I’ll update the bug report :)


> It occures in static function areaToRect() in jcamera.cpp. What is more 
> interesting - there is another JNI call, but to normal class, not nested one 
> (android.graphics.Rect) which is before call to android.hardware.Camera.Area.
> 

The signature of the rect field is wrong, so that might be the core issue of the crash.

> I've tried to do next stuff:
> 1. Add class resolving to initJNI() method and use jclass instead of string
> 2. Get jclass instance just before this call in areaToRect() function and pass 
> it instead of string
> 
> Both solutions worked, but I'm sure they are not correct ones (they looks more 
> like workaround than like robust solutions). 
> 
> As I understand - problem is in getCachedClass() function in qjni.cpp which 
> uses classLoader instead of FindClass() jni function (I believe it was done 
> for special purpose but looks like it can be a cause for this problem).
> 
> Any ideas or comments? Or I just do something wrong?
> 

I don’t think your doing anything wrong, but I suspect that there is an issue with the the class name resolution, this should not
be fatal as there are fallback paths, but I need to look into it.

> --
> Regards,
> Denis Kormalev
> 
> _______________________________________________
> Android-development mailing list
> Android-development at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/android-development


[1] https://bugreports.qt-project.org/browse/QTBUG-35298

—
Christian


More information about the Android-development mailing list