quarta-feira, 10 de setembro de 2014

Android - UNEXPECTED TOP LEVEL EXCEPTION na migração

E ai pessoal, tudo bom!?

O primeiro post que pretendo fazer é a respeito da migração de um projeto Android feito inteiramente em Eclipse ADT para o Android Studio, em relação ao problema que eu tive, fiquei bem puto durante a migração pois não manjava nada de Gradle nem de Maven, acabei investindo algum tempo estudando os 2 para entender o que estava acontecendo. Meu projeto vivia dando: UNEXPECTED TOP LEVEL EXCEPTION e problemas de importação cíclica com a Android Support V4.
Meu projeto atual tem relativamente poucas bibliotecas de apoio, uso estas 5: app.compat.V7, Support Lib V4,facebookSDK,ViewPagerIndicator e MixPanel.

Bem, comecei seguindo o tutorial de migração disponível no site do próprio AndroidDev Site , ele fala para no próprio eclipse utilizar a ferramenta de migração e selecionar o projeto desejado, nessa hora eu selecionei todos os meus projeto principal e todas as bibliotecas que estavam atreladas ao projeto.


Pelo que entendi, isto fez com que eu tivesse um problema de dependências cíclicas pois meu projeto utilizava a android support v4, o projeto do MixPannel, o do Facebook e o app.Compat.V7 também utilizavam, no eclipse este mesmo problema é conhecido como jar mismatch, tive frequentemente este erro UNEXPECTED TOP LEVEL EXCEPTION após corrigir os problemas de importação.

Para corrigir o UNEXPECTED TOP LEVEL EXCEPTION, eu apaguei todas as referências que tinha da biblioteca support v4 do android. Em seguida pelo android SDK manager fiz o download da ultima versão da support library v4 e do support repositor.



Terminados os downloads eu cliquei com o botão direito sobre o projeto  fui na opção open module;


Selecionei o projeto que depende da lib support v4


Cliquei em Dependencies


E lá no rodapé apertei no "+" para adicionar uma biblioteca de dependencia do próprio SDK


No fim selecionei a biblioteca support v4

E prontinho!

Para finalizar e acabar com o UNEXPECTED TOP LEVEL EXCEPTION eu adicionei no build.gradle da raiz do projeto:

configurations {
    all*.exclude group: 'com.android.support', module: 'support-v4'
}
**** FORA DO BUILDSCRIPT

Isto faz com que a support library v4 pare de ser exportada por outras dependências do projeto que não seja as bibliotecas importadas e seu projeto principal. Um workaround que achei no Stackoverflow.

Por enquanto é isso ai :)

Abraços!



0 comentários:

Postar um comentário

Tecnologia do Blogger.