2015年7月28日 星期二

eclipse 轉換到 Android Studio 後 Proguard 混淆器 註解掉 util.Log 失效問題

最近開始將 eclipse 轉換到 Android Studio

對於gradle 不是太熟悉

輸出apk 後發覺

之前在eclipse 設定Proguard 

用dex2jax 反編譯apk 之後 還是可以看到 Log.d 程式碼

可以註解掉 程式中所有的 Log.d , Log.i 機制失效了

eclipse proguard 設定

1.project.properties 文件中

proguard.config=${sdk.dir}/tools/proguard/proguard-android-optimize.txt:proguard-project.txt




2.proguard-project.txt 文件

-assumenosideeffects class android.util.Log { *; }




研究一下 android studio Proguard 設定方式 如下

1.在gradle 文件中設置

build.gradle

buildTypes {

    release {

        minifyEnabled true

        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

    }

}



2.需要新增 proguard-rules.pro 文件

將設定寫入

-assumenosideeffects class android.util.Log {*;}


試過還是不成功

參考Proguard 文件
http://proguard.sourceforge.net/manual/examples.html#logging

Removing logging code 寫法是

-assumenosideeffects class android.util.Log {

    public static boolean isLoggable(java.lang.String, int);

    public static int v(...);

    public static int i(...);

    public static int w(...);

    public static int d(...);

    public static int e(...);

}



試過還是無法

最後發現 要使用 proguard-android-optimize.txt

註解 Log 機制才會生效

搞了一大圈

buildTypes {

    release {

        minifyEnabled true

        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'

    }

}


終於搞定





沒有留言:

張貼留言