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.

malcooke
fonte
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.

malcooke
fonte
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.

Karthik Dheeraj
fonte
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.

user791129
fonte
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

Nilesh Pawar
fonte
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).

Alexandru Circus
fonte
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
3

Este bug é referenciado várias vezes aqui 27199 , 35786 , 36460 e 38052

Talvez votando neles, será consertado um dia ...

Laurent.B
fonte
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

CuriousChettai
fonte
+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.

jayesh jethava
fonte
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 ...

Md Sufi Khan
fonte
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

QAMAR
fonte
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
ibrahim saputra
fonte
1

Apenas reinicie seu eclipse. Resolve o meu problema

Manisha Patel
fonte
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.

Sebastian
fonte
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).

JRun
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.

Girish K Gupta
fonte
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").

William T. Mallard
fonte
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.

repkap11
fonte
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
HimalayanCoder
fonte