Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.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 导出jar/apk中的智能jar exlusion是否可能?_Java_Android_Compilation - Fatal编程技术网

Java 导出jar/apk中的智能jar exlusion是否可能?

Java 导出jar/apk中的智能jar exlusion是否可能?,java,android,compilation,Java,Android,Compilation,与android相关的快速问题,但可能涉及到一般的java编程(如果eclipse/java平台可以做到这一点,那就太好了) 假设我有一个外部库,我将它添加到我的应用程序中。(从Android的角度来看,Android库添加到Android应用程序项目中)。现在,如果我从主应用程序项目中的库项目中使用任何类或任何类来提交,那么输出jar/apk文件是否仍然包含库jar文件 上述问题的后续问题(更简单的情况)。假设我有如上所述的库项目(我们称之为MainLibrary),我确实在主项目的某些扩展中

与android相关的快速问题,但可能涉及到一般的java编程(如果eclipse/java平台可以做到这一点,那就太好了)

假设我有一个外部库,我将它添加到我的应用程序中。(从Android的角度来看,Android库添加到Android应用程序项目中)。现在,如果我从主应用程序项目中的库项目中使用任何类或任何类来提交,那么输出jar/apk文件是否仍然包含库jar文件

上述问题的后续问题(更简单的情况)。假设我有如上所述的库项目(我们称之为MainLibrary),我确实在主项目的某些扩展中使用了它。现在,这个库已经引用了它内部使用的其他库项目/jar(比如LinkedinLibrary)。因此,MainLibrary中的调用在某种程度上使用LinkedinLibrary

现在,正如我指出的,我的主要应用程序确实使用MainLibrary,但根本不使用MainLibrary中的任何内容,MainLibrary内部使用LinkedinLibrary

在我的应用程序中,mainlibraryjar显然存在于输出中。那LinkedIn图书馆jar呢

现在,如果我不使用任何类,或者不管它是什么,在我的主应用程序项目中的库项目中,输出jar/apk文件是否仍然包含库jar文件,或者不包含库jar文件

如果你把JAR放在libs文件夹中,它会

上述问题的后续问题(更简单的情况)。假设我有如上所述的库项目(我们称之为MainLibrary),我确实在主项目的某些扩展中使用了它。现在,这个库已经引用了它内部使用的其他库项目/jar(比如LinkedinLibrary)

这取决于您的项目结构。例如:如果您只是将MainLibrary的JAR放在libs文件夹中,链接的项目就会丢失。但是,如果您的Eclipse工作区中有所有项目,并且通过属性对话框添加了这些项目,并将其配置为也导出链接库,那么它将起作用

这就是基本Eclipse构建系统所提供的全部内容。如果你在摆弄Gradle的依赖关系,它是开箱即用的——如果你让Android Studio的这个有缺陷的部分工作。如果你使用Maven,它也可以开箱即用,而Maven目前似乎比Android Studio中的Gradle更稳定

一般来说,这取决于您的构建系统

  • Maven是开箱即用的
  • 格雷德尔也是
  • 如果您使用的是ant,您需要自己编写它,或者使用一些自定义任务,如或Maven依赖插件
编辑:/
你还问是否可能。我不知道依赖关系管理系统是通过源代码检查工作的。因此,如果您不需要现有的依赖项,您必须自己删除它。

非常感谢您的快速响应。参考您的第一条语句,如果第一个示例中的我的库是由project添加的,而不是使用库jar,那么主应用程序将不包含库的jar,但是如果我明确地将jar放在libs文件夹中,它会包含吗?我没听错吧?我这样问是因为你的“编辑评论”似乎与上述内容相矛盾。如果你把你的JAR放在libs文件夹中,它就会被添加到APK中。构建系统并不关心您是否使用JAR中的类。它只是把它们放进去。是的,这很清楚。但我问的是另一种情况,如果我不是通过jar引用而是通过项目引用来添加库的话。例如,我的工作区中有2个项目。我的主要项目和图书馆项目。若我通过引用将库项目添加到我的主项目中,但我的主项目不会使用库项目中的任何内容,它会包含库的jar吗?是的。如上所述:构建系统或依赖关系管理系统不会扫描代码以确定是否实际使用了类。你可以自己写这样的东西,但是为什么要把没用过的罐子放在文件夹里呢?非常感谢schlingel,我很感激。(我正在考虑为自己建立一个大的库,其中包含很多东西,而不是将所有这些工具分解成单独的库)