有关当应用程序使用其他lib

时间:2018-09-21 17:35:31

标签: android-proguard

对于应用程序(或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_1lib_module_2m2_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{*;} 

0 个答案:

没有答案