2009-11-06 12 views
9

Próbuję przenieść aplikację z Eclipse do IntelliJ. Aplikacja jest w porządku, ale nie działa poprawnie."Nie znaleziono zasobu" podczas tworzenia aplikacji na system Android w wersji IntelliJ 9.0 Maia Public Beta

Oto częściowy ślad stosu Otrzymuję:

ERROR/AndroidRuntime(957):    
java.io.IOException: Resource not found: "org/joda/time/tz/data/ZoneInfoMap" ClassLoader: [email protected] 
     at org.joda.time.tz.ZoneInfoProvider.openResource(ZoneInfoProvider.java:209) 
     at org.joda.time.tz.ZoneInfoProvider.<init>(ZoneInfoProvider.java:123) 
     at org.joda.time.tz.ZoneInfoProvider.<init>(ZoneInfoProvider.java:82) 
     at org.joda.time.DateTimeZone.getDefaultProvider(DateTimeZone.java:439) 
     at org.joda.time.DateTimeZone.setProvider0(DateTimeZone.java:393) 
     at org.joda.time.DateTimeZone.<clinit>(DateTimeZone.java:114) 
     at org.joda.time.chrono.GregorianChronology.<clinit>(GregorianChronology.java:71) 
     at org.joda.time.chrono.ISOChronology.<clinit>(ISOChronology.java:66) 
     at org.joda.time.base.BaseDateTime.<init>(BaseDateTime.java:97) 
     at org.joda.time.DateTime.<init>(DateTime.java:120) 

Z jakiegoś powodu, aplikacja nie jest w stanie znaleźć środki Joda czasie, chociaż są one określone w kompilacji ścieżki modułu. Są to te same pliki jar używane przez wersję aplikacji Eclipse.

alt text http://img.skitch.com/20091106-pgqujbb5eaeqc2wfiqc2c1p39a.png

APK zbudowany przez narzędzie IntelliJ jest o 20% mniejszy niż ten zbudowany przez Eclipse, ale nie wiem dlaczego.

Każdy pomysł, jaki może być problem?

UPDATE:

Rozmawiałem z Romain i XAV wczoraj, i wydaje się, że problemem jest to, że IntelliJ nie jest łączenie zasobów w apk. Najwyraźniej program Aapt stosuje podejście dwuprzebiegowe - najpierw łączy wszystkie pliki klas w plik .dex, a następnie łączy wszystkie pliki zasobów oddzielnie na najwyższym poziomie pliku APK. To drugie podanie, którego intelli wydaje się brakować.

W celu obejścia problemu zasugerowano, że należy oddzielić wszystkie pliki zasobów od słoika czasu Joda i umieścić je w katalogu src. Oczekiwano, że intelli będzie następnie pakował je do mojego apk'a, jakby były częścią mojego własnego źródła, rozwiązując tym samym problem. Jednak kiedy to zrobiłem, IntelliJ całkowicie zignorował te pliki podczas tworzenia apk.

Nie wiem dlaczego. Czy istnieje sposób obejścia problemu, dzięki któremu mogę pobrać pliki zasobów Joda-time do mojego apk, co nie jest zbyt niewygodne za każdym razem, gdy chcę je budować?

+0

, dlaczego używasz Inteli J. Mam na myśli to, że Google radzi używać Eclipse do programowania Androida, czy jest jakaś specjalna potrzeba, która dotyczy tylko Inetli J? –

+0

tylko moja ciekawość nic więcej. –

+0

Muszę powiedzieć, że nie miałem żadnych problemów z IntelliJem, kocham to bardziej niż Eclipse. Mam nadzieję, że to zrozumiesz Nie miałem problemu z dodaniem zewnętrznych słoików do moich projektów. Moja jedyna sugestia to zmiana ustawień pod przyciskiem Dodaj. – sgarman

Odpowiedz

1

To jest dość stara wersja intellij w tym momencie. Wydaje mi się, że 10.5 rozwiązuje wszystkie moje problemy z urządzeniem Android dev

0

Czy Twój problem nie leży w zakresie twoich zależności? Jeśli są one używane tylko do kompilacji, nie ma gwarancji pracy w Runtime, prawda?

Nie jestem użytkownikiem IJ, ale z ekranu, to moje przypuszczenie. Wyjaśniłoby to również, dlaczego rozmiar twojego pakietu android jest o 80% niższy.