【问题标题】:Exclude java files when compiling an android library using ant使用ant编译android库时排除java文件
【发布时间】:2015-03-08 00:39:23
【问题描述】:

我有一个使用 ant 构建的 android 库项目。一切正常,但我有一些我不想包含在生成的 jar 文件中的测试 java 文件,有人知道如何制作吗?

谢谢!

【问题讨论】:

    标签: android ant build


    【解决方案1】:

    Android Studio/Gradle 允许您指定要从构建中排除的类;在 Android Studio 中,您可以通过编辑 build.gradle 文件并添加自定义 SourceSet 来排除类。像这样的:

    android
    {
        compileSdkVersion 20
        buildToolsVersion "20.0.4"
    
        defaultConfig
        {
            minSdkVersion 19
            targetSdkVersion 19
            packageName "org.google.home"
            testPackageName "org.google.home.test"
        }
        sourceSets
        {
            main
            {
                java
                {
                    exclude '**/ClassToExclude.java'
                }
            }
            androidTest
            {
                java
                {
                    exclude '**/TestforClassToExclude.java'
                }
            }
        }
    }
    

    正如您在上面看到的,您可以排除测试文件(位于项目测试目录中)和标准源文件。

    编辑

    对于ant,您可以使用类似的东西,称为fileset,因此指定应该从构建中排除的文件。用户手册有一个很好的部分描述了如何实现这一点: https://ant.apache.org/manual/Types/fileset.html

    ant 还提供了一个<exclude> 标记,您可以使用它来指定要排除的文件:

    <exclude name="**/dir_name_to_exclude/**" />
    

    还有一篇讨论类似问题的 stackoverflow 帖子:How to exclude a directory from ant fileset, based on directories contents

    【讨论】:

    • 由于 NDK 的原因,我无法使用 android studio :( 所以一切都为 ant 设置好了
    【解决方案2】:

    我终于在我的 android 项目的 build.xml 中添加了以下几行:

    <target name="-post-compile">
        <jar destfile="bin/myLibrary.jar">
            <zipfileset src="bin/classes.jar" excludes="com/my/package** com/something/unittest/**"/>
        </jar>
    </target>
    

    这将删除不需要的文件并更新 jar 文件

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-01
      • 2021-11-18
      • 2011-03-27
      • 1970-01-01
      相关资源
      最近更新 更多