1. 程式人生 > >apk中jni 一些native方法找不到 ERROR: couldn't find native method

apk中jni 一些native方法找不到 ERROR: couldn't find native method

編譯apk時,出現一些native類找不到的情況,原因是被produard優化掉了。


1.proguard是做什麼的,ProGuard是一個免費的java類檔案壓縮,優化,混淆器.它探測並刪除沒有使用的類,欄位,方法和屬性.它刪除沒有用的說明並使用位元組碼得到最大優化.它使用無意義的名字來重新命名類,欄位和方法. 


ProGuard的使用是為了: 


 (1).建立緊湊的程式碼文件是為了更快的網路傳輸,快速裝載和更小的記憶體佔用. 
 (2).建立的程式和程式庫很難使用反向工程. 
 (3).所以它能刪除來自原始檔中的沒有呼叫的程式碼 
 (4).充分利用java6的快速載入的優點來提前檢測和返回java6中存在的類檔案.
 
2.因為proguard是混淆工具,所以android的mk檔案也對其支援為兩種方式:
 
      1.指定不需要混淆的native方法與變數的proguard.flags檔案
           如:LOCAL_PROGUARD_FLAG_FILES := $(LOCAL_PATH)/proguard.flags
 
     2.制定編譯的工程,不要使用程式碼混淆的工具進行程式碼混淆
          如:LOCAL_PROGUARD_ENABLED := disabled
     3.不設定,預設使用LOCAL_PROGUARD_ENABLED := full.即將該工程程式碼全部混淆