天天看點

android4.4系統解決“ERRORcouldn't find native method”方法

android4.4系統解決“ERRORcouldn't find native method”方法

          今天筆者在移植一個tv子產品從android4.2到android4.4系統的裝置上,同樣的代碼,同樣的方法,就是運作不起來。大概方法就是上層寫一個apk,調用一個靜态的java庫,java庫加載調用JNI的庫檔案,這一套代碼在4.2上都是好好的,正常能跑,移到4.4上編譯也都沒有問題,運作會出下面的問題:

/*****************************************************************************************************/

聲明:本博内容均由http://blog.csdn.net/edsam49原創,轉載請注明出處,謝謝!

    錯誤資訊如下:

     很悲劇,老老實實查了幾遍,包引用,native名稱,jin名稱映射,編譯這些看起來都沒有問題,為什麼呢?筆者也Google了一遍,還好有一些同道中人啊!都是proguard惹的禍!因為它可能會優化掉這些jni native類,在編譯靜态java庫的時候,如果不特别指定proguard的話,會出問題,下面看看build系統的 java_library.mk檔案:

     LOCAL_PROGUARD_ENABLED預設是打開的,不特别指定的話,就是起作用的,就可能做優化。這個功能讓我想起來了,很早以前做很底層寄存器操作的時候,要加上volitate 來防止編譯器做優化一樣。 

       隻需要再Makefile中加入一行即可解決。如下:

LOCAL_PROGUARD_ENABLED:= disabled

       編譯還是照舊,運作還是照舊,可是就是出來了,真的不錯,沒搞清楚之前,很累人啊,加油!

繼續閱讀