Proguard - 也使用来自模块的混淆文件
Proguard - also use proguard files from modules
我的项目 build.gradle 如下所示:
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "..."
minSdkVersion 15
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile project(':androKnife')
}
我的 androKnife
模块有它自己的 proguard 文件。如何让我的主项目也使用这个文件?
如果我编译一个项目,有什么方法可以自动合并所有模块的所有proguard 文件吗?是否有另一种方法可以让模块指定它的混淆规则并且项目可以继承它?
解决方案是向库 build.gradle
添加以下行:consumerProguardFiles 'proguard-rules.pro'
所以我的 androKnife 库如下所示:
apply plugin: 'com.android.library'
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
minSdkVersion 15
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
consumerProguardFiles 'proguard-rules.pro'
}
}
}
dependencies {
...
}
因此,主模块 proguard
代码如下:
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'main_proguard-rules.pro'
}
}
谁知道proguardFiles
的内在关系原理?当具有相同的 proguard 代码时自动合并或覆盖?
我的项目 build.gradle 如下所示:
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "..."
minSdkVersion 15
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile project(':androKnife')
}
我的 androKnife
模块有它自己的 proguard 文件。如何让我的主项目也使用这个文件?
如果我编译一个项目,有什么方法可以自动合并所有模块的所有proguard 文件吗?是否有另一种方法可以让模块指定它的混淆规则并且项目可以继承它?
解决方案是向库 build.gradle
添加以下行:consumerProguardFiles 'proguard-rules.pro'
所以我的 androKnife 库如下所示:
apply plugin: 'com.android.library'
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
minSdkVersion 15
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
consumerProguardFiles 'proguard-rules.pro'
}
}
}
dependencies {
...
}
因此,主模块 proguard
代码如下:
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'main_proguard-rules.pro'
}
}
谁知道proguardFiles
的内在关系原理?当具有相同的 proguard 代码时自动合并或覆盖?