2011-12-16 20 views
10

te 4 pliki (build.xml, local.properties, projects.properties, proguard.cfg) są generowane automatycznie podczas uruchamiania:Android zwyczaj budowania przy użyciu Ant

android projekt aktualizacji --name TestApp - cel 10 -p.

Zaktualizowane project.properties

Zaktualizowane local.properties

Dodano plik ./build.xml

Zaktualizowany plik ./proguard.cfg

Ale chcę „Auto -gen "build.xml również zawiera następujący kod" pre-kompilacji ", czy jest jakiś sposób na zrobienie tego? Czy istnieje plik "include" lub "szablon", który może zawierać ten plik?

<target name="config"> 

    <property name="config-target-path" value="${source.dir}/com/androidengineer/antbuild"/> 

    <!-- Copy the configuration file, replacing tokens in the file. --> 
    <copy file="config/Config.java" todir="${config-target-path}" 
     overwrite="true" encoding="utf-8"> 
    <filterset> 
    <filter token="CONFIG.LOGGING" value="${config.logging}"/> 
    </filterset> 
    </copy> 

</target> 
+0

Spróbuj wklej ten kod do build.xml a następnie zmodyfikować „kompilacji” target (może być inna nazwa) jak ... – coolcfan

+0

Witam, Co Mam na myśli, że "build.xml" jest generowany automatycznie podczas uruchamiania "aktualizacji Androida". Nie mogę tam wkleić tego kodu. To jest mój problem i chcę się dowiedzieć, czy mogę wkleić ten kod gdzieś indziej, ale nadal mogę dołączyć, gdy uruchomi się "aktualizacja Androida". – xbeta

+0

Czy plik build.xml zostanie uruchomiony zaraz po wygenerowaniu? – coolcfan

Odpowiedz

13

build.xml jak generowane przez narzędzie android (przynajmniej przy użyciu Android SDK R20) zawiera ten kawałek kodu:

<!-- 
    Import per project custom build rules if present at the root of the project. 
    This is the place to put custom intermediary targets such as: 
     -pre-build 
     -pre-compile 
     -post-compile (This is typically used for code obfuscation. 
         Compiled code location: ${out.classes.absolute.dir} 
         If this is not done in place, override ${out.dex.input.absolute.dir}) 
     -post-package 
     -post-build 
     -pre-clean 
--> 
<import file="custom_rules.xml" optional="true" /> 

Więc co zrobić, aby Utwórz dodatkowe cele lub dostosuj istniejące cele, aby utworzyć plik custom_rules.xml z tymi nowymi obiektami docelowymi. Zauważ, że w moich testach cele musiały być zagnieżdżone w tagu <project>, więc po prostu skopiuj pierwsze dwa wiersze wygenerowanego build.xml do custom_rules.xml i nie zapomnij o zamknięciu znacznika </project> na końcu. Ponieważ custom_rules.xml nie zostanie nadpisany przez android update, twoje zmiany będą trwałe i można je sprawdzić w wybranym przez ciebie narzędziu SCM.

+0

Tak, wygląda na to, że naprawili ją w nowym wydaniu SDK. – xbeta

3

Może można sprawdzić odpowiedź na to pytanie:

Does the ADT plugin automatically create an ant build file?

odpowiedź nie jest akapit mówiąc ...

Alternatywnie, można po prostu skopiować szablon build.xml bezpośrednio z $ ANDROID_HOME/tools/lib/build.template, a następnie zmień nazwę projektu.

Zmodyfikuj ten plik i uruchom komendy, aby sprawdzić, czy działa.

Aktualizacja

sprawdzić także "Dostosowywanie build" w tym artykule: http://www.androidengineer.com/2010/06/using-ant-to-automate-building-android.html

+0

Dzięki! Ale to nie działa, ponieważ zawsze uruchamiam "projekt aktualizacji Androida" za każdym razem, gdy buduje, co zawsze generuje nowy "build.xml" i zastępuje istniejący. Poszukuję rozwiązania tego problemu. – xbeta

+0

Wtedy nie wiem, dlaczego to nie działa. Ponieważ istnieje szablon build.xml, myślę, że powinien wygenerować nowy build.xml z szablonu przy każdym uruchomieniu "projektu aktualizacji Android", ale wydaje się, że to nie jest ... Przepraszamy za to. – coolcfan

+0

Cześć, coolcfan, dziękuję za ansewr, ale nie sądzę, że rozumiesz mój problem tutaj. Mogę wprowadzić zmiany do szablonu, ale to wpłynęłoby na wszystkie moje "inne" projekty, ponieważ używają tego samego zestawu SDK. Chcę tylko dostosować dostosowane dla tego konkretnego projektu dla tej konkretnej kompilacji. 'Oto moja sytuacja:' '1. Skopiuj $ ANDROID_HOME/tools/lib/build.template do build.xml' '2. Zmodyfikuj plik build.xml' '3. Uruchom "projekt aktualizacji Android" ' ' 4. "aktualizacja Androida" generuje nowy plik build.xml, który zastąpił teraz moją kopię zmodyfikowanego pliku build.xml' – xbeta

1

W build.xml się, to powie Ci, jak to zrobić. Zobacz następujący komentarz z pliku:

<!-- 

    *********************** 
    ****** IMPORTANT ****** 
    *********************** 
    In all cases you must update the value of version-tag below to read 'custom' instead of an integer, 
    in order to avoid having your file be overridden by tools such as "android update project" 
--> 
<!-- version-tag: 1 --> 
+0

Próbowałem i to nie działało :-( Ale mogło to być spowodowane błędem, który miałem w moim SDK Androida. nowa aktualizacja: – xbeta

Powiązane problemy