最近遇到了一個bad arguments passed to
的崩潰,這個是art那邊的打印reflection.cc#434,在參數解析的時候出現了問題,是參數不對導致的。結合上一個log就能快速知道具體是那個參數的類型不對。
- 參數無法解析
LOG(ERROR) << "Internal error: unresolvable type for argument type in JNI invoke: " << m->GetTypeDescriptorFromTypeIdx(type_idx) << "\n" << self->GetException()->Dump();
- 引用類型(類型不對)
LOG(ERROR) << "JNI ERROR (app bug): attempt to pass an instance of " << argument->PrettyTypeOf() << " as argument " << (i + 1) << " to " << m->PrettyMethod();
- 布爾類型(只接受JNI_TRUE JNI_FALSE)
LOG(ERROR) << "JNI ERROR (app bug): expected jboolean (0/1) but got value of " << arg << " as argument " << (i + 1) << " to " << m->PrettyMethod();
- Bye類型(越界)
LOG(ERROR) << "JNI ERROR (app bug): expected jbyte but got value of " << arg << " as argument " << (i + 1) << " to " << m->PrettyMethod();
- Char類型(越界)
LOG(ERROR) << "JNI ERROR (app bug): expected jchar but got value of " << arg << " as argument " << (i + 1) << " to " << m->PrettyMethod();
- Short類型(越界)
LOG(ERROR) << "JNI ERROR (app bug): expected jshort but got value of " << arg << " as argument " << (i + 1) << " to " << m->PrettyMethod();