Android.mk文件解讀

1. LOCAL_PRIVILEGED_MODULE= true;

功能:應用編譯後系統路徑:/system/pri-app/SystemUI

說明:
不添加此屬性,編譯後的路徑爲/system/app/SystemUI
在同樣具有系統權限情況下,/system/pri-app下的apk權限比/system/app下大
2. LOCAL_PROGUARD_FLAG_FILES := proguard.flags
功能:指定不需要混淆的native方法和變量的proguard.flags文件


在我們編譯Android系統的user版本的時候,有時候會出現proguard的錯誤,在解決這個錯誤之着,我們需要了解一些知識:

1,proguard是用來幹什麼的?

      簡單點說,他就是用來做JAVA代碼混淆的一個工具。

2,這個東西在哪裏實現的?

  我們一般會在Android.mk文件中對其進行支持,比如:

        1)指定不需要混淆的native方法和變量的proguard.flags文件 LOCAL_PROGUARD_FLAG_FILES := proguard.flags

        2)對使用與不使用進行設定:

             (1),制定編譯的工程,不需要使用代碼混淆的工具進行代碼混淆:LOCAL_PROGUARD_ENABLE := disable

             (2),如果不設置,我們默認使用LOCAL_PROGUARD_ENABLE := full 意思就是將該工程代碼全部混淆

3,怎麼解決?

     比如,我們在 Android 的項目中使用了JNI,當使用了proguard後,會發現native方法有很多變量找不到,仔細分析後你會發現,原因是被progurad優化掉了,

所以,我們建議在JNI應用中應該慎用progurad。既然發現了,可我們想用progurad啊,怎麼辦呢?

1)在Android.mk中加入如下代碼:

    LOCAL_PROGUARD_FLAG_FILES := proguard.flags

2) 在proguard.flags文件中加入不需要proguard優化的類和方法,比如Browser中:

   -keep class com.android.browser.preferences.*

這麼處理後,基本上問題就解決了!



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章