Мне не очень понятно, в случае, когда приложение (или библиотека) имеет зависимость от другой библиотеки и как вообще работают правила 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{}
как быэто будет зависеть от обфускации Proguard?
Нужно ли 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{*;}