I have also encountered this issue tonight. char is treat as signed on x86, but changed to unsigned when run on Android device. This make my JNI libs don't work properly.
After setting LOCAL_CFLAGS := -fsigned-char in Android.mk, my program works! Currently I found no side effect. Thanks.