2010-07-13 13 views
10

Aparentemente, puedo especificar carpetas de origen usando la propiedad source.dir en build.properties, pero ¿qué ocurre si quiero especificar varias carpetas de origen?¿Cómo especificar múltiples carpetas de origen en build.properties cuando se usa ant para construir proyectos de Android?

Los comentarios a continuación son del archivo build.xml generado por las herramientas del SDK de Android:

<!-- The build.properties file can be created by you and is never touched 
    by the 'android' tool. This is the place to change some of the default property values 
    used by the Ant rules. 
    Here are some properties you may want to change/update: 

    application.package 
     the name of your application package as defined in the manifest. Used by the 
     'uninstall' rule. 
    source.dir 
     the name of the source directory. Default is 'src'. 
    out.dir 
     the name of the output directory. Default is 'bin'. 

    Properties related to the SDK location or the project target should be updated 
     using the 'android' tool with the 'update' action. 

    This file is an integral part of the build system for your application and 
    should be checked in in Version Control Systems. 

    --> 

Nota: no me importa acerca de la construcción en Eclipse - Im la creación automatizada desarrolla valiéndose de hormiga.

+0

Aclare qué tarea está utilizando. La tarea javac no usa la propiedad source.dir. –

+0

Para proyectos de ANDROID específicamente, según los comentarios generados por la herramienta Android de la CLI del SDK, puede especificar source.dir en build.properties. Actualizaré la pregunta anterior y pegaré en los comentarios. – Eno

Respuesta

18

¿Intentó usar dos puntos para separar las rutas? Mis build.properties se ve así:

source.dir=src:src2:src3:src4:src5 
+3

me temo que no funciona al construir una biblioteca. –

+1

@ AndreyRegentov - aquí está la solución para Android Library proyecto http://stackoverflow.com/questions/14605899/how-to-specify-multiple-source-directory-for-android-library-project –

0

En el build.xml (fuertemente personalizada) que tengo aquí, que resuelve un montón de otras cuestiones, terminé tener que tire del objetivo de compilación en mi XML y especificando más de una ruta de origen allí. Puede hacer lo mismo, simplemente coloque el nuevo objetivo sobre la definición de la tarea de configuración en su build.xml. Tenga en cuenta que hay varios archivos flotando en el SDK de Android que se parecen a los que debería usar para personalizar, y algunos parecen estar equivocados o al menos no funcionan correctamente con las herramientas más recientes (el de tools/ant/main_rules.xml no parece estar funcionando en mi SDK de Windows). Creo que el que quiere está en plataformas/[platform-numer] /ant/ant_rules_r2.xml en el último SDK. En cualquier caso, la tarea se parece a la tarea que se muestra a continuación, y puede agregar otro directorio de origen fácilmente. No he intentado separar con dos puntos, como la otra respuesta aquí, porque como dije, nuestro build.xml tenía que personalizarse de varias maneras. Pero sé que esto funcionará.

<!-- Compiles this project's .java files into .class files. --> 
<target name="compile" depends="-resource-src, -aidl" 
      description="Compiles project's .java files into .class files"> 
    <!-- If android rules are used for a test project, its classpath should include 
     tested project's location --> 
    <condition property="extensible.classpath" 
         value="${tested.project.absolute.dir}/bin/classes" else="."> 
     <isset property="tested.project.absolute.dir" /> 
    </condition> 
    <condition property="extensible.libs.classpath" 
         value="${tested.project.absolute.dir}/libs" else="./libs"> 
     <isset property="tested.project.absolute.dir" /> 
    </condition> 
    <javac encoding="ascii" target="1.5" debug="true" extdirs="" 
      destdir="${out.classes.absolute.dir}" 
      bootclasspathref="android.target.classpath" 
      verbose="${verbose}" classpath="${extensible.classpath}" 
      classpathref="android.libraries.jars"> 
     <src path="${source.absolute.dir}" /> 
     <src path="${gen.absolute.dir}" /> 
     <src refid="android.libraries.src" /> 
     <classpath> 
      <fileset dir="${external.libs.absolute.dir}" includes="*.jar" /> 
      <fileset dir="${extensible.libs.classpath}" includes="*.jar" /> 
     </classpath> 
    </javac> 
</target> 
Cuestiones relacionadas