2013-03-29 37 views
5

Mam aplikację na Androida, która dzwoni do biblioteki jar, powiedz b.jar. Ta biblioteka b.jar. następnie wywołuje facebook sdk lib. Kiedy mogę skompilować mojej aplikacji w ramach tej sytuacji, to zawsze mówi

Nie można wykonać Dex: Wiele plików dex określić Lcom/Facebook/android/AsyncFacebookRunner $ 1; Konwersja do formatu Dalvik nie powiodła się: Nie można wykonać dex: wiele plików dex definiuje Lcom/facebook/android/AsyncFacebookRunner $ 1;

Użyłem kilku dni, aby to zadziałało, jednak nie udało mi się rozwiązać tego problemu. Czy ktoś wie, jak rozwiązać ten problem?

+1

jest to prawdopodobnie spowodowane tym, że ten sam słoik jest zawarty więcej niż jeden raz w twoim projekcie. W jaki sposób zawiera się zawartość biblioteki Facebook, czy jest to słoik? Jeśli tak, upewnij się, że twój projekt zawiera go tylko raz (że nie pojawia się w projektach bibliotek, do których się odwołujesz, lub buduje ścieżki itd.). – ab11

+0

Dołączam projekt facebook lib z Properties-> Android-> Library-> Add to my b lib project. Następnie dołączam projekt b lib do mojej głównej aplikacji z Właściwości-> Android-> Biblioteka-> Dodaj. Spotykam się z tym problemem, gdy ustawiam je w tej sytuacji. Czy ktoś ma pomysł, aby go rozwiązać? –

+1

@JackyLam Cześć, mam do czynienia z tym samym problemem. Mam nadzieję, że rozwiązałeś problem? Proszę, podziel się tym, jak to zrobiłeś? –

Odpowiedz

4

Przejdź do właściwości projektu, a następnie zbudować Java ścieżka -> Biblioteki -> Usuń Android zależności i OK, a następnie uruchom projekt

Zaproszony od: https://stackoverflow.com/a/15247670/1585773

działało idealnie dla mnie.

+0

nie działa dla mnie – ajbraus

+0

Jeśli Facebook sdks jest określany jako biblioteka, to jeśli usuniesz zależność Androida ze ścieżki budowania java, projekt nie zostanie skompilowany, ponieważ w Androidzie pojawia się plik słownika Facebook Zależności – Jasper

3

Wszystkie odpowiedzi są pracą. Nie rozwiązują one głównej przyczyny problemu. Jeśli spojrzysz na swoją strukturę projektu, jest projekt FacebookSDK i Twój projekt. W obu projektach znajduje się pakiet com.facebook.android (pierwszy plik java to AsyncFacebookRunner), który zawiera te same pliki java. Oczywiście wiele plików dex definiuje pliki klas, a otrzymasz błąd.

Rozwiązanie - Usuń z głównego projektu projekt com.facebook.android (a nie FacebookSDK).

+0

+1 dla "wszystkie odpowiedzi są obejściem ". Przeszukuję internet i nie znajduję nic poza obejściami. Zabiłbym dla artykułu o tym, jak działa wiele deklinacji projektu – slezica

0

Dla mnie było to spowodowane konfliktem z pakietem SDK AddThis, ponieważ pakiet SDK AddThis zawiera częściową kopię wbudowanego w nią pakietu SDK serwisu Facebook. I tak klasa com/facebook/android/AsyncFacebookRunner została zdefiniowana dwukrotnie.

udało mi się rozwiązać ten problem za pomocą tych odpowiedzi:

Android AddThis sdk + Facebook sdk won't build in Android Studio

Android Studio - App Crashing on AddThis.jar - "Sources Not Found" Message

Konkretnie, stosując ten krok z drugiej odpowiedzi:

Używane poleceń zip -d addthis0.0.8.jar com/facebook/* w terminalu, aby usunąć pliki z Facebooka z adresu addthis0.0.8.jar

Odkąd używam Eclipse, nie musiałem wykonywać żadnych innych kroków w tych odpowiedziach.

Powiązane problemy