2010-07-13 13 views
10

Apparentemente, posso specificare le cartelle di origine utilizzando la proprietà source.dir in build.properties, ma cosa succede se desidero specificare più cartelle di origine?Come specificare più cartelle di origine in build.properties quando si utilizza formica per creare progetti Android?

I commenti che seguono sono dal file build.xml generato dagli strumenti SDK 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: Non mi preoccupo per la costruzione in Eclipse - Im creazione automatizzata costruisce utilizzando formica.

+0

Si prega di chiarire quale attività si sta utilizzando. L'attività javac non utilizza la proprietà source.dir. –

+0

Per i progetti ANDROID in particolare, in base ai commenti generati dallo strumento CLI Android di SDK, è possibile specificare source.dir in build.properties. Ill aggiorno la domanda sopra e incollare i commenti. – Eno

risposta

18

Hai provato a utilizzare i due punti per separare i percorsi? I miei build.properties aspetto:

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

temo che non funzioni quando si costruisce una libreria. –

+1

@ AndreyRegentov - ecco la soluzione per il progetto Libreria Android http://stackoverflow.com/questions/14605899/how-to-specify-multiple-source-directory-for-android-library-project –

0

Nella (pesantemente personalizzata) build.xml che ho qui, che risolve una serie di altre questioni, ho finito per dover tirare solo il target di compilazione nella mia XML e specificando più di un percorso di origine lì. Puoi fare lo stesso, basta mettere il nuovo target sopra la definizione dell'attività di setup nel tuo build.xml. Tieni presente che nell'SDK di Android sono presenti più file che sembrano tutti quelli che dovresti utilizzare per personalizzare e alcuni di essi sembrano essere sbagliati o almeno non funzionano correttamente con gli strumenti più recenti (quello in tools/ant/main_rules.xml non sembra funzionare nel mio Windows SDK). Credo che quello che vuoi sia nelle piattaforme/[platform-numer] /ant/ant_rules_r2.xml nell'ultimo SDK. Ad ogni modo, l'attività è simile all'attività seguente, e puoi semplicemente aggiungere un'altra directory sorgente ad essa abbastanza facilmente. Non ho provato a separare con i due punti, come l'altra risposta qui, perché come ho detto, il nostro build.xml doveva essere personalizzato in vari modi. Ma so che funzionerà.

<!-- 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>