Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从proguard Android Gradle构建脚本中排除某些模块_Java_Android_Gradle_Proguard - Fatal编程技术网

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任务?

您找到解决方案了吗?