ti-enxame.com

Adicionando uma biblioteca / JAR a um projeto Eclipse Android

Esta é uma questão de duas partes sobre como adicionar uma biblioteca de terceiros (JAR) a um projeto Android no Eclipse.

A primeira parte da questão é, quando tento adicionar um JAR (biblioteca) de terceiros ao meu projeto Android, eu primeiro obtenho o problema de

Erro ao analisar XML: prefixo não vinculado

porque estou tentando usar uma classe desse JAR (e preciso do prefixo de alguma forma definido). O que está acontecendo?

Segundo, (depois de corrigir isso - a resposta é dada abaixo), meu aplicativo não funciona no Android e descubro através do depurador (LogCat) que a classe que estou tentando consumir não existir.

Causado por: Java.lang.ClassNotFoundException: com.github.droidfu.widgets.WebImageView ...

Por que, quando eu não recebo nenhum erro de compilação ou linker no Eclipse, ele tem esse problema no emulador?

Essas duas perguntas são retóricas, pois vou respondê-las abaixo. Outros posts neste fórum chegam ao problema e em outros lugares há discussão, mas eu sinto que posso ser mais explicitamente útil para o próximo cara aparecer.

129
Russ Bateman

Agora, para o problema da classe ausente.

Eu sou um desenvolvedor de EE Eclipse Java e tenho o hábito de muitos anos de adicionar bibliotecas de terceiros através do mecanismo "User Library" em Build Path. Claro, existem pelo menos 3 maneiras de adicionar uma biblioteca de terceiros, a que eu uso é a mais elegante, na minha humilde opinião.

Isso não funcionará, no entanto, para o Android, cuja "JVM" da Dalvik não pode manipular uma classe compilada em Java comum, mas deve tê-la convertida em um formato especial. Isso não acontece quando você adiciona uma biblioteca da maneira que eu costumava fazer.

Em vez disso, siga as instruções (amplamente disponíveis) para importar a biblioteca de terceiros e, em seguida, inclua-as usando o caminho de compilação (que é conhecido pelo Eclipse para fins de compilação). Aqui está o passo a passo:

  1. Faça o download da biblioteca para o seu sistema de desenvolvimento do Host.
  2. Crie uma nova pasta, libs, no seu projeto Eclipse/Android.
  3. Clique com o botão direito em libs e escolha Import -> General -> File System, em seguida, Next, Browse no sistema de arquivos para localizar o diretório pai da biblioteca (ex: onde você fez o download).
  4. Clique em OK e, em seguida, clique no nome do diretório (não na caixa de seleção) no painel esquerdo e, em seguida, verifique o JAR relevante no painel direito. Isso coloca a biblioteca em seu projeto (fisicamente).
  5. Clique com o botão direito do mouse em seu projeto, escolha Construir Caminho -> Configurar Caminho de Construção, clique na guia Bibliotecas, em Adicionar JARs ..., navegue até seu novo JAR no diretório libs e inclua-o. (Este, aliás, é o momento em que seu novo JAR é convertido para uso no Android.)

NOTA

O passo 5 pode não ser necessário, se a lib já estiver incluída no seu caminho de compilação. Apenas certifique-se de que sua existência existe antes de adicioná-lo.

O que você fez aqui realiza duas coisas:

  1. Inclui um JAR convertido pela Dalvik no seu projeto Android.
  2. Torna as definições Java disponíveis para o Eclipse para localizar as classes de terceiros ao desenvolver (isto é, compilar) o código-fonte do seu projeto.
315
Russ Bateman

Certifique-se de que seus jars de terceiros estejam na pasta "libs" de seus projetos e eles serão colocados no .apk quando você empacotar seu aplicativo. Você pode ver erros de tempo de execução no dispositivo se algo no jar não é suportado, mas fora isso eu tive grande sucesso com isso.

20
Paul Gregoire

Configurando um projeto de biblioteca

Um projeto de biblioteca é um projeto padrão Android, portanto, você pode criar um novo da mesma maneira que faria com um novo projeto de aplicativo.

Ao criar o projeto da biblioteca, você pode selecionar qualquer nome de aplicativo, pacote e definir outros campos conforme necessário, conforme mostrado na figura 1.

Em seguida, defina as propriedades do projeto para indicar que é um projeto de biblioteca:

No Package Explorer, clique com o botão direito do mouse no projeto da biblioteca e selecione Propriedades. Na janela Propriedades, selecione o grupo de propriedades "Android" à esquerda e localize as propriedades da Biblioteca à direita. Marque a caixa de seleção "é Biblioteca" e clique em Aplicar. Clique em OK para fechar a janela Propriedades. O novo projeto agora está marcado como um projeto de biblioteca. Você pode começar a mover o código-fonte e os recursos para ele, conforme descrito nas seções abaixo.

5
koke

Se você estiver usando a versão 22 do ADT, precisará verificar as dependências Android e Android na guia order & Export no caminho de criação do projeto

4
ajaykoppisetty

Primeiro, o problema do prefixo ausente.

Se você consome algo em seu arquivo de layout que vem de um terceiro, talvez seja necessário consumir seu prefixo também, algo como "droidfu:", que ocorre em vários locais na construção XML abaixo:

<com.github.droidfu.widgets.WebImageView Android:id="@+id/webimage"
          Android:layout_width="75dip"
          Android:layout_height="75dip"
          Android:background="#CCC"
          droidfu:autoLoad="true"
          droidfu:imageUrl="http://www.Android.com/images/opensourceprojec.gif"
          droidfu:progressDrawable="..."
          />

Isso vem do JAR, mas você também precisará adicionar o novo "xmlns: droidfu"

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
      xmlns:droidfu="http://github.com/droidfu/schema"
      ...>

ou você recebe o erro de prefixo não acoplado. Para mim, foi uma falha ao copiar e colar todo o exemplo fornecido nas páginas da biblioteca de terceiros.

2
Russ Bateman

Erro ao analisar XML: prefixo não vinculado

O recurso '/ playteddy/res' não existe.

Eu tenho os dois erros acima e finalmente resolvi isso.

Clique com o botão direito do mouse em seu projeto -> propriedades -> Java caminho de construção -> googleadmobadsdk (selecione e coloque em cima), então você executa e resolve o problema. Está resolvido o meu erro de execução.

1
sujan

Vá para o caminho de construção no Eclipse, em seguida, clique em ordem e exportação, em seguida, verifique a biblioteca/jar e, em seguida, clique no botão para cima para movê-lo para o topo da lista para compilá-lo primeiro.

0
Sam Adamsh

Coloque a fonte em uma pasta fora do seu espaço de trabalho. Clique com o botão direito do mouse no projeto Explorer e selecione "Importar ..."

Importe o projeto em sua área de trabalho como um projeto Android. Tente criá-lo e verifique se ele está marcado como um projeto de biblioteca. Além disso, verifique se ele é criado com o suporte da API do Google. Caso contrário, você receberá erros de compilação.

Em seguida, clique com o botão direito do mouse no seu projeto principal no projeto Explorer. Selecione propriedades e, em seguida, selecione Android à esquerda. Na seção de biblioteca abaixo, clique em "Adicionar".

A biblioteca de balões do mapview agora deve estar disponível para adicionar ao seu projeto.

0
Leander