No eclipse, não é possível fazer referência a um projeto de biblioteca android em outro projeto android


104

Enquanto estava escrevendo esta questão, consegui resolvê-la, então repita aqui para o benefício de outras pessoas. Aqui está o problema inicial:

Eu criei um projeto de biblioteca muito simples que desejo fazer referência em outro projeto. Eu fiz isso anteriormente sem problemas, então não tenho certeza por que não está funcionando neste momento. Eu tenho:

  1. Sinalizado o projeto da biblioteca por meio das propriedades do projeto. O default.propertiesarquivo tem este conjunto:android.library=true

  2. Em meu outro projeto, adicionei referência ao meu projeto de biblioteca por meio das propriedades do projeto. O default.propertiesarquivo tem a referência adicionada conforme o esperado, ou sejaandroid.library.reference.1=K:/android_test_ws/applicationRegistrar

  3. A marca verde contra o projeto de biblioteca referenciado começa verde e depois muda para uma cruz vermelha.

Isso implica que deve haver algo errado / faltando no projeto da biblioteca, mas não sei o quê. Meu projeto de biblioteca nesta ocasião é MUITO mais simples do que o anterior que criei.


Esta solução ajudou no meu caso: stackoverflow.com/questions/9283040/… Espero que ajude alguém
Abeer Sul

Respostas:


160

OK. Aqui está a solução que encontrei quando estava procurando o arquivo default.properies do projeto de referência (não a biblioteca) em meu sistema de arquivos. Embora o projeto de referência estivesse no mesmo espaço de trabalho do eclipse que o projeto de biblioteca, os arquivos reais estavam em outro lugar no sistema de arquivos, ou seja, eles não estavam na mesma pasta pai do projeto de biblioteca. Assim que coloquei o projeto de referência na mesma pasta física do projeto da biblioteca, tudo correu bem.

Eu acho que isso deve ser algo a ver com o android usando formiga por baixo das tampas.

Editar: O nome do projeto precisa corresponder ao nome da pasta no sistema de arquivos. O que você está vendo em Propriedades do projeto-> Android-> Referência da biblioteca é um caminho relativo do sistema de arquivos.


3
Também quero acrescentar que links simbólicos não são adequados para isso. Eu tinha todos os meus projetos armazenados na mesma pasta que os outros em um local diferente (onde coloquei coisas que quero fazer backup) e, em seguida, um monte de links simbólicos dentro da minha pasta de espaço de trabalho para essas pastas. Então, eles estavam todos na mesma pasta que os outros em ambos os lugares, porém o uso de links simbólicos bagunçou tudo. Depois de carregar a pasta real como minha área de trabalho base, tudo ficou bem.
Zulaxia

7
+1 Para articular este HORRÍVEL comportamento do combo Eclipse / ADT. Apenas para sua informação, mesmo colocar os dois projetos na mesma pasta física não ajuda se essa pasta estiver em um compartilhamento Samba . Ugrrr ...
an00b

20
Às vezes, o Eclipse removerá a referência, reiniciará o eclipse e adicionará novamente, agora deve funcionar.
Warpzit

Este foi um problema para meus projetos pertencentes e localizados no mesmo espaço de trabalho. Importei o projeto no mesmo espaço de trabalho que a biblioteca e tudo funcionou bem. Obrigado pela resposta.
Jayshil Dave

Verifique se sua área de trabalho e biblioteca estão no mesmo local de pasta. Cometi o erro de baixar novamente o ADT e criei um projeto no espaço de trabalho C: \ usuários em vez do meu espaço de trabalho real. Desnecessário dizer, verifique novamente se seu projeto E sua biblioteca estão no mesmo diretório de trabalho!
Garbit de

11

Certifique-se de que ambos os projetos estejam presentes no mesmo espaço de trabalho. Para fazer isso, ao importar os projetos, certifique-se de que a caixa de seleção "copiar projeto para o espaço de trabalho" esteja marcada.


1
Como posso usar o mesmo projeto de biblioteca para outro projeto. Se eu fizer isso, mostrarei o símbolo da cruz vermelha. @Karthik
Shylendra Madda

10

o mesmo problema ocorrerá se seu projeto de biblioteca estiver em uma partição diferente do seu espaço de trabalho atual. Eu tenho o mesmo problema agora. Meu código-fonte git está em C: e eu apenas movo minha área de trabalho para D: e tudo começa a entrar em colapso.


4
Se os projetos principal e de biblioteca estiverem em unidades diferentes , parece que o Eclipse não pode resolver o caminho de Referência de absoluto para relativo e o Eclipse não está feliz com isso (a marca verde se transforma em uma cruz vermelha).
Pang

funcionou para mim também. Substituí o projeto referenciado na mesma unidade (H :) e agora está tudo bem
Tobia Zambon

4

A maneira mais simples de obter os caminhos dos caminhos da biblioteca corretos é usar a GUI do Eclipse para adicionar a biblioteca conforme mostrado na captura de tela a seguir e deixar o Eclipse cuidar de colocar os caminhos relativos corretos em project.properties. É uma configuração comum ter seus projetos de biblioteca hospedados em diretórios muito diferentes dos projetos principais que usam a biblioteca. Este método funcionará se o "projeto de biblioteca" e o projeto que o utiliza estiverem no mesmo "espaço de trabalho" do eclipse (eles "não precisam" estar na mesma pasta pai): insira a descrição da imagem aqui


4
O problema é porque a biblioteca e o projeto estão em unidades / partições diferentes ... veja as listas de erros acima. O seu está bom porque o caminho da sua biblioteca mostra caminhos relativos em vez de caminhos completos do DOS ...
kenyee

3

Certifique-se de que o projeto de biblioteca está marcado como "Is Library" - clique com o botão direito do mouse no projeto de biblioteca - propriedades - Android - marque a caixa de seleção "Is Library" - em project.properties do projeto de biblioteca, você deve ter uma nova entrada: "android .library = true. Agora adicione-o ao projeto que você deseja conforme descrito no post abaixo. (o post com imagem integrada - de Nilesh Pawar).


1
Isso funcionou muito bem para mim. A parte confusa é que acho que a localização dessa caixa de seleção 'É biblioteca'. Não é intuitivo que isso esteja realmente selecionando o destino da compilação de aplicativo / biblioteca atual e não uma opção de opção para as bibliotecas a serem incluídas.
EtienneSky


2

Mais uma observação sobre o mesmo assunto.

Para mim, os dois projetos estavam na mesma pasta pai e eram locais dentro da área de trabalho. Mesmo assim, o problema ainda estava acontecendo.

Editei o arquivo "project.properties" e coloquei o caminho absoluto (com barras '/' para separadores) do projeto da biblioteca. Salvei e fechou. Em seguida, foi para a caixa de diálogo de propriedades do projeto, removeu a biblioteca (que ainda estava mostrando o ícone de cruz, mas com o caminho do abdômen) e a adicionou de volta como de costume. Surpreendentemente, o problema foi resolvido e o projeto é compilado e executado.

Isso é realmente estranho e deve ser um bug do ADT. Estou usando o ADT versão 20.0.2


+1. Enfrentou esse problema ao trocar bibliotecas com os mesmos nomes. Parece eclipse (ou ADT) tentando fazer referência ao antigo e falha. A reinicialização do Eclipse ajuda. (Ubuntu 12.04, Eclipse Indigo, ADT 21.0.0)
Luten

2

quando o desenvolvedor fizer referência ao Facebook ou a qualquer outro projeto de biblioteca, em primeiro lugar limpe o projeto de eclipse-> projeto-> projeto limpo. que querem permitir o erro da cruz vermelha na tela de referência.


2

Para mim, eu apenas reinicio o eclipse e a biblioteca adicionada funciona bem.

Quero dizer, a primeira vez mostrando marcas vermelhas após adicionar o projeto de biblioteca. Embora o projeto principal do eclipse e o projeto da biblioteca estejam na mesma pasta do espaço de trabalho e nenhum arquivo de recursos esteja fora da pasta do projeto.

Portanto, você pode tentar reiniciar seu eclipse. Boa codificação ...


1

A solução alternativa para mim foi

  1. Crie um novo espaço de trabalho
  2. Importar projeto de biblioteca nesse espaço de trabalho
  3. Importar o projeto desejado nesse espaço de trabalho
  4. Ter o projeto e o projeto da biblioteca com a mesma versão do sistema operacional Android de destino
  5. Projeto de biblioteca de referência em meu projeto

resolveu meu problema


A criação de um novo espaço de trabalho também resolveu o problema. Você também precisa limpar os projetos.
Omer Cansizoglu

1

Tive o mesmo problema lá quando tentei mudar meu espaço de trabalho, então esta é minha solução:

  1. importar e copiar todos os dados do projeto, incluindo o projeto da biblioteca para o espaço de trabalho
  2. exclua a referência do projeto antigo clicando com o botão direito do mouse no projeto -> Propriedades -> Android -> Biblioteca e selecione a biblioteca corrompida (para que eu a chame) e escolha Remover
  3. limpe o projeto primeiro (para atualizar as propriedades do seu projeto)
  4. vá para Propriedades do projeto de biblioteca -> Android -> Biblioteca e verifique a biblioteca se ela não clicar em Aplicar e em OK
  5. se o projeto da biblioteca já estiver marcado, primeiro desmarque e, em seguida, limpe o projeto da biblioteca depois disso, execute a Etapa 4 novamente
  6. vá para o projeto em que você deseja que a biblioteca esteja, clique com o botão direito do mouse no projeto -> Propriedades -> Android -> Biblioteca, Adicionar e escolha o projeto da biblioteca (deve estar lá) e clique em Aplicar e em OK
  7. se ainda não aparecer, limpe o projeto mais uma vez e isso deve servir


0

Quando você der uma olhada no caminho de referência antes e depois, ele vem de, por exemplo, "C: / workspace / mylib" e vai para "../../mylib" quando copiado para o local correto, bastante interessante.


0

PARA SUA INFORMAÇÃO,

O que funcionou para mim foi excluir os projetos de 'biblioteca' (os projetos reais) do meu espaço de trabalho (sem excluir os arquivos) e, em seguida, reimportá-los usando o assistente (importar projeto android existente do código-fonte).


Também funcionou para mim. Acabei de remover e reimportar os projetos (como 'projeto eclipse existente')
Neromancer

0

Obrigado por postar a pergunta. Tive exatamente o mesmo problema ao integrar o Facebook ao meu aplicativo Android. Corrigi o problema movendo meu projeto de desenvolvimento para a mesma unidade do Windows em que o projeto de biblioteca estava localizado. De alguma forma, o Eclipse não é capaz de ler a localização do projeto de biblioteca adequadamente no arquivo default.properties se ele estiver em uma unidade diferente.


0

Semelhante à postagem de Sufi Khan, também resolvi esse problema com uma reinicialização. Meu caso era diferente porque, quando acessei Propriedades-> Android e adicionei a biblioteca, recebi uma linda marca de seleção verde. Quando fechei a caixa de diálogo, o Eclipse ainda estava mostrando erros de tipo classe não encontrada. Quando verifiquei as propriedades novamente, vi o X vermelho. Mas a solução do Sr. Kahn (exclua a lib inválida, reinicie o Eclipse, adicione a lib novamente) funcionou bem.

Estou usando a versão 0702 do pacote ADT (começa com "cluster", rima com "duck").


0

Segui a resposta aceita, mas também tive que garantir que meu arquivo "project.properties" estava legível.

Se o arquivo for somente leitura (verificado no controle de origem), o eclipse não o editará. Adicionar a referência da biblioteca será bem-sucedido, mas a alteração não será persistida após clicar em OK.

Se fechar a janela de preferências e reabrir novamente remover a biblioteca que você acabou de adicionar, esta pode ser a sua solução.


0

Caso seu projeto de biblioteca ainda não apareça, tente adicionar um sinalizador de biblioteca nas propriedades do projeto de biblioteca

Adicionar android.library = true

project.properties

# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system edit
# "ant.properties", and override values to adapt the script to your
# project structure.
#
# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

# Project target.
target=android-17
android.library=true
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.