天天看點

android 4.4 JNI can not find native method

最近從4.2移植一段代碼到4.4的時候有涉及到JNI相關的代碼,結果發現4.2上運作的好好的代碼居然在4.4上就crash了,

報出的錯誤就是 can not find native method.

反複核對來jni的函數命名,簽名,一直沒發現問題,後來又懷疑proguard搗的蛋,加來keep 還是不行,無奈之下嘗試了

把編譯出來的apk又反編譯出來,結果讓我大吃一驚,java代碼上JNI中的一些函數居然被優化掉了,這些函數是沒有被實際

用到的,隻是預留出來将來或許有用的,結果正是這些被優化掉的函數導緻了注冊native函數的時候crash了。

想到的解決方法自然是注釋掉這些函數,結果果然ok了。

十分讓我費解! 看來有時間要看看編譯系統的變化才能徹底搞明白。