对于应用程序(或libraray)是否依赖其他库以及proguard规则通常如何工作,我不太清楚。
假设有一个包含两个库模块的库。
lib_moudle_1
具有class m1_class_1{}
并且在lib_moudle_1
中有
dependencies {
api project(“:lib_module_2”)
}
因此,如果其他托管应用程序依赖于lib_module_1
,它也将隐式依赖于lib_module_2
。
lib_module_2
具有class m2_class_a{}
和class m2_class_b{}
,并且在lib_module_2
中具有依赖项
api ”com.github.bumptech.glide:glide:4.0.0”
在lib_module_2
的build.gradle中,它具有
defaultConfig {
consumerProguardFiles 'proguard-rules.pro'
}
proguard-rules.pro
具有规则
-keep public class * implements com.bumptech.glide.module.GlideModule
-keep com.lib_module_2.m2_calss_a{*;}
但没有m2_class_b
的规则。
如果使用滑行的类以及lib_module_1
’lib_module_2
和m2_class_a{}
,那么问题就在class m2_class_b{}
中,而保镖的混淆会如何影响它?
lib_module_1
是否需要应用与lib_module_2
完全相同的规则,还是什么都不做?
如果托管应用对lib_module_1
具有依赖关系(或直接对lib_module_2
仅具有依赖关系),
主机应用的build.gradle具有
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
proguard-android.txt
来自android标准之一,而proguard-rules.pro
是额外的规则。在这种情况下,应该复制到
-keep public class * implements com.bumptech.glide.module.GlideModule
-keep com.lib_module_2.m2_calss_a{*;}