2011-07-24 12 views
9

Pracuję nad niektórymi skryptami Anta dla systemu kompilacji Androida i natknąłem się na element, który zadzwoni do aapt. Widziałem wiele przykładów zDokumentacja dla elementu Aapt w skrypcie Ant

exec wykonywalnych = „$ {}” aapt

ale te, które pochodzą z pliku main_rules.xml używać innego formatu

<aapt executable="${aapt}" 
      command="package" 
      debug="${build.packaging.debug}" 
      manifest="AndroidManifest.xml" 
      assets="${asset.absolute.dir}" 
      androidjar="${android.jar}" 
      apkfolder="${out.absolute.dir}" 
      resourcefilename="${resource.package.file.name}" 
      resourcefilter="${aapt.resource.filter}"> 
     <res path="${resource.absolute.dir}" /> 
     <!-- <nocompress /> forces no compression on any files in assets or res/raw --> 
     <!-- <nocompress extension="xml" /> forces no compression on specific file extensions in assets and res/raw --> 
    </aapt> 

chciałbym aby zmienić nazwę pakietu za pomocą tego elementu, ale nie może znaleźć dokumentacji o tym, jak go używać. Czy ktoś wie, gdzie mogę znaleźć?

Dzięki

Odpowiedz

1

Mam wątpliwości, czy istnieje dokumentacja wykraczająca poza kod źródłowy.

+3

. .. które można znaleźć na przykład tutaj: http://www.netmite.com/android/mydroid/1.5/development/tools/anttasks/src/com/android/ant/AaptExecLoopTask.java –

7

nie mogłem znaleźć niczego, co skończyło się używając następujących składników, które wydaje się działać

<exec executable="${aapt}" failonerror="true"> 
     <arg value="package" /> 
     <arg value="-f" /> 
     <arg value="-v" /> 
     <arg value="-M" /> 
     <arg path="AndroidManifest.xml" /> 
     <arg value="-A" /> 
     <arg path="assets" /> 
     <arg value="-I" /> 
     <arg path="${android.jar}" /> 
     <arg value="-m" /> 
     <arg value="-J" /> 
     <arg path="${out.absolute.dir}" /> 
     <arg value="-F" /> 
     <arg path="${out.absolute.dir}/${resource.package.file.name}" /> 
     <arg value="-S" /> 
     <arg path="res" /> 
     <arg value="--rename-manifest-package" /> 
     <arg value="my.new.package.name" /> 
    </exec> 
7

W nowym (ER) wersja Android SDK, mrówka skryptu build działa w inny sposób. Nie wywołuje bezpośrednio polecenia poprzez element za pośrednictwem elementu exec, ale definiuje raczej zadanie. Ten drugi jest implementowany przez klasę Java com.android.ant.AaptExecTask. Ta klasa udostępnia tylko podzestaw opcji wiersza poleceń aapt.

można znaleźć krótki opis mapowania między opcjami wiersza poleceń AAPT i parametrów mrówek poniżej, jak znaleźć w doc źródło Java:

Aapt Option    Ant Name  Type 
--------------------------------------------------------------------------------- 
path to aapt   executable  attribute (Path) 
command     command   attribute (String) 
-v      verbose   attribute (boolean) 
-f      force   attribute (boolean) 
-M AndroidManifest.xml manifest  attribute (Path) 
-I base-package   androidjar  attribute (Path) 
-A asset-source-dir  assets   attribute (Path 
-S resource-sources  <res path=""> nested element(s) 
             with attribute (Path) 
-0 extension   <nocompress extension=""> nested element(s) 
         <nocompress>    with attribute (String) 
-F apk-file    apkfolder     attribute (Path) 
         outfolder     attribute (Path) deprecated 
         apkbasename    attribute (String) 
         basename     attribute (String) deprecated 

-J R-file-dir  rfolder   attribute (Path) 
            -m always enabled 

W miarę jak się dowiedziałem, nie ma sposobu, aby udostępnia ogólne opcje aapt poprzez nowe zadanie kompilacji. Wydaje się to możliwe tylko poprzez zrobienie zmodyfikowanej kopii pliku build.xml zestawu SDK z zamiennikami dla wywołań aapt.

Jeśli ktoś zna lepsze rozwiązanie, byłbym zadowolony, aby przeczytać o zbyt ;-)

EDIT: W jeszcze nowsze wersje SDK wprowadzone pakiety zmiana nazwy jeszcze:

Aapt Option --rename-manifest-package package-name 
Ant Name  manifestpackage 
Type   attribute (String) 
+0

Znajduję nazwę atrybutu --ren-manifest-package opcja przez długi czas. Jest to dla mnie bardzo pomocne. – lishali