[英]How to include a proguard configuration in my Android library (AAR)
根據AAR 文件規范,Android 庫包含一個“proguard.txt”文件。 我的理解是這個文件聲明了如何正確地混淆和縮小庫。 就我而言,我需要保留一些 API 類。
如何在庫的 build.gradle 中聲明庫的 proguard.txt 文件? 創建使用我的庫的應用程序 (APK) 時會自動讀取此文件嗎?
我在 Android 的 Gradle 插件用戶指南中沒有找到此信息。
在 Gradle 文件的默認配置閉包中,使用consumerProguardFiles
而不是proguardFiles
指定 Proguard 文件。 例如:
defaultConfig {
consumerProguardFiles 'proguard.txt'
}
ProGuard 人工制品
人工制品沒有縮小,消費者解決它
庫是開源的,但作為庫開發人員,您可以提供一個 ProGuard 文件,消費者(應用)會根據需求(消費者中的minifyEnabled true
)考慮該文件。 consumerProguardFiles
在你的資料庫build.gradle
。 它在人工制品中添加proguard.txt
文件(與.pro
相同)
例如,您的庫是開源的,而應用程序開發人員想要縮小所有
android {
defaultConfig {
//consumerProguardFiles '<file_path>'
consumerProguardFiles 'proguard-rules.pro'
}
buildTypes {
release {
minifyEnabled false
}
}
//...
}
人工制品被縮小
庫是閉源的 - 您可以使用下一種可能性:
android {
buildTypes {
release {
minifyEnabled true
//proguardFiles project(':<project_name>').file('<file_path>')
proguardFiles 'proguard-rules.pro'
}
}
//...
}
*請注意:
minifyEnabled true
和proguardFiles project
都應該設置。minifyEnabled true
或<file_path>
是錯誤的 - classes.jar
為空。proguardFiles project
- 沒有效果至於以library - application
為例的構建過程library - application
- 所有.class
文件將合並為具有.dex
擴展名的單個存檔
作為@Eric Lafortune中提到的回答 -通常不應啟用ProGuard的[關於]在庫項目。 在這種情況下,您應該提供供consumerProguardFiles
使用的consumerProguardFiles。
android {
defaultConfig {
consumerProguardFiles 'proguard-rules.pro'
}
buildTypes {
release {
minifyEnabled false
}
}
//...
}
但是,如果由於例如要分發庫而應該啟用它,則可以啟用這種可能性:
android {
buildTypes {
release {
minifyEnabled true
proguardFiles 'proguard-rules.pro'
}
}
//...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.