如何在我的 Android 库中包含混淆器配置 (AAR)
How to include a proguard configuration in my Android library (AAR)
Android 个库,根据 AAR file spec,包括一个 'proguard.txt' 文件。
我的理解是该文件声明了如何正确混淆和缩小库。就我而言,我需要保留一些 API-类.
如何在图书馆的 build.gradle 中声明图书馆的 proguard.txt 文件?并且在创建使用我的库的应用程序 (APK) 时会自动读取此文件吗?
我在 Android 的 Gradle 插件用户指南中没有找到此信息。
在您的 Gradle 文件的默认配置闭包中,使用 consumerProguardFiles
而不是 proguardFiles
指定您的 Proguard 文件。例如:
defaultConfig {
consumerProguardFiles 'proguard.txt'
}
ProGuard 人工制品
[ProGuard workflow]
人工制品未缩小,消费者自行解决
库是开源的,但作为库开发人员,您可以提供 ProGuard 文件,消费者(应用程序)将根据需求(minifyEnabled true
消费者)考虑该文件。 consumerProguardFiles
在你的图书馆 build.gradle
。它在 artefact
中添加 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
示例的构建过程 - 所有 .class
文件将合并到扩展名为 .dex
的单个存档中
Android 个库,根据 AAR file spec,包括一个 'proguard.txt' 文件。 我的理解是该文件声明了如何正确混淆和缩小库。就我而言,我需要保留一些 API-类.
如何在图书馆的 build.gradle 中声明图书馆的 proguard.txt 文件?并且在创建使用我的库的应用程序 (APK) 时会自动读取此文件吗?
我在 Android 的 Gradle 插件用户指南中没有找到此信息。
在您的 Gradle 文件的默认配置闭包中,使用 consumerProguardFiles
而不是 proguardFiles
指定您的 Proguard 文件。例如:
defaultConfig {
consumerProguardFiles 'proguard.txt'
}
ProGuard 人工制品
[ProGuard workflow]
人工制品未缩小,消费者自行解决
库是开源的,但作为库开发人员,您可以提供 ProGuard 文件,消费者(应用程序)将根据需求(minifyEnabled true
消费者)考虑该文件。 consumerProguardFiles
在你的图书馆 build.gradle
。它在 artefact
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
示例的构建过程 - 所有 .class
文件将合并到扩展名为 .dex
的单个存档中