Android Proguard-排除库
出于测试目的,我的应用程序中有一些开发人员设置。我有时会包含一个视图库,并尝试最有效/最快的方法。例如,图像加载程序库,如毕加索/glide/ion 我有一个变量,上面写着要使用哪个图像加载器。用户无法更改,因此我希望执行以下操作:Android Proguard-排除库,android,proguard,Android,Proguard,出于测试目的,我的应用程序中有一些开发人员设置。我有时会包含一个视图库,并尝试最有效/最快的方法。例如,图像加载程序库,如毕加索/glide/ion 我有一个变量,上面写着要使用哪个图像加载器。用户无法更改,因此我希望执行以下操作: 我不想从我的项目中删除库(或者注释includes out和all类),也许明天我有一些新东西要测试,我不想再次包含库并为它编写额外的代码 我希望我的发布版本完全排除未使用的导入库 我认为这是可能的通过proguard,有人可以告诉我这将如何工作,例如基于我张贴
- 我不想从我的项目中删除库(或者注释includes out和all类),也许明天我有一些新东西要测试,我不想再次包含库并为它编写额外的代码
- 我希望我的发布版本完全排除未使用的导入库
我也对其他解决方案开放,例如C++(代码)>“IFIFF < /COD>”之类的东西(我认为这在java中是不可能的)。或者一些预处理器解决方案,可能通过插件?
您可以执行以下操作: 在build.gradle
中为每个图像加载库定义属性
project.ext {
picassoEnabled = true
glideEnabled = false
...
}
然后在buildType配置中,您可以有选择地添加保留相关库的其他规则:
buildTypes {
release {
proguardFile getDefaultProguardFile('proguard-android.txt')
proguardFile 'proguard-project.txt'
if (project.picassoEnabled) {
proguardFile 'proguard-picasso.txt'
}
if (project.glideEnabled) {
proguardFile 'proguard-glide.txt'
}
}
}
在库的每个proguard配置文件中,您都有保留库的规则:
-keep class com.squareup.picasso.** { *; }
现在重要的一点是不要从应用程序中显式引用每个库,而是使用反射,这样ProGuard将在默认情况下删除所有库(显式保留的库除外)。您可以执行以下操作: 在
build.gradle
中为每个图像加载库定义属性
project.ext {
picassoEnabled = true
glideEnabled = false
...
}
然后在buildType配置中,您可以有选择地添加保留相关库的其他规则:
buildTypes {
release {
proguardFile getDefaultProguardFile('proguard-android.txt')
proguardFile 'proguard-project.txt'
if (project.picassoEnabled) {
proguardFile 'proguard-picasso.txt'
}
if (project.glideEnabled) {
proguardFile 'proguard-glide.txt'
}
}
}
在库的每个proguard配置文件中,您都有保留库的规则:
-keep class com.squareup.picasso.** { *; }
现在重要的是不要从应用程序中显式引用每个库,而是使用反射,这样ProGuard在默认情况下会删除所有库(显式保留的库除外)。在我看到反射部分之前,这看起来相当不错。。。我没有选择的余地。。。但这仍然是一个解决方案。我真的很想用C++风格>代码> IFIFF < /C>来通过一个变量完全注释代码通道……首先,这看起来很好,直到我看到反射部分…我没有选择的余地。。。但这仍然是一个解决方案。我真的很喜欢C++风格的代码<代码> IFDEF < />代码,通过变量来完全注释代码通道。