Android Studio 如何使用 Proguard 進行代碼混淆
參考這個:
http://developer.android.com/intl/zh-tw/tools/help/proguard.html
其中最主要的是修改app目錄下build.gradle這個檔:
1.以下的 minifyEnabled 一定要設為true
2.還有把proguard的規則寫在app目錄下proguard-rules.pro這個檔.這是因為以下的設定:
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
3.如果Android Studio處理proguard的過程中出現 out of memory 的問題, 加以下內容:
dexOptions {
javaMaxHeapSize "4g"
}
4.出現 'META-INF/LICENSE.txt'或其他檔案重覆加入的問題, 加以下內容:
packagingOptions {
exclude 'META-INF/DEPENDENCIES.txt'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/notice.txt'
exclude 'META-INF/license.txt'
exclude 'META-INF/dependencies.txt'
exclude 'META-INF/LGPL2.1' }
build.gradle完整檔案內容如下:
apply plugin: 'com.android.application'
android {
dexOptions {
javaMaxHeapSize "4g" }
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt' }
}
packagingOptions {
exclude 'META-INF/DEPENDENCIES.txt'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/notice.txt'
exclude 'META-INF/license.txt'
exclude 'META-INF/dependencies.txt'
exclude 'META-INF/LGPL2.1' }
}
}
轉換到android studio, 使用proguard時, 我把 minifyEnabled 忘記改true了, 所以每次檢查代碼都未混淆. 特別寫下本文, 提醒自己.
proguard是否有作用, 請參考以下文章