Java 从proguard Android Gradle构建脚本中排除某些模块
我的项目结构如下表所示:Java 从proguard Android Gradle构建脚本中排除某些模块,java,android,gradle,proguard,Java,Android,Gradle,Proguard,我的项目结构如下表所示: 根项目 +------模块A +------模块B 现在模块B是一个巨大的项目,但是我使用API来访问它,所以我想在运行时加载模块B的类。因此,我想编译它,但在一个单独的DEX文件。我能够根据以下要点编译一个单独的DEX文件: 在调试编译模式下,这可以很好地工作,因为可以通过这种形式的buildscript更改正在编制索引的库 def libraryFiles = new ArrayList<?>() variant.dex.librar
根项目
+------模块A
+------模块B
现在模块B是一个巨大的项目,但是我使用API来访问它,所以我想在运行时加载模块B的类。因此,我想编译它,但在一个单独的DEX文件。我能够根据以下要点编译一个单独的DEX文件:
在调试编译模式下,这可以很好地工作,因为可以通过这种形式的buildscript更改正在编制索引的库
def libraryFiles = new ArrayList<?>()
variant.dex.libraries.each {
File file ->
// Exclude Module B from Dex library list
if (!file.absolutePath.contains("ModuleB/unspecified/classes.jar")) {
libraryFiles.add(file);
}
}
variant.dex.libraries = libraryFiles
def libraryFiles=new ArrayList()
variant.dex.libraries.each{
文件->
//从Dex库列表中排除模块B
如果(!file.absolutePath.contains(“ModuleB/unspecified/classes.jar”)){
libraryFiles.add(文件);
}
}
variant.dex.libraries=库文件
现在这很好,因为在不执行proguard时,AndroidBuilder
只需使用variant.dex.libraries
来创建dex文件并将其排除即可。当一个人需要做中级班的前卫时,痛苦就来了。由于ModuleB
是一个编译时依赖项(用于资源集成/布局等),因此它的类被编译到build目录中
但是,当它进入proguard时,Android Builder中定义的默认proguard任务将作为libraryJars
抛出classes.jar
文件
最后,任务创建
classes-proguard
,其中包含上述库jar中的所有类。然后对其进行索引,并将通过运行时加载的类显示在其中。是否有任何方法排除某些JAR,使其不进入默认的proguard任务?您找到解决方案了吗?