如何为Android库项目指定多个源目录

Swa*_*aul 3 java ant android compilation jar

我使用ant工具构建android库项目,我需要指定多个源目录.

我试图通过在ant.properties文件中添加这些行来指定多个源目录

source.dir=src:src2    
source.dir=src;src2
Run Code Online (Sandbox Code Playgroud)

但是无法在两种情况下构建,在这两种情况下都会生成.class,但是在创建jar文件时我遇到了这个错误

BUILD FAILED

C:\Program Files\Android\android-sdk\tools\ant\build.xml:681: The following error occurred while executing this line:

C:\Program Files\Android\android-sdk\tools\ant\build.xml:749:

C:\workarea\Android\Packages\test\src;src2 does not exist.

任何人都可以告诉我如何在ant.properties中指定多个源目录 来构建Android库项目

Erd*_*dem 9

在没有修改SDK文件的情况下,这对我有用:

ant.properties:

source.absolute.dir = tmp-src
Run Code Online (Sandbox Code Playgroud)

custom_rules.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project name="CustomRules">
    <target name="-pre-build" >
        <copy todir="tmp-src" >
            <fileset dir="src" includes="**" />
            <fileset dir="src-1" includes="**" />
            <fileset dir="src-2" includes="**" />
            <fileset dir="src-3" includes="**" />
            <fileset dir="src-4" includes="**" />
        </copy>
    </target>

    <target name="-post-build" >
        <delete dir="tmp-src" />
    </target>
</project>
Run Code Online (Sandbox Code Playgroud)

  • 这是最好的答案.修改SDK文件完全是个坏消息. (3认同)

Swa*_*aul 8

我以棘手的方式解决了这个问题; 这里是

要在具有多个源目录的android中构建库项目,首先转到ant.properties文件(对于linux,它是build.properties)并添加source.dir

    source.dir=first_source_dir ;second_source_dir ; third_source_dir
Run Code Online (Sandbox Code Playgroud)

对于lib项目,ant使用ant.propertiesbuild.properties文件中指定的out.dir目录的目录bin/classes创建带有已编译.class文件 的jar库;

同时创造 罐子,蚂蚁删除所有的.java源文件形成所述,其可被包含在如果编码器防止任何的.java在源文件out.dir目录,并将该目录source.dir ;

我们消除这些的.java蚂蚁转到source.dir目录用下面的命令

        <property name="source.absolute.dir" location="${source.dir}" />
        dir="${source.absolute.dir}" 
Run Code Online (Sandbox Code Playgroud)

用这个命令蚂蚁实际上试图去目录

cd   <your_project_root_dir>/first_source_dir ;second_source_dir ; third_source_dir
Run Code Online (Sandbox Code Playgroud)

哪个不存在......

解:

步骤1.首先确保源目录(source.dir)和构建目录(out.dir)不同;

步骤2.转到C:\ Program Files\Android\android-sdk\tools\ant打开build.xml 然后转到jar标签

    <jar destfile="${out.library.jar.file}">                        
       <fileset dir="${out.classes.absolute.dir}"
         includes="**/*.class"
         excludes="${project.app.package.path}/R.class ${project.app.package.path}/R$*.class ${project.app.package.path}/Manifest.class ${project.app.package.path}/Manifest$*.class ${project.app.package.path}/BuildConfig.class"/>
       <fileset dir="${source.absolute.dir}" excludes="**/*.java ${android.package.excludes}" />
   </jar>
Run Code Online (Sandbox Code Playgroud)

现在评论或删除最后一个文件集的标签罐子标签

    <jar destfile="${out.library.jar.file}">                        
       <fileset dir="${out.classes.absolute.dir}"
            includes="**/*.class"
            excludes="${project.app.package.path}/R.class ${project.app.package.path}/R$*.class ${project.app.package.path}/Manifest.class ${project.app.package.path}/Manifest$*.class ${project.app.package.path}/BuildConfig.class"/>
       <!--fileset dir="${source.absolute.dir}" excludes="**/*.java ${android.package.excludes}" /-->
    </jar>
Run Code Online (Sandbox Code Playgroud)

现在建立你的项目;