2013-12-12 15 views
16

Od lat używam integracji Ant dla Eclipse, aby budować moje projekty Android jako outlined by Google on this documentation page. To mój ulubiony sposób budowania wersji release, ponieważ po prostu mogę uruchomić "Uruchom narzędzie zewnętrzne" w Eclipse, aby uruchomić kompilację Ant, i działa ona w tle.Kompilacja Anta zawodzi wewnątrz Eclipse

Od niedawna (wierzę ADT 22.0 lub 22.1), byłem coraz następujący awaria:

[echo] Handling Resources... 
[aapt] Generating resource IDs... 
[aapt] invalid resource directory name: C:\path\to\project\bin\res/crunch 

BUILD FAILED
C: \ Android \ android-sdk \ tools \ ant \ build.xml: 653: wystąpił następujący błąd podczas wykonywania tej linii:
C: \ Android \ android-sdk \ tools \ ant \ build.xml: 698: null zwracane: 1

nie jestem pewna, co jest przyczyną tego s jest, ponieważ AAPT wydaje się generować sam katalog "crunch". Próbowałem wyczyścić mój projekt i wyłączyć automatyczne budowanie w Eclipse, ale bezskutecznie.

Próbowałem również wykonać ant release poza Eclipse, ale to daje ten sam błąd. Wykonywanie ant clean release również nie działa, ponieważ próbuje usunąć słoiki, które są nadal używane przez Eclipse. Dlatego jedynym rozwiązaniem, które znalazłem do pracy w ogóle znaczy:

  1. Wyjście Eclipse
  2. czekać na proces do końca
  3. Execute ant clean release

To jest nie do zniesienia, bo jak my Wiem, że ponowne uruchomienie Eclipse to królewski ból. Ponadto wszystkie dotknięte projekty muszą zostać oczyszczone, co sprawia, że ​​cały proces trwa nawet pół godziny. Otworzyłem issue #60496 on b.android.com, ale nie słyszałem żadnej oficjalnej odpowiedzi.

Czy jest na to rozwiązanie oprócz gryzienia bulletu i przejścia na system Android Studio?

+0

Widzę to również, ale tylko w przypadku projektów, które odnoszą się do projektu bibliotecznego. Z podniesionego problemu wydaje Ci się, że jest taki sam, chociaż nie wspominałeś o tym tutaj. Czy możesz to potwierdzić? – NickT

+0

@NickT Tak, wspomniany projekt odnosi się do wielu projektów bibliotecznych. –

+1

Używam kompilacji Ant od wieków, ale nie mogę sobie poradzić z tym błędem, żaden z obejść go nie naprawia, więc zaczynam nagrodę za to. Jeśli zamknięcie Eclipse naprawi je za Ciebie, czy zamknięcie kilku projektów może zaoszczędzić ci trochę czasu? Tylko myśl. – NickT

Odpowiedz

0

Miałem podobny błąd na komputerze z systemem Linux. Okazuje się, że aapt korzysta z 32-bitowych bibliotek emulacyjnych, a jeśli z jakiegoś powodu zawodzą, to proces kompilacji może nieoczekiwanie zawodzić w tej lokalizacji w pliku build.xml.

W moim przypadku przyczyną niepowodzenia było CircleCI musiałem załatać swoje jądro na czarnej liście newly found vulnerability w 32-bitowym interfejsie API emulacji. Następnie mogli naprawić swoje jądro, aby wyeliminować lukę w ciągu kilku dni.

0

Na OSX po prostu wyczyściłem projekt i przebudowałem go i to zadziałało.

Project> Clean (pick swoją nazwę projektu)

+1

Jeśli wyczyściłem projekt w Eclipse i wykonałem 'release mrówki ', otrzymuję problem opisany w OP. Jak opisano w innym miejscu, wykonanie 'ant clean release' jest niewystarczające w systemie Windows i działa tylko w systemie Linux, jeśli automatyczne budowanie jest wyłączone. –

0

Próbowałem rozwiązania tutaj, takich jak: ponowne uruchomienie zaćmienie oczyścić projekt i odbudować, usuwanie folderu crunch i uruchom ponownie etc ant Po uruchomieniu skryptu ant (z zaćmienia) wygląda na to, że ADT zakłóca i generuje wielokrotnie folder crunch. Obejście problemu polegało na uruchomieniu ant z wiersza poleceń. Początkowo miałem wykonać następujące kroki, aby usunąć folder kryzysu:

  1. Build Automatically Wyłącz opcję Project menu.
  2. Ręcznie usuń folder cruch.
  3. Uruchom ant clean release z wiersza poleceń.
+0

To rozwiązanie zostało już wspomniane zarówno w pytaniu, jak i w górnej odpowiedzi. –

+0

gdzie jest to wymienione w pytaniu? Pytanie mówi, że wydanie ant clean nie działa. To wszystko. moim celem było wyłączenie Autorebuild i użycie ant z linii poleceń. tak jak zrobiłem co najmniej – eldjon

+0

Związany problem wspomina to rozwiązanie w [komentarz nr 2] (https://code.google.com/p/android/issues/detail?id=60496#c2). Pierwotnie opublikowałem to pytanie, ponieważ to konkretne rozwiązanie nie jest wystarczające dla systemu Windows z powodu uchwytów plików. Od tego czasu przełączyłem się na Linuksa, więc nie wiem, czy problem z uchwytami plików został rozwiązany. –

0

Cześć, wypróbuj tę linię i zbuduj ją ponownie.

rm -fR $(find . -type d -name crunch|xargs) 
0

Miałem również ten sam rodzaj problemu. Ręcznie usunąłem foldery "bin" i "gen" biblioteki i spróbowałem. To zadziałało dla mnie.

0

Dodaj tę linię na górze custom_rules.xml

<delete dir="../YourLibraryName/bin/res/crunch"/> 

jeśli nie masz custom_rules.xml, utworzyć i umieścić to w pliku. Umieść plik custom_rules.xml w katalogu projektu.

<?xml version="1.0" encoding="UTF-8"?> 

<project name="imported" > 

<delete dir="../YourLibraryName/bin/res/crunch"/> 

</project> 

UPDATE

Można to zrobić dodając następującą linię w bibliotece projektu build.xml.

<delete dir="${out.absolute.dir}"/res/crunch /> 
Powiązane problemy