Como posso usar JARs externos em um projeto Android?

326

Eu criei um projeto Android e adicionei um JAR externo (hessian-4.0.1.jar) ao meu projeto. Em seguida, adicionei o JAR ao caminho da construção e o marquei em Ordem e exportação.

Ordem e Exportação é ignorado, parece, e todas as classes do JAR externo estão ausentes no tempo de execução.

Existe um truque para incluir corretamente as classes necessárias de um JAR externo ao criar um aplicativo Android usando o plug-in Eclipse? Eu não quero usar formiga ou Maven.

AndroidSmoker74
fonte
1
como você já descobriu: isso é causado por dependências no hessian-4.0.1.jar. Se você deseja usar o Hessian com Android, use o Hessdroid ( code.google.com/p/hessdroid ). Não é muito ativo, mas funciona bem para mim, mesmo no Android 4.0.
precisa saber é o seguinte
1
Consulte também "NoClassDefFoundError para código em uma biblioteca Java no Android" para obter um problema comum ao usar jars externos. Solução simples .
Flow

Respostas:

443

Para Eclipse

Uma boa maneira de adicionar JARs externos ao seu projeto Android ou qualquer projeto Java é:

  1. Crie uma pasta chamadalibs na pasta raiz do seu projeto
  2. Copie seus arquivos JAR para a libspasta
  3. Agora clique com o botão direito do mouse no arquivo Jar e selecione Build Path> Add to Build Path , que criará uma pasta chamada 'Bibliotecas referenciadas' dentro do seu projeto

    Ao fazer isso, você não perderá as bibliotecas que estão sendo referenciadas no disco rígido sempre que transferir o projeto para outro computador.

Para Android Studio

  1. Se você estiver no Android View no Project Explorer, altere-o para Project view como abaixo

Imagem ausente

  1. Clique com o botão direito do mouse no módulo desejado ao qual você deseja adicionar a biblioteca externa, selecione Novo> Directroy e nomeie-o como ' libs '
  2. Agora copie o blah_blah.jar para a pasta ' libs '
  3. Clique com o botão direito do mouse em blah_blah.jar e selecione ' Adicionar como biblioteca .. '. Isso adicionará e entrará automaticamente no build.gradle como arquivos de compilação ('libs / blah_blah.jar') e sincronizará o gradle. E você terminou

Observação: se você estiver usando bibliotecas de terceiros, é melhor usar dependências transitivas em que o script Gradle baixa automaticamente o JAR e a dependência JAR quando o script gradle é executado.

Por exemplo: compile 'com.google.android.gms: play-services-ads: 9.4.0'

Leia mais sobre o Gradle Dependency Mangement

Vinayak Bevinakatti
fonte
49
Observe que ao usar versões recentes Eclipse / ADT os frascos externos têm de estar em uma pasta chamada libs(em vez de lib)
THelper
4
@ THelper - Obrigado! Você está correto, a pasta deve ter o nome "libs" e não "lib". Eu estava batendo minha cabeça com esse problema.
Camille Sévigny
7
Nas versões recentes do SDK, a etapa 3 (adicionar o JAR manualmente ao Caminho de Construção) é desnecessária. Mas se você tiver um IDE, como o Eclipse aberto no momento em que solta o arquivo, precisará fazer uma atualização do projeto (F5 e / ou atualização do menu de contexto no Package Explorer).
Jon Adams
4
Como é feito a partir da linha de comando? Que arquivo de configuração devo editar e como?
Kristian Spangsege 06/12/12
13
Essa abordagem está desatualizada desde o início de 2012. Basta adicionar o JAR a libs/. Não modifique manualmente o caminho da construção.
CommonsWare
127

Sim, você pode usar isso. Aqui está como:

  1. Seu Projeto -> clique com o botão direito do mouse -> Importar -> Sistema de Arquivos -> yourjar.jar
  2. Seu Projeto -> clique com o botão direito do mouse -> Propriedades -> Caminho de Construção Java -> Bibliotecas -> Incluir Jar -> yourjar.jar

este vídeo pode ser útil caso você esteja com alguns problemas.

MannyNS
fonte
5
Essa abordagem está desatualizada desde o início de 2012. Basta adicionar o JAR em libs /. Não modifique manualmente o caminho da construção.
CommonsWare
Eu tentei várias maneiras de adicionar o caminho de construção. Somente desta maneira eu posso corrigir a exceção Classe não encontrada após migrar um projeto para outro PC
Mickey
A PRIMEIRA solução está desatualizada e não funcionará tão bem.
Yousha Aleayoub
5

Atualmente, estou usando o SDK 20.0.3 e nenhuma das soluções anteriores funcionou para mim.

O motivo pelo qual o hessdroid funciona onde o hess falhou é porque os dois arquivos jar contêm java que é compilado para diferentes máquinas virtuais. Não é garantido que o código de bytes criado pelo compilador Java seja executado na máquina virtual Dalvik. Não é garantido que o código de bytes criado pelo compilador Android seja executado na máquina virtual Java.

No meu caso, eu tinha acesso ao código fonte e consegui criar um arquivo jar para Android usando o método que descrevi aqui: https://stackoverflow.com/a/13144382/545064

Danny Remington - OMS
fonte
5

Eu sei que o OP encerra sua pergunta com referência ao plug-in do Eclipse, mas cheguei aqui com uma pesquisa que não especificou o Eclipse. Então, aqui vai o Android Studio:

  1. Adicionar jararquivo ao diretório libs (como copiar / colar)
  2. Clique com o jarbotão direito do mouse no arquivo e selecione "Adicionar como biblioteca ..."
  3. clique em "Ok" na próxima caixa de diálogo ou renomeie se você escolher.

É isso aí!

Shanabus
fonte
4

Acontece que eu não pareci suficientemente bem no meu rastreamento de pilha, o problema não é que o JAR externo não esteja incluído.

O problema é que falta à plataforma Android javax.naming. * E muitos outros pacotes em que o JAR externo também possui dependências.

A adição de arquivos JAR externos e a configuração de Ordem e exportação no Eclipse funcionam conforme o esperado nos projetos Android.


fonte
3

Ir para o projeto atual

Clique com o botão direito-> Propriedades-> Caminho de Construção Java-> Adicionar Arquivos Jar às Bibliotecas -> Clique em OK

Em seguida, é adicionado ao arquivo de bibliotecas referenciadas no seu projeto atual.

kalyan G
fonte
1

A API Java do Android não suporta javax.naming. * E muitas outras coisas javax. *. Você precisa incluir as dependências como jarros separados.

Rodrigo
fonte
1

Se estiver usando o Android Studio, faça o seguinte (copiei e modifiquei a resposta @Vinayak Bs):

  1. Selecione a visualização Projeto na visualização lateral do projeto (em vez de Pacotes ou Android)
  2. Crie uma pasta chamada libs na pasta raiz do seu projeto
  3. Copie seus arquivos JAR para a pasta libs
  4. A vista lateral será atualizada e os arquivos JAR aparecerão no seu projeto
  5. Agora clique com o botão direito do mouse em cada arquivo JAR que deseja importar e selecione "Adicionar como biblioteca ...", que o incluirá em seu projeto
  6. Depois disso, tudo que você precisa fazer é referenciar as novas classes no seu código, por exemplo. import javax.mail.*
kumaheiyama
fonte
1

no estúdio android se estiver usando gradle

adicione isso ao build.gradle

compile fileTree(dir: 'libs', include: ['*.jar'])

e adicione o arquivo jar à pasta libs

g_vk
fonte
1

Se você estiver usando o sistema de construção de gradle , siga estas etapas:

  1. Coloque jararquivos dentro da respectiva libspasta do seu aplicativo Android. Geralmente você vai encontrá-lo em Project> app> libs. Se a libspasta estiver faltando, crie uma.

  2. adicione isso ao seu build.gradlearquivo app. (Não a seus Project's build.gradle)

    dependencies {
        compile fileTree(dir: 'libs', include: '*.jar')
        // other dependencies
    }

    Isso incluirá todos os seus jararquivos disponíveis na libspasta.

Se não quiser incluir todos os jararquivos, você poderá adicioná-lo individualmente.

compile fileTree(dir: 'libs', include: 'file.jar')

Rohit Arya
fonte
0

crie uma pasta (como lib) dentro do seu projeto, copie seu jar para essa pasta . agora vá para configurar o caminho de construção com o botão direito do mouse no projeto, lá no caminho de construção selecione

'add jar' navegue até a pasta que você criou e selecione o jar.

sharma_kunal
fonte
0

Copiar o arquivo .jar na pasta do projeto Android nem sempre é possível.
Especialmente se for uma saída de outro projeto no seu espaço de trabalho e ele for atualizado.

Para resolver isso, você precisará adicionar o jar como um arquivo vinculado ao seu projeto, em vez de importá-lo (que o copiará localmente).

Na interface do usuário, escolha:

Projeto -> Importar -> Sistema de Arquivos -> yourjar.jar -> (área Opções) Avançado -> Criar link na área de trabalho.

O link é salvo no arquivo .project :

<linkedResources>
    <link>
        <name>yourjar.jar</name>
        <type>1</type>
        <locationURI>PARENT-5-PROJECT_LOC/bin/android_ndk10d_armeabi-v7a/yourjar.jar</locationURI>
    </link>
</linkedResources>

PARENT-5-PROJECT_LOC significa relativo ao arquivo do projeto, 5 diretórios acima (../../../../../).

Em seguida, inclua-o nas bibliotecas:
Projeto -> Propriedades -> Caminho de Construção Java -> Bibliotecas -> Incluir Jar -> yourjar.jar

Na mesma janela, escolha a guia Ordem e exportação e marque seu jar para que ele seja adicionado ao apk.

Yochai Timmer
fonte